diff --git a/.gitignore b/.gitignore
index 3035cda2..08968a1d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,4 @@
/chromispos.xml.backup
/src-pos.zip
/src-beans/uk/chromis/fixedimages/Thumbs.db
+chromispos.jar
diff --git a/Administration.bat b/Administration.bat
new file mode 100644
index 00000000..24607c9c
--- /dev/null
+++ b/Administration.bat
@@ -0,0 +1,25 @@
+@echo off
+
+set DIRNAME=%~dp0
+set CP="%DIRNAME%chromispos.jar"
+set CP=%CP%;"%DIRNAME%changeiconset.jar"
+set CP=%CP%;"%DIRNAME%locales/"
+set CP=%CP%;"%DIRNAME%locales/Albanian"
+set CP=%CP%;"%DIRNAME%locales/American"
+set CP=%CP%;"%DIRNAME%locales/Arabic"
+set CP=%CP%;"%DIRNAME%locales/Argentinian"
+set CP=%CP%;"%DIRNAME%locales/Brazilian"
+set CP=%CP%;"%DIRNAME%locales/Croatian"
+set CP=%CP%;"%DIRNAME%locales/Dutch"
+set CP=%CP%;"%DIRNAME%locales/English"
+set CP=%CP%;"%DIRNAME%locales/Estonian"
+set CP=%CP%;"%DIRNAME%locales/French"
+set CP=%CP%;"%DIRNAME%locales/German"
+set CP=%CP%;"%DIRNAME%locales/Italian"
+set CP=%CP%;"%DIRNAME%locales/Mexican"
+set CP=%CP%;"%DIRNAME%locales/Portuguese"
+set CP=%CP%;"%DIRNAME%locales/Spanish"
+set CP=%CP%;"%DIRNAME%reports/"
+
+javaw -cp %CP% -Djava.library.path="%DIRNAME%lib/Windows/i368-mingw32" -Ddirname.path="%DIRNAME%./" changeiconset.changeiconset %1
+start javaw -cp %CP% -Djava.library.path="%DIRNAME%lib/Windows/i368-mingw32" -Ddirname.path="%DIRNAME%./" -splash:chromis_splash.png uk.chromis.pos.forms.StartAdmin %11
\ No newline at end of file
diff --git a/Console-start.bat b/Console-start.bat
index b9071f97..97841f0c 100644
--- a/Console-start.bat
+++ b/Console-start.bat
@@ -1,54 +1,26 @@
@echo off
-REM Chromis POS - The New Face of Open Source POS
-REM Copyright (c) 2015
-REM http://www.chromis.co.uk
-REM
-REM This file is part of Chromis POS
-REM
-REM Chromis POS is free software: you can redistribute it and/or modify
-REM it under the terms of the GNU General Public License as published by
-REM the Free Software Foundation, either version 3 of the License, or
-REM (at your option) any later version.
-REM
-REM Chromis POS is distributed in the hope that it will be useful,
-REM but WITHOUT ANY WARRANTY; without even the implied warranty of
-REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-REM GNU General Public License for more details.
-REM
-REM You should have received a copy of the GNU General Public License
-REM along with Chromis POS. If not, see
-REM
+
set DIRNAME=%~dp0
set CP="%DIRNAME%chromispos.jar"
-set CP=%CP%;"%DIRNAME%lib/jasperreports-4.5.1.jar"
-set CP=%CP%;"%DIRNAME%lib/jcommon-1.0.15.jar"
-set CP=%CP%;"%DIRNAME%lib/jfreechart-1.0.12.jar"
-set CP=%CP%;"%DIRNAME%lib/jdt-compiler-3.1.1.jar"
-set CP=%CP%;"%DIRNAME%lib/commons-beanutils-1.8.3.jar"
-set CP=%CP%;"%DIRNAME%lib/commons-digester-2.1.jar"
-set CP=%CP%;"%DIRNAME%lib/iText-2.1.7.jar"
-set CP=%CP%;"%DIRNAME%lib/poi-3.8-20120326.jar"
-set CP=%CP%;"%DIRNAME%lib/barcode4j-2.0.jar"
-set CP=%CP%;"%DIRNAME%lib/commons-codec-1.4.jar"
-set CP=%CP%;"%DIRNAME%lib/velocity-1.7-dep.jar"
-set CP=%CP%;"%DIRNAME%lib/oro-2.0.8.jar"
-set CP=%CP%;"%DIRNAME%lib/commons-collections-3.2.1.jar"
-set CP=%CP%;"%DIRNAME%lib/commons-lang-2.4.jar"
-set CP=%CP%;"%DIRNAME%lib/bsh-core-2.0b4.jar"
-set CP=%CP%;"%DIRNAME%lib/RXTXcomm.jar"
-set CP=%CP%;"%DIRNAME%lib/jpos1121.jar"
-set CP=%CP%;"%DIRNAME%lib/swingx-all-1.6.4.jar"
-set CP=%CP%;"%DIRNAME%lib/substance.jar"
-set CP=%CP%;"%DIRNAME%lib/substance-swingx.jar"
-set CP=%CP%;"%DIRNAME%lib/substance-extras.jar"
-
-REM Apache Axis SOAP libraries.
-set CP=%CP%;"%DIRNAME%lib/axis.jar"
-set CP=%CP%;"%DIRNAME%lib/jaxrpc.jar"
-set CP=%CP%;"%DIRNAME%lib/saaj.jar"
-set CP=%CP%;"%DIRNAME%lib/wsdl4j-1.5.1.jar"
-set CP=%CP%;"%DIRNAME%lib/commons-discovery-0.4.jar"
-set CP=%CP%;"%DIRNAME%lib/commons-logging-1.1.jar"
+set CP=%CP%;"%DIRNAME%changeiconset.jar"
set CP=%CP%;"%DIRNAME%locales/"
+set CP=%CP%;"%DIRNAME%locales/Albanian"
+set CP=%CP%;"%DIRNAME%locales/American"
+set CP=%CP%;"%DIRNAME%locales/Arabic"
+set CP=%CP%;"%DIRNAME%locales/Argentinian"
+set CP=%CP%;"%DIRNAME%locales/Brazilian"
+set CP=%CP%;"%DIRNAME%locales/Croatian"
+set CP=%CP%;"%DIRNAME%locales/Dutch"
+set CP=%CP%;"%DIRNAME%locales/English"
+set CP=%CP%;"%DIRNAME%locales/Estonian"
+set CP=%CP%;"%DIRNAME%locales/French"
+set CP=%CP%;"%DIRNAME%locales/German"
+set CP=%CP%;"%DIRNAME%locales/Italian"
+set CP=%CP%;"%DIRNAME%locales/Mexican"
+set CP=%CP%;"%DIRNAME%locales/Portuguese"
+set CP=%CP%;"%DIRNAME%locales/Spanish"
set CP=%CP%;"%DIRNAME%reports/"
+
+java -cp %CP% -Djava.library.path="%DIRNAME%lib/Windows/i368-mingw32" -Ddirname.path="%DIRNAME%./" changeiconset.changeiconset %1
+
start java -cp %CP% -Djava.library.path="%DIRNAME%lib/Windows/i368-mingw32" -Ddirname.path="%DIRNAME%./" -splash:chromis_splash.png uk.chromis.pos.forms.StartPOS %1
diff --git a/CreateClean.bat b/CreateClean.bat
new file mode 100644
index 00000000..827a4f93
--- /dev/null
+++ b/CreateClean.bat
@@ -0,0 +1,22 @@
+@echo off
+
+set DIRNAME=%~dp0
+set CP="%DIRNAME%chromispos.jar"
+set CP=%CP%;"%DIRNAME%locales/"
+set CP=%CP%;"%DIRNAME%locales/Albanian"
+set CP=%CP%;"%DIRNAME%locales/American"
+set CP=%CP%;"%DIRNAME%locales/Arabic"
+set CP=%CP%;"%DIRNAME%locales/Argentinian"
+set CP=%CP%;"%DIRNAME%locales/Brazilian"
+set CP=%CP%;"%DIRNAME%locales/Croatian"
+set CP=%CP%;"%DIRNAME%locales/Dutch"
+set CP=%CP%;"%DIRNAME%locales/English"
+set CP=%CP%;"%DIRNAME%locales/Estonian"
+set CP=%CP%;"%DIRNAME%locales/French"
+set CP=%CP%;"%DIRNAME%locales/German"
+set CP=%CP%;"%DIRNAME%locales/Italian"
+set CP=%CP%;"%DIRNAME%locales/Mexican"
+set CP=%CP%;"%DIRNAME%locales/Portuguese"
+set CP=%CP%;"%DIRNAME%locales/Spanish"
+
+start java -cp %CP% -Djava.library.path="%DIRNAME%lib/Windows/i368-mingw32" -Ddirname.path="%DIRNAME%./" uk.chromis.pos.cleandb.JFrmCreateClean %1
diff --git a/CreateClean.command b/CreateClean.command
new file mode 100644
index 00000000..c603c4ed
--- /dev/null
+++ b/CreateClean.command
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+DIRNAME=`dirname $0`
+CP=$DIRNAME/chromispos.jar
+CP=$CP:$DIRNAME/lib/
+CP=$CP:$DIRNAME/locales/
+CP=$CP:$DIRNAME/locales/Albanian
+CP=$CP:$DIRNAME/reports/American
+CP=$CP:$DIRNAME/locales/Arabic
+CP=$CP:$DIRNAME/locales/Argentinian
+CP=$CP:$DIRNAME/locales/Brazilian
+CP=$CP:$DIRNAME/locales/Croatian
+CP=$CP:$DIRNAME/locales/Dutch
+CP=$CP:$DIRNAME/locales/English
+CP=$CP:$DIRNAME/locales/Estonian
+CP=$CP:$DIRNAME/locales/French
+CP=$CP:$DIRNAME/locales/German
+CP=$CP:$DIRNAME/locales/Italian
+CP=$CP:$DIRNAME/locales/Mexican
+CP=$CP:$DIRNAME/locales/Portuguese
+CP=$CP:$DIRNAME/locales/Spanish
+CP=$CP:$DIRNAME/reports/
+
+java -cp $CP -Djava.library.path=$DIRNAME/lib/Linux -Ddirname.path="$DIRNAME" uk.chromis.pos.cleandb.JFrmCreateClean $1
\ No newline at end of file
diff --git a/CreateClean.sh b/CreateClean.sh
new file mode 100644
index 00000000..e104120f
--- /dev/null
+++ b/CreateClean.sh
@@ -0,0 +1,41 @@
+#!/bin/sh
+
+
+DIRNAME=`dirname $0`
+CP=$DIRNAME/chromispos.jar
+CP=$CP:$DIRNAME/reports/
+CP=$CP:$DIRNAME/locales/
+CP=$CP:$DIRNAME/locales/Albanian
+CP=$CP:$DIRNAME/reports/American
+CP=$CP:$DIRNAME/locales/Arabic
+CP=$CP:$DIRNAME/locales/Argentinian
+CP=$CP:$DIRNAME/locales/Brazilian
+CP=$CP:$DIRNAME/locales/Croatian
+CP=$CP:$DIRNAME/locales/Dutch
+CP=$CP:$DIRNAME/locales/English
+CP=$CP:$DIRNAME/locales/Estonian
+CP=$CP:$DIRNAME/locales/French
+CP=$CP:$DIRNAME/locales/German
+CP=$CP:$DIRNAME/locales/Italian
+CP=$CP:$DIRNAME/locales/Mexican
+CP=$CP:$DIRNAME/locales/Portuguese
+CP=$CP:$DIRNAME/locales/Spanish
+
+# Select the library folder
+case "`uname -s`" in
+ Linux)
+ case "`uname -m`" in
+ i686) LIBRARYPATH=/lib/Linux/i686-unknown-linux-gnu;;
+ ia64) LIBRARYPATH=/lib/Linux/ia64-unknown-linux-gnu;;
+ x86_64|amd64) LIBRARYPATH=/lib/Linux/x86_64-unknown-linux-gnu;;
+ esac;;
+ SunOS)
+ case "`uname -m`" in
+ sparc32) LIBRARYPATH=/Solaris/sparc-solaris/sparc32-sun-solaris2.8;;
+ sparc64) LIBRARYPATH=/Solaris/sparc-solaris/sparc64-sun-solaris2.8;;
+ esac;;
+Darwin) LIBRARYPATH=/lib/Mac_OS_X;;
+CYGWIN*|MINGW32*) LIBRARYPATH=/lib/Windows/i368-mingw32;;
+esacr
+
+java -cp $CP -Djava.library.path=$DIRNAME/lib/Linux -Ddirname.path="$DIRNAME" uk.chromis.pos.cleandb.JFrmCreateClean $1
\ No newline at end of file
diff --git a/Icon sets/black/images.jar b/Icon sets/black/images.jar
index 6df28c28..2153d443 100644
Binary files a/Icon sets/black/images.jar and b/Icon sets/black/images.jar differ
diff --git a/Icon sets/blue/images.jar b/Icon sets/blue/images.jar
new file mode 100644
index 00000000..24042685
Binary files /dev/null and b/Icon sets/blue/images.jar differ
diff --git a/Icon sets/green/images.jar b/Icon sets/green/images.jar
new file mode 100644
index 00000000..4d6fabf7
Binary files /dev/null and b/Icon sets/green/images.jar differ
diff --git a/Icon sets/orange/images.jar b/Icon sets/orange/images.jar
new file mode 100644
index 00000000..9e2edd97
Binary files /dev/null and b/Icon sets/orange/images.jar differ
diff --git a/Icon sets/red/images.jar b/Icon sets/red/images.jar
index 7994200d..d1479c38 100644
Binary files a/Icon sets/red/images.jar and b/Icon sets/red/images.jar differ
diff --git a/Icon sets/royalblue/images.jar b/Icon sets/royalblue/images.jar
index 101bbd59..1fcdfd77 100644
Binary files a/Icon sets/royalblue/images.jar and b/Icon sets/royalblue/images.jar differ
diff --git a/Icon sets/royalblue/images.zip b/Icon sets/royalblue/images.zip
deleted file mode 100644
index 7f461022..00000000
Binary files a/Icon sets/royalblue/images.zip and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/1downarrow.png b/Icon sets/royalblue/uk/chromis/images/1downarrow.png
deleted file mode 100644
index d7deddaf..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/1downarrow.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/1leftarrow.png b/Icon sets/royalblue/uk/chromis/images/1leftarrow.png
deleted file mode 100644
index 3c280fea..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/1leftarrow.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/1rightarrow.png b/Icon sets/royalblue/uk/chromis/images/1rightarrow.png
deleted file mode 100644
index d70342a7..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/1rightarrow.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/1uparrow.png b/Icon sets/royalblue/uk/chromis/images/1uparrow.png
deleted file mode 100644
index 4ddabcaf..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/1uparrow.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/2downarrow.png b/Icon sets/royalblue/uk/chromis/images/2downarrow.png
deleted file mode 100644
index 00cdd283..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/2downarrow.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/2leftarrow.png b/Icon sets/royalblue/uk/chromis/images/2leftarrow.png
deleted file mode 100644
index 4e5f03fb..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/2leftarrow.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/2rightarrow.png b/Icon sets/royalblue/uk/chromis/images/2rightarrow.png
deleted file mode 100644
index 71370922..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/2rightarrow.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/2uparrow.png b/Icon sets/royalblue/uk/chromis/images/2uparrow.png
deleted file mode 100644
index 0674cd61..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/2uparrow.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/ColourPick.png b/Icon sets/royalblue/uk/chromis/images/ColourPick.png
deleted file mode 100644
index 84d8cf7d..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/ColourPick.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/ark2.png b/Icon sets/royalblue/uk/chromis/images/ark2.png
deleted file mode 100644
index 183c23a1..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/ark2.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/attributes.png b/Icon sets/royalblue/uk/chromis/images/attributes.png
deleted file mode 100644
index df2af5c8..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/attributes.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/auxiliary.png b/Icon sets/royalblue/uk/chromis/images/auxiliary.png
deleted file mode 100644
index 0abb3422..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/auxiliary.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/bank.png b/Icon sets/royalblue/uk/chromis/images/bank.png
deleted file mode 100644
index 247621cc..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/bank.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/barcode.png b/Icon sets/royalblue/uk/chromis/images/barcode.png
deleted file mode 100644
index 8d76ccfd..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/barcode.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/bookmark.png b/Icon sets/royalblue/uk/chromis/images/bookmark.png
deleted file mode 100644
index df3d0ff0..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/bookmark.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btn0.png b/Icon sets/royalblue/uk/chromis/images/btn0.png
deleted file mode 100644
index 5295e57f..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btn0.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btn00.png b/Icon sets/royalblue/uk/chromis/images/btn00.png
deleted file mode 100644
index 85320de0..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btn00.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btn1.png b/Icon sets/royalblue/uk/chromis/images/btn1.png
deleted file mode 100644
index 3f541343..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btn1.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btn2.png b/Icon sets/royalblue/uk/chromis/images/btn2.png
deleted file mode 100644
index 7c1d98e3..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btn2.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btn2a.png b/Icon sets/royalblue/uk/chromis/images/btn2a.png
deleted file mode 100644
index 9146c0b1..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btn2a.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btn3.png b/Icon sets/royalblue/uk/chromis/images/btn3.png
deleted file mode 100644
index 293b2960..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btn3.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btn3a.png b/Icon sets/royalblue/uk/chromis/images/btn3a.png
deleted file mode 100644
index 9e98c2f6..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btn3a.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btn4.png b/Icon sets/royalblue/uk/chromis/images/btn4.png
deleted file mode 100644
index 0d537718..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btn4.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btn4a.png b/Icon sets/royalblue/uk/chromis/images/btn4a.png
deleted file mode 100644
index 14852145..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btn4a.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btn5.png b/Icon sets/royalblue/uk/chromis/images/btn5.png
deleted file mode 100644
index cd7b06b4..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btn5.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btn5a.png b/Icon sets/royalblue/uk/chromis/images/btn5a.png
deleted file mode 100644
index 33182e4e..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btn5a.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btn6.png b/Icon sets/royalblue/uk/chromis/images/btn6.png
deleted file mode 100644
index 1d4d0374..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btn6.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btn6a.png b/Icon sets/royalblue/uk/chromis/images/btn6a.png
deleted file mode 100644
index 60aafcdc..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btn6a.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btn7.png b/Icon sets/royalblue/uk/chromis/images/btn7.png
deleted file mode 100644
index 30911ceb..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btn7.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btn7a.png b/Icon sets/royalblue/uk/chromis/images/btn7a.png
deleted file mode 100644
index ea49e419..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btn7a.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btn8.png b/Icon sets/royalblue/uk/chromis/images/btn8.png
deleted file mode 100644
index 7c32c9ac..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btn8.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btn8a.png b/Icon sets/royalblue/uk/chromis/images/btn8a.png
deleted file mode 100644
index 8a8d4275..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btn8a.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btn9.png b/Icon sets/royalblue/uk/chromis/images/btn9.png
deleted file mode 100644
index f39ccf71..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btn9.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btn9a.png b/Icon sets/royalblue/uk/chromis/images/btn9a.png
deleted file mode 100644
index f19dd58e..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btn9a.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btnback.png b/Icon sets/royalblue/uk/chromis/images/btnback.png
deleted file mode 100644
index 9793e1a1..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btnback.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btnce.png b/Icon sets/royalblue/uk/chromis/images/btnce.png
deleted file mode 100644
index aab94e08..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btnce.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btndiv.png b/Icon sets/royalblue/uk/chromis/images/btndiv.png
deleted file mode 100644
index fee01486..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btndiv.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btndot.png b/Icon sets/royalblue/uk/chromis/images/btndot.png
deleted file mode 100644
index fcf65b4e..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btndot.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btnequals.png b/Icon sets/royalblue/uk/chromis/images/btnequals.png
deleted file mode 100644
index 976d5bdd..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btnequals.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btnminus.png b/Icon sets/royalblue/uk/chromis/images/btnminus.png
deleted file mode 100644
index f2cb8048..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btnminus.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btnmult.png b/Icon sets/royalblue/uk/chromis/images/btnmult.png
deleted file mode 100644
index 5ced3d58..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btnmult.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/btnplus.png b/Icon sets/royalblue/uk/chromis/images/btnplus.png
deleted file mode 100644
index 8b718405..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/btnplus.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/calculator.png b/Icon sets/royalblue/uk/chromis/images/calculator.png
deleted file mode 100644
index 9da5552c..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/calculator.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/camera.png b/Icon sets/royalblue/uk/chromis/images/camera.png
deleted file mode 100644
index 90c0b335..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/camera.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/cancel.png b/Icon sets/royalblue/uk/chromis/images/cancel.png
deleted file mode 100644
index cdf57894..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/cancel.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/cash.png b/Icon sets/royalblue/uk/chromis/images/cash.png
deleted file mode 100644
index 63a4b0b0..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/cash.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/cashdrawer.png b/Icon sets/royalblue/uk/chromis/images/cashdrawer.png
deleted file mode 100644
index 0b10fba2..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/cashdrawer.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/category.png b/Icon sets/royalblue/uk/chromis/images/category.png
deleted file mode 100644
index 8d2a469b..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/category.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/ccard.png b/Icon sets/royalblue/uk/chromis/images/ccard.png
deleted file mode 100644
index e67a5bc3..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/ccard.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/chart.png b/Icon sets/royalblue/uk/chromis/images/chart.png
deleted file mode 100644
index d76c9a60..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/chart.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/cheque.png b/Icon sets/royalblue/uk/chromis/images/cheque.png
deleted file mode 100644
index c5f6a3c6..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/cheque.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/coffee.png b/Icon sets/royalblue/uk/chromis/images/coffee.png
deleted file mode 100644
index de6515d0..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/coffee.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/configuration.png b/Icon sets/royalblue/uk/chromis/images/configuration.png
deleted file mode 100644
index e09be9e2..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/configuration.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/customer.png b/Icon sets/royalblue/uk/chromis/images/customer.png
deleted file mode 100644
index 8e6914b6..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/customer.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/customer_add_sml.png b/Icon sets/royalblue/uk/chromis/images/customer_add_sml.png
deleted file mode 100644
index 4e1878a5..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/customer_add_sml.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/customer_sml.png b/Icon sets/royalblue/uk/chromis/images/customer_sml.png
deleted file mode 100644
index 0c73f899..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/customer_sml.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/customerpay.png b/Icon sets/royalblue/uk/chromis/images/customerpay.png
deleted file mode 100644
index ca773b3f..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/customerpay.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/database.png b/Icon sets/royalblue/uk/chromis/images/database.png
deleted file mode 100644
index 0ebe48aa..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/database.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/date.png b/Icon sets/royalblue/uk/chromis/images/date.png
deleted file mode 100644
index c97ac827..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/date.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/display.png b/Icon sets/royalblue/uk/chromis/images/display.png
deleted file mode 100644
index 8ef8f7e1..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/display.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/edit.png b/Icon sets/royalblue/uk/chromis/images/edit.png
deleted file mode 100644
index 90c0bf80..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/edit.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/edit_group.png b/Icon sets/royalblue/uk/chromis/images/edit_group.png
deleted file mode 100644
index 292a2030..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/edit_group.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/edit_group_sm.png b/Icon sets/royalblue/uk/chromis/images/edit_group_sm.png
deleted file mode 100644
index a01ec1bc..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/edit_group_sm.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/editdelete.png b/Icon sets/royalblue/uk/chromis/images/editdelete.png
deleted file mode 100644
index c1a023d3..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/editdelete.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/editnew.png b/Icon sets/royalblue/uk/chromis/images/editnew.png
deleted file mode 100644
index f37b83cc..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/editnew.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/empty.png b/Icon sets/royalblue/uk/chromis/images/empty.png
deleted file mode 100644
index 3c076d6d..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/empty.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/encrypted.png b/Icon sets/royalblue/uk/chromis/images/encrypted.png
deleted file mode 100644
index 2d4e79ad..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/encrypted.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/exit.png b/Icon sets/royalblue/uk/chromis/images/exit.png
deleted file mode 100644
index 1c7d8fb0..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/exit.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/fileclose.png b/Icon sets/royalblue/uk/chromis/images/fileclose.png
deleted file mode 100644
index 75159b91..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/fileclose.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/fileopen.png b/Icon sets/royalblue/uk/chromis/images/fileopen.png
deleted file mode 100644
index f3239381..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/fileopen.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/filesave.png b/Icon sets/royalblue/uk/chromis/images/filesave.png
deleted file mode 100644
index 8e66de1a..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/filesave.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/floors.png b/Icon sets/royalblue/uk/chromis/images/floors.png
deleted file mode 100644
index 83efc168..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/floors.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/gohome.png b/Icon sets/royalblue/uk/chromis/images/gohome.png
deleted file mode 100644
index a61e2feb..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/gohome.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/heart.png b/Icon sets/royalblue/uk/chromis/images/heart.png
deleted file mode 100644
index fee6c7b4..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/heart.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/img.discount.png b/Icon sets/royalblue/uk/chromis/images/img.discount.png
deleted file mode 100644
index 194cc1ad..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/img.discount.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/import.png b/Icon sets/royalblue/uk/chromis/images/import.png
deleted file mode 100644
index 88b4cdbe..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/import.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/inbox.png b/Icon sets/royalblue/uk/chromis/images/inbox.png
deleted file mode 100644
index 8076c8bb..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/inbox.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/kit_print.png b/Icon sets/royalblue/uk/chromis/images/kit_print.png
deleted file mode 100644
index fa4738bb..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/kit_print.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/leaves.png b/Icon sets/royalblue/uk/chromis/images/leaves.png
deleted file mode 100644
index df83f628..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/leaves.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/location.png b/Icon sets/royalblue/uk/chromis/images/location.png
deleted file mode 100644
index 936b2fac..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/location.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/logout.png b/Icon sets/royalblue/uk/chromis/images/logout.png
deleted file mode 100644
index a2fafde4..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/logout.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/maintain.png b/Icon sets/royalblue/uk/chromis/images/maintain.png
deleted file mode 100644
index 7cec3a85..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/maintain.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/menu-left.png b/Icon sets/royalblue/uk/chromis/images/menu-left.png
deleted file mode 100644
index 779fce53..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/menu-left.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/menu-right.png b/Icon sets/royalblue/uk/chromis/images/menu-right.png
deleted file mode 100644
index bb880f40..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/menu-right.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/mime.png b/Icon sets/royalblue/uk/chromis/images/mime.png
deleted file mode 100644
index 71018389..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/mime.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/mime2.png b/Icon sets/royalblue/uk/chromis/images/mime2.png
deleted file mode 100644
index 91bfa336..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/mime2.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/mime3.png b/Icon sets/royalblue/uk/chromis/images/mime3.png
deleted file mode 100644
index f8802f0a..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/mime3.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/movetable.png b/Icon sets/royalblue/uk/chromis/images/movetable.png
deleted file mode 100644
index 3d88c135..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/movetable.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/no_photo.png b/Icon sets/royalblue/uk/chromis/images/no_photo.png
deleted file mode 100644
index 7d074843..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/no_photo.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/notes.png b/Icon sets/royalblue/uk/chromis/images/notes.png
deleted file mode 100644
index 8d4020ff..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/notes.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/ok.png b/Icon sets/royalblue/uk/chromis/images/ok.png
deleted file mode 100644
index 668aba32..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/ok.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/package.png b/Icon sets/royalblue/uk/chromis/images/package.png
deleted file mode 100644
index 53c018e5..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/package.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/package_big.png b/Icon sets/royalblue/uk/chromis/images/package_big.png
deleted file mode 100644
index 2e29bb0b..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/package_big.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/password.png b/Icon sets/royalblue/uk/chromis/images/password.png
deleted file mode 100644
index 2327cf78..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/password.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/pay.png b/Icon sets/royalblue/uk/chromis/images/pay.png
deleted file mode 100644
index 23362443..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/pay.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/payments.png b/Icon sets/royalblue/uk/chromis/images/payments.png
deleted file mode 100644
index cbd64160..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/payments.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/plugin.png b/Icon sets/royalblue/uk/chromis/images/plugin.png
deleted file mode 100644
index 714d2d7e..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/plugin.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/printer.png b/Icon sets/royalblue/uk/chromis/images/printer.png
deleted file mode 100644
index 056c3577..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/printer.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/printer24.png b/Icon sets/royalblue/uk/chromis/images/printer24.png
deleted file mode 100644
index 0821b5ac..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/printer24.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/printer24_off.png b/Icon sets/royalblue/uk/chromis/images/printer24_off.png
deleted file mode 100644
index bb7de6a6..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/printer24_off.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/printer24_on.png b/Icon sets/royalblue/uk/chromis/images/printer24_on.png
deleted file mode 100644
index a3ef82ff..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/printer24_on.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/products.png b/Icon sets/royalblue/uk/chromis/images/products.png
deleted file mode 100644
index 021a7e13..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/products.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/products24.png b/Icon sets/royalblue/uk/chromis/images/products24.png
deleted file mode 100644
index fffd3370..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/products24.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/receive.png b/Icon sets/royalblue/uk/chromis/images/receive.png
deleted file mode 100644
index a2f9538f..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/receive.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/refundit.png b/Icon sets/royalblue/uk/chromis/images/refundit.png
deleted file mode 100644
index 6955d575..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/refundit.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/reload.png b/Icon sets/royalblue/uk/chromis/images/reload.png
deleted file mode 100644
index cec1990f..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/reload.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/reports.png b/Icon sets/royalblue/uk/chromis/images/reports.png
deleted file mode 100644
index 2c866544..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/reports.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/reprint.png b/Icon sets/royalblue/uk/chromis/images/reprint.png
deleted file mode 100644
index c1daaa32..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/reprint.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/reprint24.png b/Icon sets/royalblue/uk/chromis/images/reprint24.png
deleted file mode 100644
index 6f0487ee..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/reprint24.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/resources.png b/Icon sets/royalblue/uk/chromis/images/resources.png
deleted file mode 100644
index faeb65cc..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/resources.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/restaurant_floor.png b/Icon sets/royalblue/uk/chromis/images/restaurant_floor.png
deleted file mode 100644
index 9b3a8828..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/restaurant_floor.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/restaurant_floor_sml.png b/Icon sets/royalblue/uk/chromis/images/restaurant_floor_sml.png
deleted file mode 100644
index 69a9fe45..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/restaurant_floor_sml.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/roles.png b/Icon sets/royalblue/uk/chromis/images/roles.png
deleted file mode 100644
index 089756d4..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/roles.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/run_script.png b/Icon sets/royalblue/uk/chromis/images/run_script.png
deleted file mode 100644
index b1104d53..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/run_script.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/sale.png b/Icon sets/royalblue/uk/chromis/images/sale.png
deleted file mode 100644
index 2d26359d..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/sale.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/sale_delete.png b/Icon sets/royalblue/uk/chromis/images/sale_delete.png
deleted file mode 100644
index 6ab0488e..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/sale_delete.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/sale_editline.png b/Icon sets/royalblue/uk/chromis/images/sale_editline.png
deleted file mode 100644
index bdbe9550..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/sale_editline.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/sale_new.png b/Icon sets/royalblue/uk/chromis/images/sale_new.png
deleted file mode 100644
index baf763ff..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/sale_new.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/sale_pending.png b/Icon sets/royalblue/uk/chromis/images/sale_pending.png
deleted file mode 100644
index 1460953a..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/sale_pending.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/sale_split_sml.png b/Icon sets/royalblue/uk/chromis/images/sale_split_sml.png
deleted file mode 100644
index 31e6985f..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/sale_split_sml.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/saleedit.png b/Icon sets/royalblue/uk/chromis/images/saleedit.png
deleted file mode 100644
index d5a39ad2..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/saleedit.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/sales.png b/Icon sets/royalblue/uk/chromis/images/sales.png
deleted file mode 100644
index 05128a3a..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/sales.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/sales_active.png b/Icon sets/royalblue/uk/chromis/images/sales_active.png
deleted file mode 100644
index 59272766..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/sales_active.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/scale.png b/Icon sets/royalblue/uk/chromis/images/scale.png
deleted file mode 100644
index ed0b01f4..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/scale.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/search24.png b/Icon sets/royalblue/uk/chromis/images/search24.png
deleted file mode 100644
index 242c1497..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/search24.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/search32.png b/Icon sets/royalblue/uk/chromis/images/search32.png
deleted file mode 100644
index e07ce202..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/search32.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/sort_incr.png b/Icon sets/royalblue/uk/chromis/images/sort_incr.png
deleted file mode 100644
index 9d0a6172..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/sort_incr.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/stockdiary.png b/Icon sets/royalblue/uk/chromis/images/stockdiary.png
deleted file mode 100644
index 8d887f96..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/stockdiary.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/stockmaint.png b/Icon sets/royalblue/uk/chromis/images/stockmaint.png
deleted file mode 100644
index 1f35f3f6..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/stockmaint.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/subcategory.png b/Icon sets/royalblue/uk/chromis/images/subcategory.png
deleted file mode 100644
index ca005dc6..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/subcategory.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/sysadmin.png b/Icon sets/royalblue/uk/chromis/images/sysadmin.png
deleted file mode 100644
index 81d9c173..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/sysadmin.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/tables.png b/Icon sets/royalblue/uk/chromis/images/tables.png
deleted file mode 100644
index 14ae48e2..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/tables.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/timer.png b/Icon sets/royalblue/uk/chromis/images/timer.png
deleted file mode 100644
index 9c0c6fe6..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/timer.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/user_sml.png b/Icon sets/royalblue/uk/chromis/images/user_sml.png
deleted file mode 100644
index b4d8f541..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/user_sml.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/users.png b/Icon sets/royalblue/uk/chromis/images/users.png
deleted file mode 100644
index 8fcf29d2..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/users.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/utilities.png b/Icon sets/royalblue/uk/chromis/images/utilities.png
deleted file mode 100644
index 9fbd8ead..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/utilities.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/viewmag+.png b/Icon sets/royalblue/uk/chromis/images/viewmag+.png
deleted file mode 100644
index 0fdc0988..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/viewmag+.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/viewmag-.png b/Icon sets/royalblue/uk/chromis/images/viewmag-.png
deleted file mode 100644
index eece79e0..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/viewmag-.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/voucher.png b/Icon sets/royalblue/uk/chromis/images/voucher.png
deleted file mode 100644
index 50c39172..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/voucher.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/wallet.png b/Icon sets/royalblue/uk/chromis/images/wallet.png
deleted file mode 100644
index ede43f61..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/wallet.png and /dev/null differ
diff --git a/Icon sets/royalblue/uk/chromis/images/yast_printer.png b/Icon sets/royalblue/uk/chromis/images/yast_printer.png
deleted file mode 100644
index ea227539..00000000
Binary files a/Icon sets/royalblue/uk/chromis/images/yast_printer.png and /dev/null differ
diff --git a/Migrate.bat b/Migrate.bat
index 9567a9bb..adf82563 100644
--- a/Migrate.bat
+++ b/Migrate.bat
@@ -1,54 +1,24 @@
@echo off
-REM Chromis POS - The New Face of Open Source POS
-REM Copyright (c) 2015
-REM http://www.chromis.co.uk
-REM
-REM This file is part of Chromis POS
-REM
-REM Chromis POS is free software: you can redistribute it and/or modify
-REM it under the terms of the GNU General Public License as published by
-REM the Free Software Foundation, either version 3 of the License, or
-REM (at your option) any later version.
-REM
-REM Chromis POS is distributed in the hope that it will be useful,
-REM but WITHOUT ANY WARRANTY; without even the implied warranty of
-REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-REM GNU General Public License for more details.
-REM
-REM You should have received a copy of the GNU General Public License
-REM along with Chromis POS. If not, see
set DIRNAME=%~dp0
set CP="%DIRNAME%chromispos.jar"
-set CP=%CP%;"%DIRNAME%lib/jasperreports-4.5.1.jar"
-set CP=%CP%;"%DIRNAME%lib/jcommon-1.0.15.jar"
-set CP=%CP%;"%DIRNAME%lib/jfreechart-1.0.12.jar"
-set CP=%CP%;"%DIRNAME%lib/jdt-compiler-3.1.1.jar"
-set CP=%CP%;"%DIRNAME%lib/commons-beanutils-1.8.3.jar"
-set CP=%CP%;"%DIRNAME%lib/commons-digester-2.1.jar"
-set CP=%CP%;"%DIRNAME%lib/iText-2.1.7.jar"
-set CP=%CP%;"%DIRNAME%lib/poi-3.8-20120326.jar"
-set CP=%CP%;"%DIRNAME%lib/barcode4j-2.0.jar"
-set CP=%CP%;"%DIRNAME%lib/commons-codec-1.4.jar"
-set CP=%CP%;"%DIRNAME%lib/velocity-1.7-dep.jar"
-set CP=%CP%;"%DIRNAME%lib/oro-2.0.8.jar"
-set CP=%CP%;"%DIRNAME%lib/commons-collections-3.2.1.jar"
-set CP=%CP%;"%DIRNAME%lib/commons-lang-2.4.jar"
-set CP=%CP%;"%DIRNAME%lib/bsh-core-2.0b4.jar"
-set CP=%CP%;"%DIRNAME%lib/RXTXcomm.jar"
-set CP=%CP%;"%DIRNAME%lib/jpos1121.jar"
-set CP=%CP%;"%DIRNAME%lib/swingx-all-1.6.4.jar"
-set CP=%CP%;"%DIRNAME%lib/substance.jar"
-set CP=%CP%;"%DIRNAME%lib/substance-swingx.jar"
-
-REM Apache Axis SOAP libraries.
-set CP=%CP%;"%DIRNAME%lib/axis.jar"
-set CP=%CP%;"%DIRNAME%lib/jaxrpc.jar"
-set CP=%CP%;"%DIRNAME%lib/saaj.jar"
-set CP=%CP%;"%DIRNAME%lib/wsdl4j-1.5.1.jar"
-set CP=%CP%;"%DIRNAME%lib/commons-discovery-0.4.jar"
-set CP=%CP%;"%DIRNAME%lib/commons-logging-1.1.jar"
set CP=%CP%;"%DIRNAME%locales/"
+set CP=%CP%;"%DIRNAME%locales/Albanian"
+set CP=%CP%;"%DIRNAME%locales/American"
+set CP=%CP%;"%DIRNAME%locales/Arabic"
+set CP=%CP%;"%DIRNAME%locales/Argentinian"
+set CP=%CP%;"%DIRNAME%locales/Brazilian"
+set CP=%CP%;"%DIRNAME%locales/Croatian"
+set CP=%CP%;"%DIRNAME%locales/Dutch"
+set CP=%CP%;"%DIRNAME%locales/English"
+set CP=%CP%;"%DIRNAME%locales/Estonian"
+set CP=%CP%;"%DIRNAME%locales/French"
+set CP=%CP%;"%DIRNAME%locales/German"
+set CP=%CP%;"%DIRNAME%locales/Italian"
+set CP=%CP%;"%DIRNAME%locales/Mexican"
+set CP=%CP%;"%DIRNAME%locales/Portuguese"
+set CP=%CP%;"%DIRNAME%locales/Spanish"
+
set CP=%CP%;"%DIRNAME%reports/"
start /B javaw -cp %CP% -Djava.library.path="%DIRNAME%lib/Windows/i368-mingw32" -Ddirname.path="%DIRNAME%./" uk.chromis.pos.migrate.JFrmMigrate %1
diff --git a/README.txt b/README.txt
index 89279985..6b393dcf 100644
--- a/README.txt
+++ b/README.txt
@@ -1,19 +1,184 @@
-8th November 2015
-Release: v0.53
+29th February 2016
+Release:v0.56
+
+Moved main locales out of country folders
+Fixes to dialogbox when using dark colour themes.
+Updated some of the locales files with updates provided by users
+Updated Migration routine uses new process and cover the latest version, added progress bar
+Added fix from Wildfox coder for CSV import
+Allow reset of pickup ID within application
+Added custom error sound option, modified from John B code
+Added autocomplete to products packproduct
+Added John B change to only load products after filter is applied
+Source code ability to add menu options without removing existing menu.
+Adding fixes from John B for promotions and
+Added date of birth to customer records
+
+
+***********************************************************************************************************
+2nd February 2016
+Release: v0.55
+
+Update to the convert routine
+Update to create\upgrade dialog boxes
+Refactor of columms in Derby database to resolve the foreign key issue, which is caused by different columns
+size, in databases that are converted.
+
+Added recipes (formally product kit).
+Improved barcode printign routine to allow the software to use graphics for barcodes not supported by the
+printer.
+
+***********************************************************************************************************
+10th January 2016
+Release: v0.54.4
+
+Update convert routine, This will allow updates from version 2.50 of Unicenta and Openbravo, the convertor
+from these versions will still require user intervention to complete the process.
+
+Bugs fixes
+Bug around max change resolved
+
+Features
+Long names displayed in products and customer panels
+New config panel to separate the restaurant settings
+Autorefresh on tables, if enabled will auto refresh tables view every 5 seconds
+Added option to allow auto popup of layaways
+Added option to allow the table buttons to be located from floors
+Allow edit of historic ticket providing the day is not closed
+
+***********************************************************************************************************
+3rd January 2016
+Release: v0.54.3
-Bug #16 variable price, product screen display affected only, now resolved
-Bug #15 Delete freshly added products - Thanks Wildfox coder
-Bug #14 CSV import updated and resolved
-Bug #17 Refund bug inherited from Unicenta and Openbravo, user can refund dame recipt multiple times
+Bug fixes
+#41 Debit Sales locked - if payment is made against customer, does not reflect in layaways
+#42 Update from v0.54.1 failing
+#43 Exit button on info panel
-Refactor of derby database code, since derby 10.10.20 they boolean function changed. to use true/false rather than 1/0. Table changed to allow the new fucntion.
-Addition of pack product feature from John Barrett, including new table ready for stock app import.
+Features
+Moved tiptext messages to pos_messages
+
+***********************************************************************************************************
+2nd January 2016
+Release: v0.54.2
+
+Release to fix bugs identified in v0.54.1
+
+Also included change limit feature, to prevent barcode number being used for change.
+
+***********************************************************************************************************
+28th December 2015
+Release: v0.54.1/0
+
+Release to fix
+bug#34, this was caused by a source code merged - only affects creating new tables
+
+***********************************************************************************************************
+27th December 2015
+Release: v0.54
+
+
+***********************************************
+
+PLEASE NOTE THAT SHARED TICKETS IS DELETED AS
+PART OF THIS UPGRADE PROCESS. THIS IS REQUIRED
+TO ALLOW CHANGES TO WORK WITHOUT ERRORS
+
+***********************************************
+
+Bugs
+#24 Sales as refunds fixed
+#26 Report error fixed
+#27 Multiple auxiliary items fixed
+#28 new customers fixed
+#29 customer adding fixed
+#30 Checkin/out report fixed
+#32 printAlias bug fixed allows printing of &
+
+
+Other errors
+- Fixed csv import error
+- Customer Display routine updated
-
+Features
+- All reports have been moved out of the jar file, making it easier to add your own reports or
+ customize existing reports.
+- Reports now load dynamically, based upon database type.
+- Fixed some reports that did not work with all database version.
+- All locales have been moved from the jar file, allowing easier editing.
+- Change Icon colours from the configuration panel.
+- Added new event for scripts 'ticket.save'
+- Added new promotions engines.
+- fixed issue with customer display, user can now select which display type in configuration.
+- Using '+' key on sales screen for quick sales, now reads name of product in by default.
+- merged branches from Github into the main code.
+- Only create pickup id if order contains ptoducts.
+- Improved the way layaways are handled, The ticket will always retain original owner and ID.
+- Pickup ID can be used for layaways id
+- csv now able to create categories if required
+- csv now has progress bar during import routine
+***********************************************************************************************************
+2nd December
+Release: v0.53.3
+
+This changes the resources, to match new tickettype, which make the scripts more readable. In version v0.32.3
+these scripts are converted automatically.
+
+The conversion can be run manually, if required by running resettickettype from the Chomis program folder.
+
+***********************************************************************************************************
+1st December 2015
+Release: v0.53.2
+
+New features
+Added toggle type switches in place of simple checkboxes.
+Improved Autologoff routine
+Updated the way config properties are handled ready for later changes
+Display Categories using show number, if number is null then displays these in name order.
+New set of coloured icons available - Orange
+
+Bug #21 Error in Auxiliary Products caused by incorrect column name - fixed
+Bug #20 Historic items sent to kitchen printer - fixed
+Bug #19 Incorrect tendered amount in reprint - fixed in templates.
+
+#Fixed issue in config, no longer asks to save when no changes have been made to the configuration.
+#Fixed case issue in liquibase script
+#Fixed issue with new refund routine
+***********************************************************************************************************
+14th November 2015
+Release: v0.53.1
+
+Fix for derby upgrade fail. Found in v0.53.
+As part of this the product pack, auto refresh implemented on the product pack.
+**********************************************************************************************************
+11th November 2015
+Release: v0.53
+
+Bug #16 variable price, product screen display affected only, now resolved
+Bug #15 Delete freshly added products - Thanks Wildfox coder
+Bug #14 CSV import updated and resolved
+Bug #17 Refund bug inherited from Unicenta and Openbravo, user can refund dame recipt multiple times
+Bug #9 CustomerView generates insert & Update on load - thanks tsmi
+
+
+* Included new CSV import - Thanks Wildfox coder
+* Refactor of derby database code, since derby 10.10.20 they boolean function changed. to use true/false
+ rather than 1/0. Table changed to allow the new fucntion.
+* Addition of pack product feature from John Barrett, including new table ready for stock app import.
+* Barcode changed to allow ISBn-13 codes to be recognized.
+* Migrate routine updated to allow for new changes.
+* New event script added 'ticket.pretotals' this runs before the totals are displayed on the screen.
+* Display.consolidation updated
+ display.consolidatedwithoutprice if true does not use price when consolidating on screen tickets
+ only workis if display.consolidated=true, to switch on on screen consolidation
+* Option to hide the default product popup
+* Added usb to print options, works the same way as raw, except it make it easier to implement
+
+***********************************************************************************************************
18th October
Release: v0.52
@@ -34,37 +199,32 @@ of barcode is calculated using some basic formulas
Any code above with the incorrect checksum if defined as null, this is is required as
some scanners will reject the code. This is not used for general scanning only when
printing reports.
-
Drag'n'drop images into chromis for stock records.
-
Updated ready for the new version of the Kitchen Screen Application V1.50.
-
More general tidy up of the code.
-
Merged changes from John Barrett in to the main code.
-
-
+***********************************************************************************************************
21st September 2015
Release: v0.51
Fixed SQL errors in Convert and it now informs the the user of its progress via a progress bar.
-# Default Icon colours changed.
-# Added the ability for the user to change the colout of the icons. Located in the install folder
+* Default Icon colours changed.
+* Added the ability for the user to change the colout of the icons. Located in the install folder
is folder called icon sets, copy the the required jar to the lIb folder to changethe colours
-# Identified bug in look and feel, unrequired lib file, now fixed
-# Found issue of missing field in products when coming from 3.70 - fixed
-# Found issue with rightslevel moving from 3.70 - fixed
-# Update ticket.buttons to point to image library for built in buttons. Maintains consistency
-# New shortcut icons now in use - thanks Fanzam
-# Text version of permissions now deactivated by default, On custom permissions will need to be added
+* Identified bug in look and feel, unrequired lib file, now fixed
+* Found issue of missing field in products when coming from 3.70 - fixed
+* Found issue with rightslevel moving from 3.70 - fixed
+* Update ticket.buttons to point to image library for built in buttons. Maintains consistency
+* New shortcut icons now in use - thanks Fanzam
+* Text version of permissions now deactivated by default, On custom permissions will need to be added
to the database.
-# Started to tidy the message dialog boxes.
-# The main bug is fix in variable barcodes, these have now been written to comply with GS1 UK & GS1 US.
+* Started to tidy the message dialog boxes.
+* The main bug is fix in variable barcodes, these have now been written to comply with GS1 UK & GS1 US.
Included is a pdf which explains how these barcodes work and how to set them up correctly in Chromis.
-# Plus a number of bug fixes supplied by John Barrett, thanks John.
+* Plus a number of bug fixes supplied by John Barrett, thanks John.
bug #5
diff --git a/ResetLiquibase.bat b/ResetLiquibase.bat
index a7778f27..94ac22f4 100644
--- a/ResetLiquibase.bat
+++ b/ResetLiquibase.bat
@@ -1,6 +1,6 @@
@echo off
REM Chromis POS - The New Face of Open Source POS
-REM Copyright (c) 2015
+REM Copyright (c) (c) 2015-2016 2016
REM http://www.chromis.co.uk
REM
REM This file is part of Chromis POS
diff --git a/ResetSeq.bat b/ResetSeq.bat
index cf90408c..2f964e8b 100644
--- a/ResetSeq.bat
+++ b/ResetSeq.bat
@@ -1,26 +1,24 @@
@echo off
-REM Chromis POS - The New Face of Open Source POS
-REM Copyright (c) 2015
-REM http://www.chromis.co.uk
-REM
-REM This file is part of Chromis POS
-REM
-REM Chromis POS is free software: you can redistribute it and/or modify
-REM it under the terms of the GNU General Public License as published by
-REM the Free Software Foundation, either version 3 of the License, or
-REM (at your option) any later version.
-REM
-REM Chromis POS is distributed in the hope that it will be useful,
-REM but WITHOUT ANY WARRANTY; without even the implied warranty of
-REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-REM GNU General Public License for more details.
-REM
-REM You should have received a copy of the GNU General Public License
-REM along with Chromis POS. If not, see
-REM
+
set DIRNAME=%~dp0
set CP="%DIRNAME%chromispos.jar"
set CP=%CP%;"%DIRNAME%locales/"
-set CP=%CP%;"%DIRNAME%lib/substance.jar"
+set CP=%CP%;"%DIRNAME%locales/Albanian"
+set CP=%CP%;"%DIRNAME%locales/American"
+set CP=%CP%;"%DIRNAME%locales/Arabic"
+set CP=%CP%;"%DIRNAME%locales/Argentinian"
+set CP=%CP%;"%DIRNAME%locales/Brazilian"
+set CP=%CP%;"%DIRNAME%locales/Croatian"
+set CP=%CP%;"%DIRNAME%locales/Dutch"
+set CP=%CP%;"%DIRNAME%locales/English"
+set CP=%CP%;"%DIRNAME%locales/Estonian"
+set CP=%CP%;"%DIRNAME%locales/French"
+set CP=%CP%;"%DIRNAME%locales/German"
+set CP=%CP%;"%DIRNAME%locales/Italian"
+set CP=%CP%;"%DIRNAME%locales/Mexican"
+set CP=%CP%;"%DIRNAME%locales/Portuguese"
+set CP=%CP%;"%DIRNAME%locales/Spanish"
+
+set CP=%CP%;"%DIRNAME%reports/"
start /B javaw -cp %CP% uk.chromis.pos.sales.JResetPickupID
\ No newline at end of file
diff --git a/ResetSeq.command b/ResetSeq.command
index 838816fb..03884b88 100644
--- a/ResetSeq.command
+++ b/ResetSeq.command
@@ -1,26 +1,24 @@
#!/bin/sh
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015
-# http://www.chromis.co.uk
-#
-# This file is part of Chromis POS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see
-#
DIRNAME=`dirname $0`
CP=$DIRNAME/chromispos.jar
+CP=$CP:$DIRNAME/lib/
CP=$CP:$DIRNAME/locales/
-CP=$CP:$DIRNAME/lib/substance.jar
+CP=$CP:$DIRNAME/locales/Albanian
+CP=$CP:$DIRNAME/reports/American
+CP=$CP:$DIRNAME/locales/Arabic
+CP=$CP:$DIRNAME/locales/Argentinian
+CP=$CP:$DIRNAME/locales/Brazilian
+CP=$CP:$DIRNAME/locales/Croatian
+CP=$CP:$DIRNAME/locales/Dutch
+CP=$CP:$DIRNAME/locales/English
+CP=$CP:$DIRNAME/locales/Estonian
+CP=$CP:$DIRNAME/locales/French
+CP=$CP:$DIRNAME/locales/German
+CP=$CP:$DIRNAME/locales/Italian
+CP=$CP:$DIRNAME/locales/Mexican
+CP=$CP:$DIRNAME/locales/Portuguese
+CP=$CP:$DIRNAME/locales/Spanish
+CP=$CP:$DIRNAME/reports/
+
java -cp $CP -Djava.library.path=$DIRNAME/lib/Linux -Ddirname.path="$DIRNAME" uk.chromis.pos.sales.JResetPickupID $1
\ No newline at end of file
diff --git a/ResetSeq.sh b/ResetSeq.sh
index 838816fb..77181e97 100644
--- a/ResetSeq.sh
+++ b/ResetSeq.sh
@@ -1,26 +1,41 @@
#!/bin/sh
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015
-# http://www.chromis.co.uk
-#
-# This file is part of Chromis POS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see
-#
+
DIRNAME=`dirname $0`
CP=$DIRNAME/chromispos.jar
+CP=$CP:$DIRNAME/reports/
CP=$CP:$DIRNAME/locales/
-CP=$CP:$DIRNAME/lib/substance.jar
+CP=$CP:$DIRNAME/locales/Albanian
+CP=$CP:$DIRNAME/reports/American
+CP=$CP:$DIRNAME/locales/Arabic
+CP=$CP:$DIRNAME/locales/Argentinian
+CP=$CP:$DIRNAME/locales/Brazilian
+CP=$CP:$DIRNAME/locales/Croatian
+CP=$CP:$DIRNAME/locales/Dutch
+CP=$CP:$DIRNAME/locales/English
+CP=$CP:$DIRNAME/locales/Estonian
+CP=$CP:$DIRNAME/locales/French
+CP=$CP:$DIRNAME/locales/German
+CP=$CP:$DIRNAME/locales/Italian
+CP=$CP:$DIRNAME/locales/Mexican
+CP=$CP:$DIRNAME/locales/Portuguese
+CP=$CP:$DIRNAME/locales/Spanish
+
+# Select the library folder
+case "`uname -s`" in
+ Linux)
+ case "`uname -m`" in
+ i686) LIBRARYPATH=/lib/Linux/i686-unknown-linux-gnu;;
+ ia64) LIBRARYPATH=/lib/Linux/ia64-unknown-linux-gnu;;
+ x86_64|amd64) LIBRARYPATH=/lib/Linux/x86_64-unknown-linux-gnu;;
+ esac;;
+ SunOS)
+ case "`uname -m`" in
+ sparc32) LIBRARYPATH=/Solaris/sparc-solaris/sparc32-sun-solaris2.8;;
+ sparc64) LIBRARYPATH=/Solaris/sparc-solaris/sparc64-sun-solaris2.8;;
+ esac;;
+Darwin) LIBRARYPATH=/lib/Mac_OS_X;;
+CYGWIN*|MINGW32*) LIBRARYPATH=/lib/Windows/i368-mingw32;;
+esacr
+
java -cp $CP -Djava.library.path=$DIRNAME/lib/Linux -Ddirname.path="$DIRNAME" uk.chromis.pos.sales.JResetPickupID $1
\ No newline at end of file
diff --git a/admin panel/uk/chromis/pos/sites/CreateCentral.java b/admin panel/uk/chromis/pos/sites/CreateCentral.java
new file mode 100644
index 00000000..6817f0af
--- /dev/null
+++ b/admin panel/uk/chromis/pos/sites/CreateCentral.java
@@ -0,0 +1,104 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016
+// http://www.chromis.co.uk
+//
+// This file is part of Chromis POS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+package uk.chromis.pos.sites;
+
+import java.awt.BorderLayout;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.IOException;
+import javax.imageio.ImageIO;
+import javax.swing.LookAndFeel;
+import javax.swing.UIManager;
+import javax.swing.UnsupportedLookAndFeelException;
+import org.pushingpixels.substance.api.SubstanceLookAndFeel;
+import org.pushingpixels.substance.api.SubstanceSkin;
+import uk.chromis.pos.forms.AppConfig;
+import uk.chromis.pos.forms.AppLocal;
+import uk.chromis.pos.forms.JRootFrame;
+
+
+public class CreateCentral extends javax.swing.JFrame {
+
+ private CentralConfiguration config;
+
+ /**
+ *
+ * @param props
+ */
+ public CreateCentral() {
+
+ initComponents();
+ // try {
+ // this.setIconImage(ImageIO.read(JRootFrame.class.getResourceAsStream("/uk/chromis/fixedimages/smllogo.png")));
+ // } catch (IOException e) {
+ // }
+ setTitle("Chromis Sync - Central Server Configuration.");
+ addWindowListener(new MyFrameListener());
+ config = new CentralConfiguration();
+ getContentPane().add(config, BorderLayout.CENTER);
+ config.activate();
+ }
+
+ private class MyFrameListener extends WindowAdapter {
+
+ @Override
+ public void windowClosing(WindowEvent evt) {
+ if (config.deactivate()) {
+ dispose();
+ }
+ }
+
+ @Override
+ public void windowClosed(WindowEvent evt) {
+ System.exit(0);
+ }
+ }
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
+ */
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+
+ java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
+ setBounds((screenSize.width - 507) / 2, (screenSize.height - 304) / 2, 507, 304);
+ }// //GEN-END:initComponents
+
+ /**
+ * @param args the command line arguments
+ */
+ public static void main(final String args[]) {
+ java.awt.EventQueue.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+
+ AppConfig config = AppConfig.getInstance();
+ CreateCentral resetFrame = new CreateCentral();//
+ resetFrame.setSize(620, 400);
+ resetFrame.setVisible(true);
+
+ }
+ });
+ }
+
+}
diff --git a/beep.wav b/beep.wav
new file mode 100644
index 00000000..90b1287a
Binary files /dev/null and b/beep.wav differ
diff --git a/changeiconset.jar b/changeiconset.jar
new file mode 100644
index 00000000..ae4a0d69
Binary files /dev/null and b/changeiconset.jar differ
diff --git a/chromispos.xml b/chromispos.xml
deleted file mode 100644
index 60f23121..00000000
--- a/chromispos.xml
+++ /dev/null
@@ -1,160 +0,0 @@
-
- chromispos
- Chromis
- 0.10
- D:/Projects/Chromis V1.00/Bitrockimages/chromispaneltran.png
- D:/Projects/Chromis V1.00/Bitrockimages/chromistop.png
- D:/Projects/Chromis V1.00/Bitrockimages/chromissplash.png
-
-
- default
- Default Component
- 1
- 1
- 1
-
-
- Chromis Point of Sale
-
-
- ChromisPos
- 0
-
- all
- 0
- 0
- ${installdir}/start.bat
-
- ${installdir}/screen.ico
- ${installdir}
-
-
- Chromis Web Site
-
- Chromis Web Site
- all
- 0
- 0
- http://www.chromis.co.uk
- ${installdir}/screen.ico
-
-
-
-
- Program Files
- ${installdir}
- programfiles
- all
-
-
- Uninstall
- ${installdir}/${uninstallerName}
-
- Uninstall ${product_fullname}
- ${installdir}
- all
- 0
- 0
- ${installdir}/${uninstallerName}.exe
-
-
- ${installdir}
-
-
-
-
- Program Files
- ${installdir}
- programfileslinux
- linux
-
-
- Program Files
- ${installdir}
- programfileswindows
- windows
-
-
- D:/Projects/Chromis V1.00/locales
-
-
- D:/Projects/Chromis V1.00/chromis_splash.png
-
-
- D:/Projects/Chromis V1.00/configure.bat
-
-
- D:/Projects/Chromis V1.00/configure.sh
-
-
- D:/Projects/Chromis V1.00/Logo.png
-
-
- D:/Projects/Chromis V1.00/Migrate.bat
-
-
- D:/Projects/Chromis V1.00/migrate.sh
-
-
- D:/Projects/Chromis V1.00/newtext.txt
-
-
- D:/Projects/Chromis V1.00/ResetSeq.bat
-
-
- D:/Projects/Chromis V1.00/start.bat
-
-
- D:/Projects/Chromis V1.00/start.sh
-
-
- D:/Projects/Chromis V1.00/dist/chromispos.jar
-
-
- D:/Projects/Chromis V1.00/dist/lib
-
-
- D:/Projects/Chromis V1.00/screen.ico
-
-
-
-
- Program Files
- ${installdir}
- programfilesosx
- osx
-
-
-
-
- Uninstall ${product_fullname}
- Uninstall ${product_fullname}
- 0
- 0
- ${installdir}/${uninstallerName}.exe
-
-
- ${installdir}/
-
-
-
-
- 1
- 1
- Chromis
-
-
- installdir
- Installer.Parameter.installdir.description
- Installer.Parameter.installdir.explanation
-
- ${platform_install_prefix}/${product_shortname}
- 0
- prefix
- 1
- 0
- 40
-
-
-
-
diff --git a/chromispos.xml.backup b/chromispos.xml.backup
deleted file mode 100644
index 02a5b5d9..00000000
--- a/chromispos.xml.backup
+++ /dev/null
@@ -1,160 +0,0 @@
-
- chromispos
- Chromis
- 0.10
- D:/Projects/Chromis V1.00/Bitrock images/chromispaneltran.png
- D:/Projects/Chromis V1.00/Bitrock images/chromistop.png
- D:/Projects/Chromis V1.00/Bitrock images/chromissplash.png
-
-
- default
- Default Component
- 1
- 1
- 1
-
-
- Chromis Point of Sale
-
-
- ChromisPos
- 0
-
- all
- 0
- 0
- ${installdir}/start.bat
-
- ${installdir}/screen.ico
- ${installdir}
-
-
- Chromis Web Site
-
- Chromis Web Site
- all
- 0
- 0
- http://www.chromis.co.uk
- ${installdir}/screen.ico
-
-
-
-
- Program Files
- ${installdir}
- programfiles
- all
-
-
- Uninstall
- ${installdir}/${uninstallerName}
-
- Uninstall ${product_fullname}
- ${installdir}
- all
- 0
- 0
- ${installdir}/${uninstallerName}.exe
-
-
- ${installdir}
-
-
-
-
- Program Files
- ${installdir}
- programfileslinux
- linux
-
-
- Program Files
- ${installdir}
- programfileswindows
- windows
-
-
- D:/Projects/Chromis V1.00/locales
-
-
- D:/Projects/Chromis V1.00/chromis_splash.png
-
-
- D:/Projects/Chromis V1.00/configure.bat
-
-
- D:/Projects/Chromis V1.00/configure.sh
-
-
- D:/Projects/Chromis V1.00/Logo.png
-
-
- D:/Projects/Chromis V1.00/Migrate.bat
-
-
- D:/Projects/Chromis V1.00/migrate.sh
-
-
- D:/Projects/Chromis V1.00/newtext.txt
-
-
- D:/Projects/Chromis V1.00/ResetSeq.bat
-
-
- D:/Projects/Chromis V1.00/start.bat
-
-
- D:/Projects/Chromis V1.00/start.sh
-
-
- D:/Projects/Chromis V1.00/dist/chromispos.jar
-
-
- D:/Projects/Chromis V1.00/dist/lib
-
-
- D:/Projects/Chromis V1.00/screen.ico
-
-
-
-
- Program Files
- ${installdir}
- programfilesosx
- osx
-
-
-
-
- Uninstall ${product_fullname}
- Uninstall ${product_fullname}
- 0
- 0
- ${installdir}/${uninstallerName}.exe
-
-
- ${installdir}/
-
-
-
-
- 1
- 1
- Chromis
-
-
- installdir
- Installer.Parameter.installdir.description
- Installer.Parameter.installdir.explanation
-
- ${platform_install_prefix}/${product_shortname}
- 0
- prefix
- 1
- 0
- 40
-
-
-
-
diff --git a/configure.bat b/configure.bat
index 872a1538..52671d86 100644
--- a/configure.bat
+++ b/configure.bat
@@ -1,26 +1,23 @@
@echo off
-REM Chromis POS - The New Face of Open Source POS
-REM Copyright (c) 2015
-REM http://www.chromis.co.uk
-REM
-REM This file is part of Chromis POS
-REM
-REM Chromis POS is free software: you can redistribute it and/or modify
-REM it under the terms of the GNU General Public License as published by
-REM the Free Software Foundation, either version 3 of the License, or
-REM (at your option) any later version.
-REM
-REM Chromis POS is distributed in the hope that it will be useful,
-REM but WITHOUT ANY WARRANTY; without even the implied warranty of
-REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-REM GNU General Public License for more details.
-REM
-REM You should have received a copy of the GNU General Public License
-REM along with Chromis POS. If not, see
-
set DIRNAME=%~dp0
set CP="%DIRNAME%chromispos.jar"
set CP=%CP%;"%DIRNAME%locales/"
+set CP=%CP%;"%DIRNAME%locales/Albanian"
+set CP=%CP%;"%DIRNAME%locales/American"
+set CP=%CP%;"%DIRNAME%locales/Arabic"
+set CP=%CP%;"%DIRNAME%locales/Argentinian"
+set CP=%CP%;"%DIRNAME%locales/Brazilian"
+set CP=%CP%;"%DIRNAME%locales/Croatian"
+set CP=%CP%;"%DIRNAME%locales/Dutch"
+set CP=%CP%;"%DIRNAME%locales/English"
+set CP=%CP%;"%DIRNAME%locales/Estonian"
+set CP=%CP%;"%DIRNAME%locales/French"
+set CP=%CP%;"%DIRNAME%locales/German"
+set CP=%CP%;"%DIRNAME%locales/Italian"
+set CP=%CP%;"%DIRNAME%locales/Mexican"
+set CP=%CP%;"%DIRNAME%locales/Portuguese"
+set CP=%CP%;"%DIRNAME%locales/Spanish"
+
set CP=%CP%;"%DIRNAME%lib/substance.jar"
start /B javaw -cp %CP% uk.chromis.pos.config.JFrmConfig
\ No newline at end of file
diff --git a/configure.command b/configure.command
index 742e2469..ddb28e91 100644
--- a/configure.command
+++ b/configure.command
@@ -1,25 +1,24 @@
#!/bin/sh
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015
-# http://www.chromis.co.uk
-#
-# This file is part of Chromis POS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see
DIRNAME=`dirname $0`
CP=$DIRNAME/chromispos.jar
+CP=$CP:$DIRNAME/lib/
CP=$CP:$DIRNAME/locales/
-CP=$CP:$DIRNAME/lib/substance.jar
+CP=$CP:$DIRNAME/locales/Albanian
+CP=$CP:$DIRNAME/reports/American
+CP=$CP:$DIRNAME/locales/Arabic
+CP=$CP:$DIRNAME/locales/Argentinian
+CP=$CP:$DIRNAME/locales/Brazilian
+CP=$CP:$DIRNAME/locales/Croatian
+CP=$CP:$DIRNAME/locales/Dutch
+CP=$CP:$DIRNAME/locales/English
+CP=$CP:$DIRNAME/locales/Estonian
+CP=$CP:$DIRNAME/locales/French
+CP=$CP:$DIRNAME/locales/German
+CP=$CP:$DIRNAME/locales/Italian
+CP=$CP:$DIRNAME/locales/Mexican
+CP=$CP:$DIRNAME/locales/Portuguese
+CP=$CP:$DIRNAME/locales/Spanish
+CP=$CP:$DIRNAME/reports/
+
java -cp $CP -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel uk.chromis.pos.config.JFrmConfig
diff --git a/configure.sh b/configure.sh
index 742e2469..6e9345d3 100644
--- a/configure.sh
+++ b/configure.sh
@@ -1,25 +1,41 @@
#!/bin/sh
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015
-# http://www.chromis.co.uk
-#
-# This file is part of Chromis POS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see
+
DIRNAME=`dirname $0`
CP=$DIRNAME/chromispos.jar
+CP=$CP:$DIRNAME/reports/
CP=$CP:$DIRNAME/locales/
-CP=$CP:$DIRNAME/lib/substance.jar
+CP=$CP:$DIRNAME/locales/Albanian
+CP=$CP:$DIRNAME/reports/American
+CP=$CP:$DIRNAME/locales/Arabic
+CP=$CP:$DIRNAME/locales/Argentinian
+CP=$CP:$DIRNAME/locales/Brazilian
+CP=$CP:$DIRNAME/locales/Croatian
+CP=$CP:$DIRNAME/locales/Dutch
+CP=$CP:$DIRNAME/locales/English
+CP=$CP:$DIRNAME/locales/Estonian
+CP=$CP:$DIRNAME/locales/French
+CP=$CP:$DIRNAME/locales/German
+CP=$CP:$DIRNAME/locales/Italian
+CP=$CP:$DIRNAME/locales/Mexican
+CP=$CP:$DIRNAME/locales/Portuguese
+CP=$CP:$DIRNAME/locales/Spanish
+
+# Select the library folder
+case "`uname -s`" in
+ Linux)
+ case "`uname -m`" in
+ i686) LIBRARYPATH=/lib/Linux/i686-unknown-linux-gnu;;
+ ia64) LIBRARYPATH=/lib/Linux/ia64-unknown-linux-gnu;;
+ x86_64|amd64) LIBRARYPATH=/lib/Linux/x86_64-unknown-linux-gnu;;
+ esac;;
+ SunOS)
+ case "`uname -m`" in
+ sparc32) LIBRARYPATH=/Solaris/sparc-solaris/sparc32-sun-solaris2.8;;
+ sparc64) LIBRARYPATH=/Solaris/sparc-solaris/sparc64-sun-solaris2.8;;
+ esac;;
+Darwin) LIBRARYPATH=/lib/Mac_OS_X;;
+CYGWIN*|MINGW32*) LIBRARYPATH=/lib/Windows/i368-mingw32;;
+esac
+
java -cp $CP -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel uk.chromis.pos.config.JFrmConfig
diff --git a/convert.bat b/convert.bat
index 841d6334..500d320d 100644
--- a/convert.bat
+++ b/convert.bat
@@ -1,6 +1,6 @@
@echo off
REM Chromis POS - The New Face of Open Source POS
-REM Copyright (c) 2015
+REM Copyright (c) (c) 2015-2016 2016
REM http://www.chromis.co.uk
REM
REM This file is part of Chromis POS
diff --git a/convertrepair.sql b/convertrepair.sql
new file mode 100644
index 00000000..c1670d8f
--- /dev/null
+++ b/convertrepair.sql
@@ -0,0 +1 @@
+update products set isscale = false
\ No newline at end of file
diff --git a/defaultresets.bat b/defaultresets.bat
index 60c2b9e9..4bb6cd66 100644
--- a/defaultresets.bat
+++ b/defaultresets.bat
@@ -1,23 +1,24 @@
@echo off
-REM Chromis POS - The New Face of Open Source POS
-REM Copyright (c) 2015
-REM http://www.chromis.co.uk
-REM
-REM This file is part of Chromis POS
-REM
-REM Chromis POS is free software: you can redistribute it and/or modify
-REM it under the terms of the GNU General Public License as published by
-REM the Free Software Foundation, either version 3 of the License, or
-REM (at your option) any later version.
-REM
-REM Chromis POS is distributed in the hope that it will be useful,
-REM but WITHOUT ANY WARRANTY; without even the implied warranty of
-REM MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-REM GNU General Public License for more details.
-REM
-REM You should have received a copy of the GNU General Public License
-REM along with Chromis POS. If not, see
-REM
+
set DIRNAME=%~dp0
-set CP="%DIRNAME%defaultresets.jar"
-start /B java -cp %CP% uk.chromis.defaultresets.DefaultResets
+set CP="%DIRNAME%chromispos.jar"
+set CP=%CP%;"%DIRNAME%changeiconset.jar"
+set CP=%CP%;"%DIRNAME%locales/"
+set CP=%CP%;"%DIRNAME%locales/Albanian"
+set CP=%CP%;"%DIRNAME%locales/American"
+set CP=%CP%;"%DIRNAME%locales/Arabic"
+set CP=%CP%;"%DIRNAME%locales/Argentinian"
+set CP=%CP%;"%DIRNAME%locales/Brazilian"
+set CP=%CP%;"%DIRNAME%locales/Croatian"
+set CP=%CP%;"%DIRNAME%locales/Dutch"
+set CP=%CP%;"%DIRNAME%locales/English"
+set CP=%CP%;"%DIRNAME%locales/Estonian"
+set CP=%CP%;"%DIRNAME%locales/French"
+set CP=%CP%;"%DIRNAME%locales/German"
+set CP=%CP%;"%DIRNAME%locales/Italian"
+set CP=%CP%;"%DIRNAME%locales/Mexican"
+set CP=%CP%;"%DIRNAME%locales/Portuguese"
+set CP=%CP%;"%DIRNAME%locales/Spanish"
+set CP=%CP%;"%DIRNAME%reports/"
+
+start javaw -cp %CP% -Djava.library.path="%DIRNAME%lib/Windows/i368-mingw32" -Ddirname.path="%DIRNAME%./" uk.chromis.pos.repair.DefaultResets %1
diff --git a/defaultresets.command b/defaultresets.command
index b7cf66e7..11d7cdc5 100644
--- a/defaultresets.command
+++ b/defaultresets.command
@@ -1,24 +1,43 @@
#!/bin/sh
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015
-# http://www.chromis.co.uk
-#
-# This file is part of Chromis POS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see
-#
+
DIRNAME=`dirname $0`
-CP=$DIRNAME/efaultresets.jar
-java -cp $CP uk.chromis.defaultresets.DefaultResets
+CP=$DIRNAME/chromispos.jar
+CP=$CP:$DIRNAME/changeiconset.jar
+CP=$CP:$DIRNAME/lib/
+CP=$CP:$DIRNAME/locales/
+CP=$CP:$DIRNAME/locales/Albanian
+CP=$CP:$DIRNAME/reports/American
+CP=$CP:$DIRNAME/locales/Arabic
+CP=$CP:$DIRNAME/locales/Argentinian
+CP=$CP:$DIRNAME/locales/Brazilian
+CP=$CP:$DIRNAME/locales/Croatian
+CP=$CP:$DIRNAME/locales/Dutch
+CP=$CP:$DIRNAME/locales/English
+CP=$CP:$DIRNAME/locales/Estonian
+CP=$CP:$DIRNAME/locales/French
+CP=$CP:$DIRNAME/locales/German
+CP=$CP:$DIRNAME/locales/Italian
+CP=$CP:$DIRNAME/locales/Mexican
+CP=$CP:$DIRNAME/locales/Portuguese
+CP=$CP:$DIRNAME/locales/Spanish
+CP=$CP:$DIRNAME/reports/
+
+# Select the library folder
+case "`uname -s`" in
+ Linux)
+ case "`uname -m`" in
+ i686) LIBRARYPATH=/lib/Linux/i686-unknown-linux-gnu;;
+ ia64) LIBRARYPATH=/lib/Linux/ia64-unknown-linux-gnu;;
+ x86_64|amd64) LIBRARYPATH=/lib/Linux/x86_64-unknown-linux-gnu;;
+ esac;;
+ SunOS)
+ case "`uname -m`" in
+ sparc32) LIBRARYPATH=/Solaris/sparc-solaris/sparc32-sun-solaris2.8;;
+ sparc64) LIBRARYPATH=/Solaris/sparc-solaris/sparc64-sun-solaris2.8;;
+ esac;;
+Darwin) LIBRARYPATH=/lib/Mac_OS_X;;
+CYGWIN*|MINGW32*) LIBRARYPATH=/lib/Windows/i368-mingw32;;
+esac
+
+java -cp $CP -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel -Djava.library.path=$DIRNAME$LIBRARYPATH -Ddirname.path=$DIRNAME/ uk.chromis.pos.forms.DefaultResets "$@"
diff --git a/defaultresets.jar b/defaultresets.jar
deleted file mode 100644
index 02a07306..00000000
Binary files a/defaultresets.jar and /dev/null differ
diff --git a/defaultresets.sh b/defaultresets.sh
index b7cf66e7..e1b17bb8 100644
--- a/defaultresets.sh
+++ b/defaultresets.sh
@@ -1,24 +1,41 @@
#!/bin/sh
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015
-# http://www.chromis.co.uk
-#
-# This file is part of Chromis POS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see
-#
+
DIRNAME=`dirname $0`
-CP=$DIRNAME/efaultresets.jar
-java -cp $CP uk.chromis.defaultresets.DefaultResets
+CP=$DIRNAME/chromispos.jar
+CP=$CP:$DIRNAME/reports/
+CP=$CP:$DIRNAME/locales/
+CP=$CP:$DIRNAME/locales/Albanian
+CP=$CP:$DIRNAME/reports/American
+CP=$CP:$DIRNAME/locales/Arabic
+CP=$CP:$DIRNAME/locales/Argentinian
+CP=$CP:$DIRNAME/locales/Brazilian
+CP=$CP:$DIRNAME/locales/Croatian
+CP=$CP:$DIRNAME/locales/Dutch
+CP=$CP:$DIRNAME/locales/English
+CP=$CP:$DIRNAME/locales/Estonian
+CP=$CP:$DIRNAME/locales/French
+CP=$CP:$DIRNAME/locales/German
+CP=$CP:$DIRNAME/locales/Italian
+CP=$CP:$DIRNAME/locales/Mexican
+CP=$CP:$DIRNAME/locales/Portuguese
+CP=$CP:$DIRNAME/locales/Spanish
+
+# Select the library folder
+case "`uname -s`" in
+ Linux)
+ case "`uname -m`" in
+ i686) LIBRARYPATH=/lib/Linux/i686-unknown-linux-gnu;;
+ ia64) LIBRARYPATH=/lib/Linux/ia64-unknown-linux-gnu;;
+ x86_64|amd64) LIBRARYPATH=/lib/Linux/x86_64-unknown-linux-gnu;;
+ esac;;
+ SunOS)
+ case "`uname -m`" in
+ sparc32) LIBRARYPATH=/Solaris/sparc-solaris/sparc32-sun-solaris2.8;;
+ sparc64) LIBRARYPATH=/Solaris/sparc-solaris/sparc64-sun-solaris2.8;;
+ esac;;
+Darwin) LIBRARYPATH=/lib/Mac_OS_X;;
+CYGWIN*|MINGW32*) LIBRARYPATH=/lib/Windows/i368-mingw32;;
+esac
+
+java -cp $CP uk.chromis.pos.forms.DefaultResets
diff --git a/error.wav b/error.wav
new file mode 100644
index 00000000..233de9cd
Binary files /dev/null and b/error.wav differ
diff --git a/lib/Mac_OS_X/README b/lib/Mac_OS_X/README
deleted file mode 100644
index 88038410..00000000
--- a/lib/Mac_OS_X/README
+++ /dev/null
@@ -1,4 +0,0 @@
-Wed Mar 1 12:05:10 MST 2006
-We forgot to update the Mac OS X binary. Previously, it was an old version
-(RXTX-2.1-7pre20). This has now been corrected.
-
diff --git a/lib/SteelCheckBox.jar b/lib/SteelCheckBox.jar
deleted file mode 100644
index e5e67ed5..00000000
Binary files a/lib/SteelCheckBox.jar and /dev/null differ
diff --git a/lib/ant-1.7.1.jar b/lib/ant-1.7.1.jar
new file mode 100644
index 00000000..70471777
Binary files /dev/null and b/lib/ant-1.7.1.jar differ
diff --git a/lib/iTextAsian.jar b/lib/iTextAsian.jar
new file mode 100644
index 00000000..3fa2157c
Binary files /dev/null and b/lib/iTextAsian.jar differ
diff --git a/lib/images.jar b/lib/images.jar
index 101bbd59..1fcdfd77 100644
Binary files a/lib/images.jar and b/lib/images.jar differ
diff --git a/lib/jasperreports-6.1.1.jar b/lib/jasperreports-6.1.1.jar
deleted file mode 100644
index b394fc45..00000000
Binary files a/lib/jasperreports-6.1.1.jar and /dev/null differ
diff --git a/lib/jasperreports-6.2.1.jar b/lib/jasperreports-6.2.1.jar
new file mode 100644
index 00000000..46892b7c
Binary files /dev/null and b/lib/jasperreports-6.2.1.jar differ
diff --git a/lib/jasperreports-fonts-6.1.1.jar b/lib/jasperreports-fonts-6.1.1.jar
deleted file mode 100644
index 40e97e14..00000000
Binary files a/lib/jasperreports-fonts-6.1.1.jar and /dev/null differ
diff --git a/lib/jasperreports-fonts-6.2.1.jar b/lib/jasperreports-fonts-6.2.1.jar
new file mode 100644
index 00000000..46218ecf
Binary files /dev/null and b/lib/jasperreports-fonts-6.2.1.jar differ
diff --git a/lib/jasperreports-functions-6.2.1.jar b/lib/jasperreports-functions-6.2.1.jar
new file mode 100644
index 00000000..48c10ba0
Binary files /dev/null and b/lib/jasperreports-functions-6.2.1.jar differ
diff --git a/lib/jmc_werp.jar b/lib/jmc_werp.jar
index 3285972b..627e8b1a 100644
Binary files a/lib/jmc_werp.jar and b/lib/jmc_werp.jar differ
diff --git a/lib/jrtxsant.jar b/lib/jrtxsant.jar
new file mode 100644
index 00000000..51091327
Binary files /dev/null and b/lib/jrtxsant.jar differ
diff --git a/lib/jxl-2.4.2.jar b/lib/jxl-2.4.2.jar
new file mode 100644
index 00000000..397e85f1
Binary files /dev/null and b/lib/jxl-2.4.2.jar differ
diff --git a/lib/liquibase.jar b/lib/liquibase.jar
index db429f4c..d44984fd 100644
Binary files a/lib/liquibase.jar and b/lib/liquibase.jar differ
diff --git a/lib/liquibase.new b/lib/liquibase.new
deleted file mode 100644
index d5033840..00000000
Binary files a/lib/liquibase.new and /dev/null differ
diff --git a/lib/nrjavaserial-3.11.0.jar b/lib/nrjavaserial-3.11.0.jar
new file mode 100644
index 00000000..dbeb2e7b
Binary files /dev/null and b/lib/nrjavaserial-3.11.0.jar differ
diff --git a/libwwww/AbsoluteLayout-RELEASE802.jar b/libwwww/AbsoluteLayout-RELEASE802.jar
new file mode 100644
index 00000000..e2b988d0
Binary files /dev/null and b/libwwww/AbsoluteLayout-RELEASE802.jar differ
diff --git a/libwwww/Linux/i686-unknown-linux-gnu/librxtxParallel.so b/libwwww/Linux/i686-unknown-linux-gnu/librxtxParallel.so
new file mode 100644
index 00000000..476313f5
Binary files /dev/null and b/libwwww/Linux/i686-unknown-linux-gnu/librxtxParallel.so differ
diff --git a/libwwww/Linux/i686-unknown-linux-gnu/librxtxSerial.so b/libwwww/Linux/i686-unknown-linux-gnu/librxtxSerial.so
new file mode 100644
index 00000000..e60c5e67
Binary files /dev/null and b/libwwww/Linux/i686-unknown-linux-gnu/librxtxSerial.so differ
diff --git a/libwwww/Linux/ia64-unkown-linux-gnu/librxtxSerial.so b/libwwww/Linux/ia64-unkown-linux-gnu/librxtxSerial.so
new file mode 100644
index 00000000..916db004
Binary files /dev/null and b/libwwww/Linux/ia64-unkown-linux-gnu/librxtxSerial.so differ
diff --git a/libwwww/Linux/x86_64-unknown-linux-gnu/librxtxSerial.so b/libwwww/Linux/x86_64-unknown-linux-gnu/librxtxSerial.so
new file mode 100644
index 00000000..eba4e0e9
Binary files /dev/null and b/libwwww/Linux/x86_64-unknown-linux-gnu/librxtxSerial.so differ
diff --git a/libwwww/Mac_OS_X/librxtxSerial.jnilib b/libwwww/Mac_OS_X/librxtxSerial.jnilib
new file mode 100644
index 00000000..2d3f20d6
Binary files /dev/null and b/libwwww/Mac_OS_X/librxtxSerial.jnilib differ
diff --git a/libwwww/RXTXcomm.jar b/libwwww/RXTXcomm.jar
new file mode 100644
index 00000000..e1e75034
Binary files /dev/null and b/libwwww/RXTXcomm.jar differ
diff --git a/libwwww/Solaris/sparc-solaris/sparc32-sun-solaris2.8/librxtxSerial-2.1-7.so b/libwwww/Solaris/sparc-solaris/sparc32-sun-solaris2.8/librxtxSerial-2.1-7.so
new file mode 100644
index 00000000..24d21909
Binary files /dev/null and b/libwwww/Solaris/sparc-solaris/sparc32-sun-solaris2.8/librxtxSerial-2.1-7.so differ
diff --git a/libwwww/Solaris/sparc-solaris/sparc32-sun-solaris2.8/librxtxSerial.so b/libwwww/Solaris/sparc-solaris/sparc32-sun-solaris2.8/librxtxSerial.so
new file mode 100644
index 00000000..24d21909
Binary files /dev/null and b/libwwww/Solaris/sparc-solaris/sparc32-sun-solaris2.8/librxtxSerial.so differ
diff --git a/libwwww/Solaris/sparc-solaris/sparc64-sun-solaris2.8/librxtxSerial-2.1-7.so b/libwwww/Solaris/sparc-solaris/sparc64-sun-solaris2.8/librxtxSerial-2.1-7.so
new file mode 100644
index 00000000..e38d78ec
Binary files /dev/null and b/libwwww/Solaris/sparc-solaris/sparc64-sun-solaris2.8/librxtxSerial-2.1-7.so differ
diff --git a/libwwww/Solaris/sparc-solaris/sparc64-sun-solaris2.8/librxtxSerial.so b/libwwww/Solaris/sparc-solaris/sparc64-sun-solaris2.8/librxtxSerial.so
new file mode 100644
index 00000000..e38d78ec
Binary files /dev/null and b/libwwww/Solaris/sparc-solaris/sparc64-sun-solaris2.8/librxtxSerial.so differ
diff --git a/libwwww/Sync.jar b/libwwww/Sync.jar
new file mode 100644
index 00000000..81cfa894
Binary files /dev/null and b/libwwww/Sync.jar differ
diff --git a/libwwww/Windows/gnu.io.rxtx.properties b/libwwww/Windows/gnu.io.rxtx.properties
new file mode 100644
index 00000000..b4e5ef37
Binary files /dev/null and b/libwwww/Windows/gnu.io.rxtx.properties differ
diff --git a/libwwww/Windows/i368-mingw32/README b/libwwww/Windows/i368-mingw32/README
new file mode 100644
index 00000000..2b2ea6c6
--- /dev/null
+++ b/libwwww/Windows/i368-mingw32/README
@@ -0,0 +1,3 @@
+Wed Mar 1 12:01:05 MST 2006
+rxtxSerial.dll had to be recomopiled to link in missing native methods.
+
diff --git a/libwwww/Windows/readme.txt b/libwwww/Windows/readme.txt
new file mode 100644
index 00000000..10e81d6f
--- /dev/null
+++ b/libwwww/Windows/readme.txt
@@ -0,0 +1,2 @@
+To support virtual serial ports COM9-12 on Windows, the file gnu.io.rxtx.properties needs to be copied into your Java Runtime Environment:
+ {JRE-PATH}/lib/ext/gnu.io.rxtx.properties
diff --git a/libwwww/activation-1.0.2.jar b/libwwww/activation-1.0.2.jar
new file mode 100644
index 00000000..8cbef16f
Binary files /dev/null and b/libwwww/activation-1.0.2.jar differ
diff --git a/lib/ant-1.6.5.jar b/libwwww/ant-1.6.5.jar
similarity index 100%
rename from lib/ant-1.6.5.jar
rename to libwwww/ant-1.6.5.jar
diff --git a/libwwww/aopalliance-1.0.jar b/libwwww/aopalliance-1.0.jar
new file mode 100644
index 00000000..578b1a0c
Binary files /dev/null and b/libwwww/aopalliance-1.0.jar differ
diff --git a/lib/asm-all-2.2.3.jar b/libwwww/asm-all-2.2.3.jar
similarity index 100%
rename from lib/asm-all-2.2.3.jar
rename to libwwww/asm-all-2.2.3.jar
diff --git a/lib/avalon-framework-impl-4.2.0.jar b/libwwww/avalon-framework-impl-4.2.0.jar
similarity index 100%
rename from lib/avalon-framework-impl-4.2.0.jar
rename to libwwww/avalon-framework-impl-4.2.0.jar
diff --git a/libwwww/axis-1.4.jar b/libwwww/axis-1.4.jar
new file mode 100644
index 00000000..20b09a59
Binary files /dev/null and b/libwwww/axis-1.4.jar differ
diff --git a/libwwww/axis-jaxrpc-1.4.jar b/libwwww/axis-jaxrpc-1.4.jar
new file mode 100644
index 00000000..a2c13d9a
Binary files /dev/null and b/libwwww/axis-jaxrpc-1.4.jar differ
diff --git a/libwwww/axis-wsdl4j-1.5.1.jar b/libwwww/axis-wsdl4j-1.5.1.jar
new file mode 100644
index 00000000..c6254ee6
Binary files /dev/null and b/libwwww/axis-wsdl4j-1.5.1.jar differ
diff --git a/libwwww/backport-util-concurrent-3.1.jar b/libwwww/backport-util-concurrent-3.1.jar
new file mode 100644
index 00000000..3a4c2797
Binary files /dev/null and b/libwwww/backport-util-concurrent-3.1.jar differ
diff --git a/libwwww/barcode4j-2.1.jar b/libwwww/barcode4j-2.1.jar
new file mode 100644
index 00000000..09ac7147
Binary files /dev/null and b/libwwww/barcode4j-2.1.jar differ
diff --git a/libwwww/batik-awt-util-1.6.jar b/libwwww/batik-awt-util-1.6.jar
new file mode 100644
index 00000000..b62ac158
Binary files /dev/null and b/libwwww/batik-awt-util-1.6.jar differ
diff --git a/libwwww/batik-bridge-1.6.jar b/libwwww/batik-bridge-1.6.jar
new file mode 100644
index 00000000..f73327a8
Binary files /dev/null and b/libwwww/batik-bridge-1.6.jar differ
diff --git a/libwwww/batik-css-1.6.jar b/libwwww/batik-css-1.6.jar
new file mode 100644
index 00000000..0835ffd1
Binary files /dev/null and b/libwwww/batik-css-1.6.jar differ
diff --git a/libwwww/batik-dom-1.6.jar b/libwwww/batik-dom-1.6.jar
new file mode 100644
index 00000000..bf144ab0
Binary files /dev/null and b/libwwww/batik-dom-1.6.jar differ
diff --git a/libwwww/batik-ext-1.6.jar b/libwwww/batik-ext-1.6.jar
new file mode 100644
index 00000000..e85a2701
Binary files /dev/null and b/libwwww/batik-ext-1.6.jar differ
diff --git a/libwwww/batik-gvt-1.6.jar b/libwwww/batik-gvt-1.6.jar
new file mode 100644
index 00000000..d768038a
Binary files /dev/null and b/libwwww/batik-gvt-1.6.jar differ
diff --git a/libwwww/batik-parser-1.6.jar b/libwwww/batik-parser-1.6.jar
new file mode 100644
index 00000000..a1ba6eae
Binary files /dev/null and b/libwwww/batik-parser-1.6.jar differ
diff --git a/libwwww/batik-script-1.6.jar b/libwwww/batik-script-1.6.jar
new file mode 100644
index 00000000..aec7be22
Binary files /dev/null and b/libwwww/batik-script-1.6.jar differ
diff --git a/libwwww/batik-svg-dom-1.6.jar b/libwwww/batik-svg-dom-1.6.jar
new file mode 100644
index 00000000..c8970fbb
Binary files /dev/null and b/libwwww/batik-svg-dom-1.6.jar differ
diff --git a/libwwww/batik-svggen-1.6.jar b/libwwww/batik-svggen-1.6.jar
new file mode 100644
index 00000000..819f2da0
Binary files /dev/null and b/libwwww/batik-svggen-1.6.jar differ
diff --git a/libwwww/batik-util-1.6.jar b/libwwww/batik-util-1.6.jar
new file mode 100644
index 00000000..7550b480
Binary files /dev/null and b/libwwww/batik-util-1.6.jar differ
diff --git a/libwwww/batik-xml-1.6.jar b/libwwww/batik-xml-1.6.jar
new file mode 100644
index 00000000..1b915a05
Binary files /dev/null and b/libwwww/batik-xml-1.6.jar differ
diff --git a/libwwww/bcmail-jdk14-138.jar b/libwwww/bcmail-jdk14-138.jar
new file mode 100644
index 00000000..ab606b5f
Binary files /dev/null and b/libwwww/bcmail-jdk14-138.jar differ
diff --git a/libwwww/bcpg-jdk15on-1.50.jar b/libwwww/bcpg-jdk15on-1.50.jar
new file mode 100644
index 00000000..3054a89a
Binary files /dev/null and b/libwwww/bcpg-jdk15on-1.50.jar differ
diff --git a/lib/bcprov-jdk14-1.38.jar b/libwwww/bcprov-jdk14-1.38.jar
similarity index 100%
rename from lib/bcprov-jdk14-1.38.jar
rename to libwwww/bcprov-jdk14-1.38.jar
diff --git a/libwwww/bcprov-jdk15on-1.50.jar b/libwwww/bcprov-jdk15on-1.50.jar
new file mode 100644
index 00000000..d4b510d7
Binary files /dev/null and b/libwwww/bcprov-jdk15on-1.50.jar differ
diff --git a/libwwww/bctsp-jdk14-1.38.jar b/libwwww/bctsp-jdk14-1.38.jar
new file mode 100644
index 00000000..058fde1e
Binary files /dev/null and b/libwwww/bctsp-jdk14-1.38.jar differ
diff --git a/libwwww/bluecove-gpl-2.1.0.jar b/libwwww/bluecove-gpl-2.1.0.jar
new file mode 100644
index 00000000..43f48636
Binary files /dev/null and b/libwwww/bluecove-gpl-2.1.0.jar differ
diff --git a/libwwww/bsh-2.0b5.jar b/libwwww/bsh-2.0b5.jar
new file mode 100644
index 00000000..e3265100
Binary files /dev/null and b/libwwww/bsh-2.0b5.jar differ
diff --git a/libwwww/colorpicker.jar b/libwwww/colorpicker.jar
new file mode 100644
index 00000000..3d1647c3
Binary files /dev/null and b/libwwww/colorpicker.jar differ
diff --git a/libwwww/commons-beanutils-1.9.2.jar b/libwwww/commons-beanutils-1.9.2.jar
new file mode 100644
index 00000000..7d075edf
Binary files /dev/null and b/libwwww/commons-beanutils-1.9.2.jar differ
diff --git a/libwwww/commons-codec-1.10.jar b/libwwww/commons-codec-1.10.jar
new file mode 100644
index 00000000..1d7417c4
Binary files /dev/null and b/libwwww/commons-codec-1.10.jar differ
diff --git a/libwwww/commons-collections-3.2.1.jar b/libwwww/commons-collections-3.2.1.jar
new file mode 100644
index 00000000..c35fa1fe
Binary files /dev/null and b/libwwww/commons-collections-3.2.1.jar differ
diff --git a/libwwww/commons-digester-2.1.jar b/libwwww/commons-digester-2.1.jar
new file mode 100644
index 00000000..a07cfa8e
Binary files /dev/null and b/libwwww/commons-digester-2.1.jar differ
diff --git a/libwwww/commons-discovery-0.5.jar b/libwwww/commons-discovery-0.5.jar
new file mode 100644
index 00000000..5d52da42
Binary files /dev/null and b/libwwww/commons-discovery-0.5.jar differ
diff --git a/libwwww/commons-io-2.4.jar b/libwwww/commons-io-2.4.jar
new file mode 100644
index 00000000..90035a4f
Binary files /dev/null and b/libwwww/commons-io-2.4.jar differ
diff --git a/libwwww/commons-lang-2.6.jar b/libwwww/commons-lang-2.6.jar
new file mode 100644
index 00000000..98467d3a
Binary files /dev/null and b/libwwww/commons-lang-2.6.jar differ
diff --git a/libwwww/commons-logging-1.1.1.jar b/libwwww/commons-logging-1.1.1.jar
new file mode 100644
index 00000000..1deef144
Binary files /dev/null and b/libwwww/commons-logging-1.1.1.jar differ
diff --git a/libwwww/core-3.2.1.jar b/libwwww/core-3.2.1.jar
new file mode 100644
index 00000000..05d7cda7
Binary files /dev/null and b/libwwww/core-3.2.1.jar differ
diff --git a/libwwww/derby-10.10.2.0.jar b/libwwww/derby-10.10.2.0.jar
new file mode 100644
index 00000000..a4d56f0d
Binary files /dev/null and b/libwwww/derby-10.10.2.0.jar differ
diff --git a/libwwww/ecj-4.4.2.jar b/libwwww/ecj-4.4.2.jar
new file mode 100644
index 00000000..d9411b3a
Binary files /dev/null and b/libwwww/ecj-4.4.2.jar differ
diff --git a/libwwww/gson-2.2.2.jar b/libwwww/gson-2.2.2.jar
new file mode 100644
index 00000000..9adc66fd
Binary files /dev/null and b/libwwww/gson-2.2.2.jar differ
diff --git a/libwwww/hamcrest-core-1.3.jar b/libwwww/hamcrest-core-1.3.jar
new file mode 100644
index 00000000..9d5fe16e
Binary files /dev/null and b/libwwww/hamcrest-core-1.3.jar differ
diff --git a/libwwww/httpclient-4.0-alpha4.jar b/libwwww/httpclient-4.0-alpha4.jar
new file mode 100644
index 00000000..c32366dc
Binary files /dev/null and b/libwwww/httpclient-4.0-alpha4.jar differ
diff --git a/libwwww/httpcore-4.0-beta1.jar b/libwwww/httpcore-4.0-beta1.jar
new file mode 100644
index 00000000..fbe79343
Binary files /dev/null and b/libwwww/httpcore-4.0-beta1.jar differ
diff --git a/libwwww/images.jar b/libwwww/images.jar
new file mode 100644
index 00000000..1fcdfd77
Binary files /dev/null and b/libwwww/images.jar differ
diff --git a/libwwww/itext-2.1.7.jar b/libwwww/itext-2.1.7.jar
new file mode 100644
index 00000000..3f2c1882
Binary files /dev/null and b/libwwww/itext-2.1.7.jar differ
diff --git a/lib/jasper-compiler-jdt-5.5.23.jar b/libwwww/jasper-compiler-jdt-5.5.23.jar
similarity index 100%
rename from lib/jasper-compiler-jdt-5.5.23.jar
rename to libwwww/jasper-compiler-jdt-5.5.23.jar
diff --git a/libwwww/jasperreports-6.2.1.jar b/libwwww/jasperreports-6.2.1.jar
new file mode 100644
index 00000000..46892b7c
Binary files /dev/null and b/libwwww/jasperreports-6.2.1.jar differ
diff --git a/libwwww/jasperreports-fonts-6.2.1.jar b/libwwww/jasperreports-fonts-6.2.1.jar
new file mode 100644
index 00000000..46218ecf
Binary files /dev/null and b/libwwww/jasperreports-fonts-6.2.1.jar differ
diff --git a/libwwww/jasypt-1.9.1.jar b/libwwww/jasypt-1.9.1.jar
new file mode 100644
index 00000000..a72721cd
Binary files /dev/null and b/libwwww/jasypt-1.9.1.jar differ
diff --git a/libwwww/javacsv-2.0.jar b/libwwww/javacsv-2.0.jar
new file mode 100644
index 00000000..125c4d02
Binary files /dev/null and b/libwwww/javacsv-2.0.jar differ
diff --git a/libwwww/javatuples-1.2.jar b/libwwww/javatuples-1.2.jar
new file mode 100644
index 00000000..4c7c2c58
Binary files /dev/null and b/libwwww/javatuples-1.2.jar differ
diff --git a/libwwww/javax.inject-1.jar b/libwwww/javax.inject-1.jar
new file mode 100644
index 00000000..b2a9d0bf
Binary files /dev/null and b/libwwww/javax.inject-1.jar differ
diff --git a/libwwww/jcommon-1.0.23.jar b/libwwww/jcommon-1.0.23.jar
new file mode 100644
index 00000000..4dbb094a
Binary files /dev/null and b/libwwww/jcommon-1.0.23.jar differ
diff --git a/libwwww/jdbm-1.0.jar b/libwwww/jdbm-1.0.jar
new file mode 100644
index 00000000..2b63ae59
Binary files /dev/null and b/libwwww/jdbm-1.0.jar differ
diff --git a/libwwww/jdom-1.1.3.jar b/libwwww/jdom-1.1.3.jar
new file mode 100644
index 00000000..a2877278
Binary files /dev/null and b/libwwww/jdom-1.1.3.jar differ
diff --git a/libwwww/je-5.0.73.jar b/libwwww/je-5.0.73.jar
new file mode 100644
index 00000000..e0feaa6e
Binary files /dev/null and b/libwwww/je-5.0.73.jar differ
diff --git a/libwwww/jersey-bundle-1.9-ea04.jar b/libwwww/jersey-bundle-1.9-ea04.jar
new file mode 100644
index 00000000..004da48b
Binary files /dev/null and b/libwwww/jersey-bundle-1.9-ea04.jar differ
diff --git a/libwwww/jersey-core-1.15.jar b/libwwww/jersey-core-1.15.jar
new file mode 100644
index 00000000..0087e077
Binary files /dev/null and b/libwwww/jersey-core-1.15.jar differ
diff --git a/libwwww/jersey-multipart-1.15.jar b/libwwww/jersey-multipart-1.15.jar
new file mode 100644
index 00000000..9c8d8100
Binary files /dev/null and b/libwwww/jersey-multipart-1.15.jar differ
diff --git a/libwwww/jfreechart-1.0.19.jar b/libwwww/jfreechart-1.0.19.jar
new file mode 100644
index 00000000..23bbbed8
Binary files /dev/null and b/libwwww/jfreechart-1.0.19.jar differ
diff --git a/libwwww/jline-1.0.jar b/libwwww/jline-1.0.jar
new file mode 100644
index 00000000..d2592796
Binary files /dev/null and b/libwwww/jline-1.0.jar differ
diff --git a/libwwww/jmc_werp.jar b/libwwww/jmc_werp.jar
new file mode 100644
index 00000000..cda34887
Binary files /dev/null and b/libwwww/jmc_werp.jar differ
diff --git a/libwwww/joda-time-2.8.2.jar b/libwwww/joda-time-2.8.2.jar
new file mode 100644
index 00000000..05960ff1
Binary files /dev/null and b/libwwww/joda-time-2.8.2.jar differ
diff --git a/libwwww/jpos-1.13.jar b/libwwww/jpos-1.13.jar
new file mode 100644
index 00000000..de02c426
Binary files /dev/null and b/libwwww/jpos-1.13.jar differ
diff --git a/libwwww/js-1.5R4.1.jar b/libwwww/js-1.5R4.1.jar
new file mode 100644
index 00000000..f92e9f9c
Binary files /dev/null and b/libwwww/js-1.5R4.1.jar differ
diff --git a/libwwww/json-simple-1.1.1.jar b/libwwww/json-simple-1.1.1.jar
new file mode 100644
index 00000000..dfd5856d
Binary files /dev/null and b/libwwww/json-simple-1.1.1.jar differ
diff --git a/libwwww/jsr311-api-1.1.1.jar b/libwwww/jsr311-api-1.1.1.jar
new file mode 100644
index 00000000..ec8bc818
Binary files /dev/null and b/libwwww/jsr311-api-1.1.1.jar differ
diff --git a/libwwww/junit-4.11.jar b/libwwww/junit-4.11.jar
new file mode 100644
index 00000000..aaf74448
Binary files /dev/null and b/libwwww/junit-4.11.jar differ
diff --git a/libwwww/jxl-2.4.2.jar b/libwwww/jxl-2.4.2.jar
new file mode 100644
index 00000000..397e85f1
Binary files /dev/null and b/libwwww/jxl-2.4.2.jar differ
diff --git a/libwwww/kxml2-2.3.0.jar b/libwwww/kxml2-2.3.0.jar
new file mode 100644
index 00000000..64709522
Binary files /dev/null and b/libwwww/kxml2-2.3.0.jar differ
diff --git a/libwwww/lablib-checkboxtree-4.0.jar b/libwwww/lablib-checkboxtree-4.0.jar
new file mode 100644
index 00000000..69675508
Binary files /dev/null and b/libwwww/lablib-checkboxtree-4.0.jar differ
diff --git a/libwwww/laf-plugin-7.2.1.jar b/libwwww/laf-plugin-7.2.1.jar
new file mode 100644
index 00000000..82b02527
Binary files /dev/null and b/libwwww/laf-plugin-7.2.1.jar differ
diff --git a/libwwww/laf-widget-7.2.1.jar b/libwwww/laf-widget-7.2.1.jar
new file mode 100644
index 00000000..0371eb1b
Binary files /dev/null and b/libwwww/laf-widget-7.2.1.jar differ
diff --git a/libwwww/liquibase.jar b/libwwww/liquibase.jar
new file mode 100644
index 00000000..d44984fd
Binary files /dev/null and b/libwwww/liquibase.jar differ
diff --git a/libwwww/lite-2.2.3.jar b/libwwww/lite-2.2.3.jar
new file mode 100644
index 00000000..3d2401c1
Binary files /dev/null and b/libwwww/lite-2.2.3.jar differ
diff --git a/libwwww/log4j-1.2.17.jar b/libwwww/log4j-1.2.17.jar
new file mode 100644
index 00000000..1d425cf7
Binary files /dev/null and b/libwwww/log4j-1.2.17.jar differ
diff --git a/libwwww/lucene-analyzers-common-4.5.1.jar b/libwwww/lucene-analyzers-common-4.5.1.jar
new file mode 100644
index 00000000..b44fae35
Binary files /dev/null and b/libwwww/lucene-analyzers-common-4.5.1.jar differ
diff --git a/libwwww/lucene-core-4.5.1.jar b/libwwww/lucene-core-4.5.1.jar
new file mode 100644
index 00000000..b452cdd9
Binary files /dev/null and b/libwwww/lucene-core-4.5.1.jar differ
diff --git a/libwwww/lucene-queries-4.5.1.jar b/libwwww/lucene-queries-4.5.1.jar
new file mode 100644
index 00000000..c230f02e
Binary files /dev/null and b/libwwww/lucene-queries-4.5.1.jar differ
diff --git a/libwwww/lucene-queryparser-4.5.1.jar b/libwwww/lucene-queryparser-4.5.1.jar
new file mode 100644
index 00000000..6d53d474
Binary files /dev/null and b/libwwww/lucene-queryparser-4.5.1.jar differ
diff --git a/libwwww/lucene-sandbox-4.5.1.jar b/libwwww/lucene-sandbox-4.5.1.jar
new file mode 100644
index 00000000..7301af29
Binary files /dev/null and b/libwwww/lucene-sandbox-4.5.1.jar differ
diff --git a/libwwww/mail-1.4.7.jar b/libwwww/mail-1.4.7.jar
new file mode 100644
index 00000000..236fcdb6
Binary files /dev/null and b/libwwww/mail-1.4.7.jar differ
diff --git a/libwwww/miglayout-4.0.jar b/libwwww/miglayout-4.0.jar
new file mode 100644
index 00000000..653b85c6
Binary files /dev/null and b/libwwww/miglayout-4.0.jar differ
diff --git a/libwwww/mimepull-1.6.jar b/libwwww/mimepull-1.6.jar
new file mode 100644
index 00000000..55fd9dde
Binary files /dev/null and b/libwwww/mimepull-1.6.jar differ
diff --git a/libwwww/mysql-connector-java-5.1.36.jar b/libwwww/mysql-connector-java-5.1.36.jar
new file mode 100644
index 00000000..a839c3dd
Binary files /dev/null and b/libwwww/mysql-connector-java-5.1.36.jar differ
diff --git a/libwwww/nrRXTX/nrjavaserial-3.11.0.jar b/libwwww/nrRXTX/nrjavaserial-3.11.0.jar
new file mode 100644
index 00000000..dbeb2e7b
Binary files /dev/null and b/libwwww/nrRXTX/nrjavaserial-3.11.0.jar differ
diff --git a/libwwww/olap4j-0.9.7.309-JS-3.jar b/libwwww/olap4j-0.9.7.309-JS-3.jar
new file mode 100644
index 00000000..66b5f4d8
Binary files /dev/null and b/libwwww/olap4j-0.9.7.309-JS-3.jar differ
diff --git a/libwwww/org.eclipse.jdt.core-3.10.0.jar b/libwwww/org.eclipse.jdt.core-3.10.0.jar
new file mode 100644
index 00000000..d396c3c9
Binary files /dev/null and b/libwwww/org.eclipse.jdt.core-3.10.0.jar differ
diff --git a/libwwww/org.osgi.core-4.3.1.jar b/libwwww/org.osgi.core-4.3.1.jar
new file mode 100644
index 00000000..d280bd9e
Binary files /dev/null and b/libwwww/org.osgi.core-4.3.1.jar differ
diff --git a/libwwww/oro-2.0.8.jar b/libwwww/oro-2.0.8.jar
new file mode 100644
index 00000000..23488d26
Binary files /dev/null and b/libwwww/oro-2.0.8.jar differ
diff --git a/libwwww/poi-3.12.jar b/libwwww/poi-3.12.jar
new file mode 100644
index 00000000..a4f42634
Binary files /dev/null and b/libwwww/poi-3.12.jar differ
diff --git a/libwwww/postgresql-9.4-1201-jdbc4.jar b/libwwww/postgresql-9.4-1201-jdbc4.jar
new file mode 100644
index 00000000..e028f350
Binary files /dev/null and b/libwwww/postgresql-9.4-1201-jdbc4.jar differ
diff --git a/libwwww/saaj-api-1.3.5.jar b/libwwww/saaj-api-1.3.5.jar
new file mode 100644
index 00000000..01bb0eee
Binary files /dev/null and b/libwwww/saaj-api-1.3.5.jar differ
diff --git a/libwwww/slf4j-api-1.6.2.jar b/libwwww/slf4j-api-1.6.2.jar
new file mode 100644
index 00000000..621f5149
Binary files /dev/null and b/libwwww/slf4j-api-1.6.2.jar differ
diff --git a/libwwww/slf4j-log4j12-1.6.2.jar b/libwwww/slf4j-log4j12-1.6.2.jar
new file mode 100644
index 00000000..72e8e57b
Binary files /dev/null and b/libwwww/slf4j-log4j12-1.6.2.jar differ
diff --git a/libwwww/stax-api-1.0-2.jar b/libwwww/stax-api-1.0-2.jar
new file mode 100644
index 00000000..015169dc
Binary files /dev/null and b/libwwww/stax-api-1.0-2.jar differ
diff --git a/libwwww/substance-6.0.jar b/libwwww/substance-6.0.jar
new file mode 100644
index 00000000..29e7ab88
Binary files /dev/null and b/libwwww/substance-6.0.jar differ
diff --git a/libwwww/substance-extras.jar b/libwwww/substance-extras.jar
new file mode 100644
index 00000000..0216b1ae
Binary files /dev/null and b/libwwww/substance-extras.jar differ
diff --git a/libwwww/substance-swingx-7.3.jar b/libwwww/substance-swingx-7.3.jar
new file mode 100644
index 00000000..4d30bedc
Binary files /dev/null and b/libwwww/substance-swingx-7.3.jar differ
diff --git a/libwwww/substance.jar b/libwwww/substance.jar
new file mode 100644
index 00000000..6048aad2
Binary files /dev/null and b/libwwww/substance.jar differ
diff --git a/libwwww/swing-layout-1.0.3.jar b/libwwww/swing-layout-1.0.3.jar
new file mode 100644
index 00000000..5353286f
Binary files /dev/null and b/libwwww/swing-layout-1.0.3.jar differ
diff --git a/libwwww/swingx-action-1.6.3.jar b/libwwww/swingx-action-1.6.3.jar
new file mode 100644
index 00000000..8c95ef71
Binary files /dev/null and b/libwwww/swingx-action-1.6.3.jar differ
diff --git a/libwwww/swingx-all-1.6.5-1.jar b/libwwww/swingx-all-1.6.5-1.jar
new file mode 100644
index 00000000..29657e85
Binary files /dev/null and b/libwwww/swingx-all-1.6.5-1.jar differ
diff --git a/libwwww/swingx-autocomplete-1.6.3.jar b/libwwww/swingx-autocomplete-1.6.3.jar
new file mode 100644
index 00000000..697c1065
Binary files /dev/null and b/libwwww/swingx-autocomplete-1.6.3.jar differ
diff --git a/libwwww/swingx-common-1.6.3.jar b/libwwww/swingx-common-1.6.3.jar
new file mode 100644
index 00000000..8accf51e
Binary files /dev/null and b/libwwww/swingx-common-1.6.3.jar differ
diff --git a/libwwww/swingx-core-1.6.3.jar b/libwwww/swingx-core-1.6.3.jar
new file mode 100644
index 00000000..8163bb5d
Binary files /dev/null and b/libwwww/swingx-core-1.6.3.jar differ
diff --git a/libwwww/swingx-painters-1.6.3.jar b/libwwww/swingx-painters-1.6.3.jar
new file mode 100644
index 00000000..39009ff1
Binary files /dev/null and b/libwwww/swingx-painters-1.6.3.jar differ
diff --git a/libwwww/swingx-plaf-1.6.3.jar b/libwwww/swingx-plaf-1.6.3.jar
new file mode 100644
index 00000000..f422f389
Binary files /dev/null and b/libwwww/swingx-plaf-1.6.3.jar differ
diff --git a/libwwww/trident-1.2.jar b/libwwww/trident-1.2.jar
new file mode 100644
index 00000000..fcefb2e6
Binary files /dev/null and b/libwwww/trident-1.2.jar differ
diff --git a/libwwww/trident-7.2.1-swing.jar b/libwwww/trident-7.2.1-swing.jar
new file mode 100644
index 00000000..70223163
Binary files /dev/null and b/libwwww/trident-7.2.1-swing.jar differ
diff --git a/libwwww/velocity-1.7.jar b/libwwww/velocity-1.7.jar
new file mode 100644
index 00000000..ae936d3d
Binary files /dev/null and b/libwwww/velocity-1.7.jar differ
diff --git a/libwwww/xmlParserAPIs-2.0.2.jar b/libwwww/xmlParserAPIs-2.0.2.jar
new file mode 100644
index 00000000..eae78043
Binary files /dev/null and b/libwwww/xmlParserAPIs-2.0.2.jar differ
diff --git a/libwwww/zxing-2.1.jar b/libwwww/zxing-2.1.jar
new file mode 100644
index 00000000..c283af7e
Binary files /dev/null and b/libwwww/zxing-2.1.jar differ
diff --git a/locales/Albanian/reports/uk/chromis/reports/badprice_messages_al_SQ.properties b/locales/Albanian/badprice_messages_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/badprice_messages_al_SQ.properties
rename to locales/Albanian/badprice_messages_al_SQ.properties
index 5d162e64..7228fb48 100644
--- a/locales/Albanian/reports/uk/chromis/reports/badprice_messages_al_SQ.properties
+++ b/locales/Albanian/badprice_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/cashflow_messages_al_SQ.properties b/locales/Albanian/cashflow_messages_al_SQ.properties
similarity index 93%
rename from locales/Albanian/reports/uk/chromis/reports/cashflow_messages_al_SQ.properties
rename to locales/Albanian/cashflow_messages_al_SQ.properties
index da10f637..6eb5c5e2 100644
--- a/locales/Albanian/reports/uk/chromis/reports/cashflow_messages_al_SQ.properties
+++ b/locales/Albanian/cashflow_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/cashregisterlog_messages_al_SQ.properties b/locales/Albanian/cashregisterlog_messages_al_SQ.properties
similarity index 94%
rename from locales/Albanian/reports/uk/chromis/reports/cashregisterlog_messages_al_SQ.properties
rename to locales/Albanian/cashregisterlog_messages_al_SQ.properties
index dbc23731..a214c0cb 100644
--- a/locales/Albanian/reports/uk/chromis/reports/cashregisterlog_messages_al_SQ.properties
+++ b/locales/Albanian/cashregisterlog_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/categorysales_messages_al_SQ.properties b/locales/Albanian/categorysales_messages_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/categorysales_messages_al_SQ.properties
rename to locales/Albanian/categorysales_messages_al_SQ.properties
index 47e00cbd..38f034c8 100644
--- a/locales/Albanian/reports/uk/chromis/reports/categorysales_messages_al_SQ.properties
+++ b/locales/Albanian/categorysales_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/chartsales_messages_al_SQ.properties b/locales/Albanian/chartsales_messages_al_SQ.properties
similarity index 90%
rename from locales/Albanian/reports/uk/chromis/reports/chartsales_messages_al_SQ.properties
rename to locales/Albanian/chartsales_messages_al_SQ.properties
index fca9f51a..005194f4 100644
--- a/locales/Albanian/reports/uk/chromis/reports/chartsales_messages_al_SQ.properties
+++ b/locales/Albanian/chartsales_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/closedpos_messages_al_SQ.properties b/locales/Albanian/closedpos_messages_al_SQ.properties
similarity index 93%
rename from locales/Albanian/reports/uk/chromis/reports/closedpos_messages_al_SQ.properties
rename to locales/Albanian/closedpos_messages_al_SQ.properties
index 7310ca8f..9d47fd78 100644
--- a/locales/Albanian/reports/uk/chromis/reports/closedpos_messages_al_SQ.properties
+++ b/locales/Albanian/closedpos_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -30,6 +30,7 @@ label.terminaltotal=Terminal Total
label.subtotal=Subtotal
label.period=Periudha:
label.printed=Printuar
+transpayment.bank=Banka
transpayment.cash=Para te gatshme
transpayment.magcard=Card
transpayment.cashrefund=Rimburesim
diff --git a/locales/Albanian/reports/uk/chromis/reports/closedproducts_messages_al_SQ.properties b/locales/Albanian/closedproducts_messages_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/closedproducts_messages_al_SQ.properties
rename to locales/Albanian/closedproducts_messages_al_SQ.properties
index 452038e6..b36b8472 100644
--- a/locales/Albanian/reports/uk/chromis/reports/closedproducts_messages_al_SQ.properties
+++ b/locales/Albanian/closedproducts_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/customers_messages_al_SQ.properties b/locales/Albanian/customers_messages_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/customers_messages_al_SQ.properties
rename to locales/Albanian/customers_messages_al_SQ.properties
index a0d82f06..c147a50c 100644
--- a/locales/Albanian/reports/uk/chromis/reports/customers_messages_al_SQ.properties
+++ b/locales/Albanian/customers_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/customersdiary_messages_al_SQ.properties b/locales/Albanian/customersdiary_messages_al_SQ.properties
similarity index 90%
rename from locales/Albanian/reports/uk/chromis/reports/customersdiary_messages_al_SQ.properties
rename to locales/Albanian/customersdiary_messages_al_SQ.properties
index 524ebb27..a9ab3e36 100644
--- a/locales/Albanian/reports/uk/chromis/reports/customersdiary_messages_al_SQ.properties
+++ b/locales/Albanian/customersdiary_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/dailypresence_messages_al_SQ.properties b/locales/Albanian/dailypresence_messages_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/dailypresence_messages_al_SQ.properties
rename to locales/Albanian/dailypresence_messages_al_SQ.properties
index 5dee3393..c6978130 100644
--- a/locales/Albanian/reports/uk/chromis/reports/dailypresence_messages_al_SQ.properties
+++ b/locales/Albanian/dailypresence_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/dailyschedule_messages_al_SQ.properties b/locales/Albanian/dailyschedule_messages_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/dailyschedule_messages_al_SQ.properties
rename to locales/Albanian/dailyschedule_messages_al_SQ.properties
index 12e80c0e..9c90976c 100644
--- a/locales/Albanian/reports/uk/chromis/reports/dailyschedule_messages_al_SQ.properties
+++ b/locales/Albanian/dailyschedule_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/extendedcashregisterlog_messages_al_SQ.properties b/locales/Albanian/extendedcashregisterlog_messages_al_SQ.properties
similarity index 94%
rename from locales/Albanian/reports/uk/chromis/reports/extendedcashregisterlog_messages_al_SQ.properties
rename to locales/Albanian/extendedcashregisterlog_messages_al_SQ.properties
index f7af7554..648fb7fb 100644
--- a/locales/Albanian/reports/uk/chromis/reports/extendedcashregisterlog_messages_al_SQ.properties
+++ b/locales/Albanian/extendedcashregisterlog_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/extproducts_messages_al_SQ.properties b/locales/Albanian/extproducts_messages_al_SQ.properties
similarity index 92%
rename from locales/Albanian/reports/uk/chromis/reports/extproducts_messages_al_SQ.properties
rename to locales/Albanian/extproducts_messages_al_SQ.properties
index 36d4c438..60a97200 100644
--- a/locales/Albanian/reports/uk/chromis/reports/extproducts_messages_al_SQ.properties
+++ b/locales/Albanian/extproducts_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/invaliddata_messages_al_SQ.properties b/locales/Albanian/invaliddata_messages_al_SQ.properties
similarity index 90%
rename from locales/Albanian/reports/uk/chromis/reports/invaliddata_messages_al_SQ.properties
rename to locales/Albanian/invaliddata_messages_al_SQ.properties
index a6a905bd..3a9db652 100644
--- a/locales/Albanian/reports/uk/chromis/reports/invaliddata_messages_al_SQ.properties
+++ b/locales/Albanian/invaliddata_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/inventory_messages_al_SQ.properties b/locales/Albanian/inventory_messages_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/inventory_messages_al_SQ.properties
rename to locales/Albanian/inventory_messages_al_SQ.properties
index 78ff88a8..1b8e6eef 100644
--- a/locales/Albanian/reports/uk/chromis/reports/inventory_messages_al_SQ.properties
+++ b/locales/Albanian/inventory_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/inventoryb_messages_al_SQ.properties b/locales/Albanian/inventoryb_messages_al_SQ.properties
similarity index 90%
rename from locales/Albanian/reports/uk/chromis/reports/inventoryb_messages_al_SQ.properties
rename to locales/Albanian/inventoryb_messages_al_SQ.properties
index 0d6f6b8b..33502ce6 100644
--- a/locales/Albanian/reports/uk/chromis/reports/inventoryb_messages_al_SQ.properties
+++ b/locales/Albanian/inventoryb_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/inventorydiff_messages_al_SQ.properties b/locales/Albanian/inventorydiff_messages_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/inventorydiff_messages_al_SQ.properties
rename to locales/Albanian/inventorydiff_messages_al_SQ.properties
index 22866a1c..7d13fba6 100644
--- a/locales/Albanian/reports/uk/chromis/reports/inventorydiff_messages_al_SQ.properties
+++ b/locales/Albanian/inventorydiff_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/inventorydiffdetail_messages_al_SQ.properties b/locales/Albanian/inventorydiffdetail_messages_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/inventorydiffdetail_messages_al_SQ.properties
rename to locales/Albanian/inventorydiffdetail_messages_al_SQ.properties
index 3c73b4b6..31ce11ad 100644
--- a/locales/Albanian/reports/uk/chromis/reports/inventorydiffdetail_messages_al_SQ.properties
+++ b/locales/Albanian/inventorydiffdetail_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/inventorylistdetail_messages_al_SQ.properties b/locales/Albanian/inventorylistdetail_messages_al_SQ.properties
similarity index 90%
rename from locales/Albanian/reports/uk/chromis/reports/inventorylistdetail_messages_al_SQ.properties
rename to locales/Albanian/inventorylistdetail_messages_al_SQ.properties
index d3d655b5..f90997b0 100644
--- a/locales/Albanian/reports/uk/chromis/reports/inventorylistdetail_messages_al_SQ.properties
+++ b/locales/Albanian/inventorylistdetail_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/locales/beans_messages_al_SQ.properties b/locales/Albanian/locales/beans_messages_al_SQ.properties
deleted file mode 100644
index 317f24f3..00000000
--- a/locales/Albanian/locales/beans_messages_al_SQ.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-button.cancel=Anulo
-button.ok=OK
-button.Today=Sot
-title.calendar=Zgjidhe Daten
-Button.Today=Sot
diff --git a/locales/Albanian/locales/data_messages_al_SQ.properties b/locales/Albanian/locales/data_messages_al_SQ.properties
deleted file mode 100644
index f3a12e6c..00000000
--- a/locales/Albanian/locales/data_messages_al_SQ.properties
+++ /dev/null
@@ -1,90 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-button.cancel=Anulo
-button.information=Info
-button.ok=OK
-
-caption.sort=Sort
-
-exception.iofile=Gabim gjate leximit te skedarit.
-exception.nocompare=Expected comparator for QBF.
-exception.nodataset=Seti i te dhenave i pa definuar.
-exception.nofinishedfile=Skedari i fjalive i pa perfunduar.
-exception.nodelete=Rexhistrim nuk eshte fshir.
-exception.noinsert=Rexhistrimi nuk eshte krijuar.
-exception.nonegativelimits=Nuk lejohen kufijet negativ.
-exception.noparamtype=Lloji i parametrit nuk lejohet.
-exception.noreadfile=Gabim ne leximin e skedarit te fjalive.
-exception.notnull=Vlera nuk mund te jete Zero.
-exception.noupdate=Nuk ka rexhistrim te reifreskuar.
-exception.noupdatecount=Numeri i rifreskimeve i padefinuar.
-exception.outofbounds=Jasht Kufijeve.
-exception.parserconfig=Gabim iXML analyzuesit. Ju lutem kontaktoni Administratorin.
-exception.xmlfile=Analize e gabuar.XML skedari jovalid.
-
-label.andby=Dhe Sipas
-label.casesensitive=Case sensitive
-label.findwhat=Gjeje qfar
-label.imagefiles=Imazh
-label.match=Krahaso
-label.sortby=Klasifiko sips
-label.where=Ku
-
-list.anypart=Cdo pjese e fushes
-list.re=Shprehje e rregullt
-list.startfield=Fushe Fillestare
-list.wholefield=Fushe e Plot
-
-qbf.none=Asnje
-qbf.null=Eshte zero
-qbf.notnull=Nuk eshte zero
-qbf.equals=Barabart
-qbf.distinct=i Dallueshem
-qbf.greater=Me shum
-qbf.less=Me pak
-qbf.greaterequals=Me shum ose barabart
-qbf.lessequals=Me pak ose barabart
-qbf.re=Wildcards
-
-message.changeslost=Ndryshimet nuk do te ruhen. Deshironi te vazhdoni?
-message.nodelete=Nuk mund ta markoj rexhistrimin per fshirje.
-message.nolistdata=Nuk mund te gjeje ne listen e te dhenave.
-message.nomove=Nuk mund te leviz tek shenimi tjeter.
-message.nonew=Nuk mund te krijoj rexhistrim te ri.
-message.norecord=Rexhistrimi nuk gjindet.
-message.noreload=Lista e te dhenave nuk mund te ringarkohet.
-message.nosave=Rexhistrimi nuk eshte Ruajtur.
-message.nosort=Kushti i paracaktuar i sortimit nuk eshte Valid
-message.resizeimage=Imazhi i zgjedhur \u00ebsht\u00eb m\u00eb i madh se sa madh\u00ebsia e fush\u00ebs. Doni t\u00eb ndrysho permasat e imazhit?
-message.wannasave=Doni ti Ruani ndryshimet para se te dilni?
-
-sgn.caution=Kujdes\:
-sgn.danger=Rrezik\:
-sgn.notice=Njofftim\:
-sgn.important=I rendesishem\:
-sgn.success=Sukses\:
-sgn.unknown=I panjohur\:
-sgn.warning=Paralajmerim\:
-
-title.editor=Mesazh nga editori
-title.find=Gjeje
-title.message=Mesazh nga menaxheri i bazes se te dhenave
-combo.year=Viti
-combo.today=Sot
-combo.month=Muaji
diff --git a/locales/Albanian/locales/erp_messages_al_SQ.properties b/locales/Albanian/locales/erp_messages_al_SQ.properties
deleted file mode 100644
index 0e04770b..00000000
--- a/locales/Albanian/locales/erp_messages_al_SQ.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.configerp=ERP configuration
-label.erpurl=Services URL
-label.erpid=Entity code
-label.erporg=Organization code
-label.erppos=POS code
-label.erpuser=User
-label.erppassword=Password
-message.urlnotdefined=Synchronization service URL has not been defined.
-message.syncordersok=The orders synchronization has been successful.
-message.syncordersinfo={0} orders synchronized.
-message.syncproductsok=The data synchronization has been successful.
-message.syncproductsinfo={0} products synchronized.\n{1} customers synchronized.
-message.remoteexception=Communication error.
-message.serviceexception=Cannot connect to the service.
-message.malformedurlexception=The service URL is wrong.
-message.returnnull=Synchronization parameters are wrong.
-message.zeroproducts=There are no data to synchronize.
-message.zeroorders=There are no orders to synchronize.
-message.propsnotdefined=The synchronization properties resource "chromispos.properties" has not been defined.
\ No newline at end of file
diff --git a/locales/Albanian/locales/pos_messages_al_SQ.properties b/locales/Albanian/locales/pos_messages_al_SQ.properties
deleted file mode 100644
index 912feb3f..00000000
--- a/locales/Albanian/locales/pos_messages_al_SQ.properties
+++ /dev/null
@@ -1,748 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-button.memberdiscount=Member Disc
-Button.Cancel=
-button.catalogadd=Po
-button.catalogdel=Jo
-button.clean=Riseto
-Button.Close=Dil
-Button.CloseCash=Mbyll Parane
-button.Discount=Zbritje
-Button.DeleteTicket=Fshije Kuponin
-button.edit=Edito
-button.ExecuteChart= Ekzekuto Grafiken
-button.Executefilter=Ekzekuto
-Button.ExecuteReport=Ekzekuto Raportin
-Button.Factory=Rikthe
-button.linediscount=Zbritje' %
-button.listtickets=Lista
-button.migrate=Migro Databasen
-button.movetable=Levize
-button.NewTicket=E re
-Button.OK=OK
-button.opendrawer=Arka
-button.pay=Paguaj
-button.peoplepassword=Fjalekalimi
-button.print=
-Button.PrintCash=Printo
-button.receive=Pranoj
-button.refund=Rimburesim
-button.refundall=Rimbureso te gjitha
-button.refundit=Rimbureso Artikull
-button.refundline=Rimbureso Linje
-button.refundone=Rimbureso nje
-button.reloadticket=Ringarkoj
-button.reservations=Rezervimet
-button.reset=Reseto
-Button.Restore=Azhurno db
-Button.Save=Ruaj
-button.scale=Peshore
-button.sendorder=
-button.setperson=Kamarier
-button.tables=Tavolinat
-button.totaldiscount=Total Zbr.'
-Button.Exit=Dil
-button.moorings=Moorings
-button.test=TEST
-button.newcustomer=Database Klientesh
-
-caption.tickets=Kupone
-caption.upload=Ngarko Listen e Produkteve
-caption.split=Ndaj Faturen
-
-database.ScriptError=Skripta per ekzekutimin e Databazes nuk mund te krijohet.
-database.ScriptNotFound=Unable to find Updater.sql script.
-database.ScriptWarning=Skripta e krijimit nuk u ekzekutua me sukses.
-database.UnableToConnect=Nuk mund te lidhet me Bazen e te dhenave Kontrollo konfigurimin e bazes se te dhenave
-database.UpdaterWarning=Cannot Ekzekuto skripten per rifreskimin e bazes sse te dhenave.
-datebase.ResetPickup=Cannot Ekzekuto pickup reset
-Display.Null=Display not available
-Display.Screen=Shfaq ekranin
-Display.Window=Ekran
-
-exception.unavailabledataset=Baza e te dhenave nuk eshte ne dispozicion
-exception.unavailablefield=Fusha nuk eshte ne dispozicion\: {0}
-exception.unavailablefields=Fushat nuk jane ne dispozicion
-
-filter.dbdriverlib=Driver library (*.jar,*.zip)
-
-form.customertitle=Lista e Klienteve
-form.productslist=Lista e produkteve
-form.selectprintertitle=Zgjidhe Printerin
-form.tickettitle=Lista e Kuponave
-
-label.address=Adresa 1
-label.address2=Adresa 2
-label.all=Te Gjitha
-label.attribute=Atribut
-label.attributes=Atributet
-label.attributeset=Pakoja e Atributeve
-label.autologoffpanel=Auto shkyqje
-label.autologonoff=Auto Shkyqu pas shitjes
-label.autoloffrestaurant=In Restaurant mode - return to tables
-label.autolofftime=Auto LogOff after inactive time
-label.autologoffzero=seconds, 0 = No timed LogOff
-
-label.btndisplay=Butoni Shfaq Tekstin
-label.bybarcode=Sipas Barkodit
-label.bydates=Sipas Dates
-label.byform=Sipas Formes
-label.byreason=Sipas Arsyes
-label.bycustomer=Sipas Klientit
-label.byproduct=Sipas Produktit
-label.bywarehouse=Sipas Vendendodhjes
-
-label.card=Kartela
-label.cardexpdate=Data e Skadimit
-label.cardholder=Mbajtesi i Karteles
-label.cardnumber=Numri i Kartel
-Label.Cash=Para te Gatshme
-label.cascade=Cascade
-Label.CashMachine=Cash Register
-label.catid=ID
-label.catimage=Imazh
-label.catname=Kategori
-label.certificatepwd=Certifiko P'word
-label.certificatepath=Qertifikat
-Label.ChangeCash=Ndrysho
-label.city=Shteti
-label.commerceid=Commerce ID
-label.commercepwd=Commerce P/wd
-label.commercesign=Commerce Sign
-label.companyname=Emri i Kompanis
-label.companyaddr1=Rruga
-label.companyaddr2=Adresa 2
-label.companyaddr3=Qyteti
-label.companyaddr4=Kodi Postar
-label.companytelephone=Telefon
-label.companyFax=Telfaz
-label.companyemail=Email Adresa
-label.companytax=Nr TVSH'se
-label.companywww=Web site
-
-
-label.configreceipt=Organizimi i Fatures
-label.contact=Kontakti
-label.country=Shtetit
-label.csvbad=Cmimi i Keq
-label.csvclearlog=Clear Import Log
-label.csvdelimit=Ndares
-label.csvenableclear=Enable Clear Import Button
-label.csvfile=Skedar
-label.csvimpostbtn=Importo CSV
-label.cvsinvalid=Produkte jovalide
-label.csvmissing=Mungojne te dhena
-label.csvnewproducts=Produkt i ri
-label.cvsnotchanged=nuk eshte ndryshuar
-label.csvpriceupdated=Azhurnime te cmimeve
-label.csvread=Lexo arkitra
-label.csvrecordsfound=Rexhistrimi u gjete
-label.csvresetimport=Riseto importimin e te dhenave
-label.csvsellingintax=Cmimi i shitjes perfeshin Tatimet?
-
-
-label.curdebt=Borxhi Aktual
-label.curdate=Data e Borxhit
-label.currency=Valuta
-label.currencybutton=HidePayments text overlay
-label.customer=Klienti
-label.custtaxcategory=Kategoria e Tatimeve
-
-
-Label.Database=Baza e te dhenave
-label.date=Data
-label.datestitle=Datat
-label.datetime=Data Koha
-Label.DbDriver=Driver Class
-label.dbdriverlib=Driver Library
-Label.DbPassword=Fjalkalimi
-Label.DbURL=URL
-Label.DbUser=Perdorues
-label.debt=Borxh
-label.double=Dyfish
-label.dutyid=ID
-label.dutyname=Emri i Tatimit
-label.dutyrate=Shkalla
-
-label.editline=Edito Linjen
-label.email=email
-Label.EndDate=Data e Fundit
-
-label.fax=Telefax
-label.firstname=Emri
-label.floorid=ID
-label.floorname=Kati
-
-label.general=Kryesore
-label.grossprofit=Fitimi Bruto
-
-label.Infopanel=Fshihe shiritin e statusit ne kembez
-label.image=Imazh
-label.inputamount=Hapesia e te dhenave siper Shifratorit
-Label.InputCash=Te pranuara
-label.integer=Integer
-label.item=Artikull
-label.item2=Pershkrimi
-
-label.javapos.drawer=Arka
-label.javapos.printer=Printeri
-
-label.lastname=Mbiemri
-label.lindediscount=Zbritje' %
-label.LoadError=Gabim gjate shfaqjes se funksionit
-label.locale=Locale
-label.location=Adresa
-label.locationaddress=Adresa
-label.locationid=ID
-label.locationname=emri
-label.looknfeel=Dukja
-label.loyaltycardnumber=Numeri i Karteles
-label.loyaltyproducts=Loyalty details
-
-Label.MachineDisplay=Ekrani i Klienteve
-label.machinedisplayconn=Mode
-label.machinedisplayport=Port
-Label.MachineName=Name
-Label.MachinePrinter=Printer
-Label.MachinePrinter2=Printer 2
-Label.MachinePrinter3=Printer 3
-Label.MachinePrinter4=Printer 4
-Label.MachinePrinter5=Printer 5
-Label.MachinePrinter6=Printer 6
-label.machineprinterport=Port
-Label.MachineScreen=Ekrani
-label.magcardreader=Lexuesi i karteles magnetike
-label.mandatory=Obligativ
-label.margin=Marzha e Fitimit
-label.marine=Use Marina option
-label.maxdebt=Limit i borxhit
-label.maximum=Maksimum
-label.merchantcode=NRB
-label.minimum=Minimum
-label.money=Total
-
-label.packsinstock=In stock
-label.packof= packs of
-label.packstosplit=Packs to split
-label.productinpack=Product in pack
-label.split=Split
-
-label.mooringscreatefor=Krijo kupon per
-label.mooringcreatebtn=Krijo kupon
-
-label.name=Emri
-Label.Name=Emri
-label.notes=Shenim
-label.noticketstoclose=Ska Fature per te mbyllur
-label.nullcategory=(Ska kategori)
-
-label.order=Porosi
-
-Label.Password=Fjalekalimi
-label.passwordnew=Fjalekalimi i ri
-label.passwordold=Fjalekalimi i vjeter
-label.passwordrepeat=Perserit Fjalekalimin
-Label.Payment=Pages
-label.paymentdate=Data
-label.paymentgateway=Payment Gateway
-label.paymentnote=Shenime
-label.paymentreason=Arsyeja
-label.paymentstitle=Permbledhje e Kuponit
-label.paymenttestmode=Modaliteti i testimit
-label.paymenttotal=Shuma
-label.peopleimage=Imazh
-label.peoplename=Emri
-label.peoplevisible=Aktiv
-label.percent=Perqindje
-label.pickupcodesize=Length of Pickup Number
-label.phone=Telefon
-label.phone2=Mobil
-label.placefloor=Kati
-label.placeid=ID
-label.placename=Vendi
-label.placeposition=Pozita
-label.postal=Kodi Postar
-label.price=Cmimi
-label.pricetax=Cmimi + Tatimi
-label.printtokitchen=Printo ne Rrjete
-label.prodaux=Ndihmes (Ndryshim)?
-label.prodbarcode=Barkod
-label.prodcategory=Kategori
-label.prodcost=Cmimi
-label.prodgeneral=I pergjithshem
-label.prodincatalog=Perfshij Katalog?
-label.prodname=Emri
-label.prodorder=Porosit ne Katalog
-label.prodpricebuy=Cm. Blerjes
-label.prodpricesell=Cm.Shitjes
-label.prodpriceselltax=Cm. Shitjes+Tatimi
-label.prodproperties=Vetit
-label.productreceipt=Fatura e nevojshme per Garancion
-label.prodref=Referenca
-label.prodscale=Peshorja
-label.prodstock=Stok
-label.prodstockcost=Kostoja e Stokut per vite
-label.prodstockmax=Niveli Maksimal
-label.pricewith00=Price entry in pence
-label.prodstocksec=Niveli Minimal
-label.prodstockvol=Vellimi i Stokut
-label.prodtaxcode=Tatimi
-label.produnits=Njesia
-label.prodvaluebuy=Vlera e Blerjes
-label.prodvaluesell=Vlera e Shitjes
-label.prodvolume=Vellimi
-label.properties=Vetit
-
-label.receiptprint=Printeri i Faturave nuk eshte aktiv
-label.receiptprinter=Printeri per Fatura
-label.recorddeleted=(Fshij Rexhistrimin)
-label.recordeof=(Ska Rexhistrim)
-label.recordnew=(Rexhistrim i ri)
-label.refunds=Rimburesim
-label.region=Shteti
-label.remainingcash=Te Mbetura
-label.reportsprinter=Priter per Raporte
-label.resetpickup=Reset Pickup Counter
-label.resname=Burim
-label.restaurantcustomer=Receiving Customer {0}. Select an empty table.
-label.restaurantmove=Moving table {0}. Select another Table or the original Table
-label.role=Role
-label.roletableclass=Class
-label.roletabledescription=Pershkrimi
-label.roletableallowed=Lejohet
-
-
-label.sales=Shitja
-label.salestitle=Shitja
-label.scale=Peshore
-label.scaleinput=Shtyp Peshen
-label.scanner=Skaner
-label.SChargepanel=Tarif sherbimesh
-label.SCOnOff=Aktivizo tarifen per sherbime
-label.SCRestaurant=Restaurant mode only?
-label.SCRate=Service Tarifa
-label.SCZero=%
-label.search=Kerko
-label.searchkey=Qeles Kerkimi
-label.sequence=Sequence
-label.sha=SHA
-Label.StartDate=Data e Fillimit
-label.startuptext=Tekst
-label.startuplogo=Logo
-label.startuppanel=Ekrani Fillestar
-label.stockdate=Data
-label.stockproduct=Produkt
-label.stockreason=Arsye
-label.stocktaker=Rexhistruar nga
-label.storename=Emri i Dyqanit
-label.subcategorytitle=Shfaq Emrin ne Panel
-label.subtotalcash=Totali
-
-label.table=Table
-label.tabledisplayoptions=Table Display
-label.tableshowcustomerdetails=Show Customer details on table
-label.tableshowwaiterdetails=Show Waiter detail on table
-label.tax=Tatimi
-label.taxcash=Tatimi
-label.taxcategory=Kategoria e Tatimit
-label.taxes=Tatimi
-label.taxid=NRF
-label.taxincluded=Set Tax Included on startup
-label.taxparent=Parent Tax
-label.terminal=Terminal
-label.textcolourcustomer=Customer text colour
-label.textcolourwaiter=Waiter text colour
-label.textclourtablename=Table Name text colour
-label.texttip=Tekst mesazh per pro.
-label.ticketid=Kupon #
-Label.Tickets=Transactions
-Label.Ticketsbag=Kuponat
-Label.ticketsetupexample=Shembull
-Label.ticketsetupprefix=Prefiks i Fatures
-Label.ticketsetupnumber=Receipt number min' length
-label.pricewith00=Shfrytzo butonin 00
-
-
-label.time=Koha
-label.totalcash=Totali ne EUR
-label.totaldiscount=Total Zbr.'
-label.type=Tipi
-
-label.units=Njesit
-label.units2=Sasia
-label.uploadingproducts=Ngarko Produktin. Pritni...
-label.user=Perdorues
-
-label.value=Vlera
-label.value2=Cmimi
-label.variableprice=Produkt me cmim te ndryshueshem
-label.visible=i dukshem
-
-label.warehouse=Produkt
-
-Menu.Attributes=Cilesit
-Menu.AttributeSets=Atributet e percaktuara te produktit
-Menu.AttributeUse=Perdorimi i atributeve te produktit
-Menu.AttributeValues=Vlera e atributit
-Menu.Auxiliar=Produkt ndihmes
-
-Menu.Backoffice=Administrimi
-
-Menu.CashFlow=Rrjedhja e Paras
-Menu.CashRegisterLog=Transaction Log
-Menu.CategorySales=Category Sales
-Menu.Catalog=Katalogu
-Menu.Categories=Kategorit
-Menu.CategoryProductSalesChart=Grafi i shitjeve sipas Kategorive
-Menu.ChangePassword=Ndrro Fjalekalimin
-Menu.ClosedProducts=Shitja sipas Produkteve
-Menu.CloseTPV=Mbyll parane
-Menu.Closing=Para e gatshme e mbyllur
-Menu.Configuration=Konfigurimi
-Menu.CSVImport=Importo skedarin CSV
-Menu.CSVReset=Clear Import Database Log
-Menu.Customers=Klientet
-Menu.Customers.Reports=Raportet
-Menu.CustomersBReport=Debitoret(Card Style)
-Menu.CustomersDiary=Ditari i Klienteve
-Menu.CustomersList=Lista e Klienteve
-Menu.CustomersManagement=Klientet
-Menu.CustomersPayment=Shlyej Borxhin
-Menu.CustomersReport=Klientet (Card Style)
-
-message.DBDefault=
.
\n
.
\n
\
\n
-
-Menu.ERPOrders=ERP Order Synchronisation
-Menu.ERPProducts=POS Synchronisation
-Menu.Exit=Dalja
-Menu.ExtendedByProducts=Extended Product Sales
-Menu.ExtendedCashRegisterLog=Extended Transaction Log
-Menu.ExtendedSales=Shitjet e Vazhduara
-
-Menu.Floors=Floors
-
-Menu.Import=Import
-Menu.Import.Reports=importo Raportin
-Menu.InvalidData=Invalid or duplicate data found
-Menu.Inventory=Stoku
-Menu.Inventory2=Gjendja Aktuale
-Menu.InventoryBroken=Stoku: i demtuar
-Menu.InventoryDiff=Stoku: Diferenca
-Menu.InventoryDiffDetail=Stoku: Detajet e Deferences
-Menu.InventoryListDetail=Stoku: Lista e Detajuar
-Menu.InventoryReOrder=Inventory: Re-Order
-
-Menu.Locations=Lokacioni
-
-Menu.Main=Shitja
-Menu.Maintenance=Mirembajtja
-Menu.Maintenance.ERP=Chromis ERP
-Menu.Maintenance.POS=Point Of Sale
-Menu.Maintenance.Reports=Raportet
-Menu.MissingData=Missing Data or Bad Price in File
-
-Menu.NewProducts=Produkt i ri i shtuar
-
-Menu.PaymentReport=Pagesat
-Menu.Payments=Pagesat
-Menu.Printer=Printat
-Menu.ProductLabels=Tiketat e Produkteve
-Menu.Products=Produktet
-Menu.ProductSales=Shitja e Produkteve
-Menu.ProductsWarehouse=Lokacioni i Produkteve
-Menu.ProductPacks=Product Packs
-Menu.StockChanges=Stock Changes
-Menu.StockChangesReport=Stock Changes Report
-Menu.Promotions=Promotions
-Menu.PromotionsReport=Promotions Report
-
-Menu.Reports=Raportet
-Menu.ReportTaxes=Permbledhja e Tatimeve
-Menu.Resetpickup=Reset pickup Counter
-Menu.Resources=Burimet
-Menu.Roles=Rolet
-
-Menu.SalesByCustomer=Shitjet sipas Klienteve
-Menu.SaleCatalog=Katalogu
-Menu.SalesChart=Grafika e Shitjes
-Menu.SalesManagement=Shitjet
-Menu.SalesManagement.Reports=Raportet
-Menu.SalesProfit=Fitmi nga shitja
-Menu.SaleTaxes=Tatimet e shitjes
-Menu.StockDiary=Ditari i stokut
-Menu.StockManagement=Stoku
-Menu.StockManagement.Edit=Mirembajtja
-Menu.StockManagement.Reports=Raportet
-Menu.StockMovement=Levizja Stokut
-Menu.System=Sistemi
-
-Menu.Tables=Tabela
-Menu.Taxes=Tatimet
-Menu.TaxCustCategories=Categorit e tatimeve sipas Klienteve
-Menu.TaxCategories=Kategorit e Tatimeve
-Menu.ThirdParties=Furnitoret
-Menu.ThirdPartiesManagement=Menaxhimi i Furnitoreve
-Menu.Ticket=Shitjet
-Menu.TicketEdit=Edito Shitjet
-Menu.TicketRefund=Rimburesim
-Menu.Tools=Veglat
-Menu.Top10Sales=Top 10 Shitjet
-
-Menu.Update= Azhurnimi Manual i Bazes se te dhebave
-Menu.UpdatedPrices= Ndryshimi i Cmimit
-Menu.Users=Puntoret
-Menu.UsersReport=Puntoret
-Menu.UserSells=Shitjet sipas Puntoreve
-Menu.Utilities=Sherbimet
-Menu.UtilityOptions=Opsionet e Sherbimeve
-
-
-message.BadPassword=Fjalkalimi jo valid. Provo prap
-
-message.cannotcalculatetaxes=Unable to calculate Receipt taxes.\nOne or more Products Taxes is not configured properly
-message.cannotchangepassword=Fjalekalimi nuk mund te ndryshohet
-message.cannotclosecash=Paraja nuk mund te mbyllet
-message.cannotdeleteconfig=Skedari i Konfigurimit' nuk mund te shlyhet
-message.cannotExecute=Veprimi nuk mund te ekzekutohet
-message.cannotfillchart=Ngarkimi i grafikut e pamundur
-message.cannotfillreport=Ngarkimi i Raportit te te dhenave e pamundur
-message.cannotfindattributes=Atributet per kete produkt nuk jane te caktuara
-message.cannotfindcustomer=Nuk mund te gjen te dhenat e Klinetit
-message.cannotloadlists=Nuk mund te ngarkoj listen e te dhenave
-message.cannotloadreport=Nuk mund te ngarkoj definicionin e Raportit
-message.cannotloadreportdata=Nuk mund te ngarkoj te dhenat e raportit
-message.cannotloadresourcedata=Nuk mund te ngarkoj te burimet e raportit
-message.cannotloadticket=Nuk mund te ngrakoj Faturen
-message.CannotMove=Nuk mund te levize tek Rexhistrimi
-message.cannotprint=Nuk mund te printoj
-message.cannotprintline=Nuk mund te printoj linjen
-message.cannotprintticket=Nuk mund te Printoj Faturen
-message.cannotsaveconfig=Nuk mund te ruaj Skedarin e konfigurimit
-message.cannotsaveinventorydata=Nuk mund te ruaj te dhenat e Invetarit
-message.cardnew=Vlera e karteles do te ndryshohet. A deshironi te vazhdoni?
-message.cardremove=Vlera e kartelese do te largohet. A deshironi te vazhdoni?
-
-message.changepassworddistinct=Konfirmo Fjalekalimin
-message.changeserver=Ndrysho Serveri eshte ne Zhvillimi
-message.closecashok=Paraja u mbyll me sukses
-message.configfactory=A jeni te sigurt se deshironi te riktheni vlerat fillestare?
-message.configrestore=A jeni te sigurt se doni ta asgjesoni ndryshimin?
-message.createdatabase=Nuk mund te gjindet Baza funksionale, nje Baze e te dhenave standarde do te krijohet. A deshironi te vazhdoni?
-message.createdatabasejl=Informatat e reja per bazen e te dhenave duhet te krijohen. Kjo do te ndodh tani. A deshironi te vazhdoni? Nese jo, perdorimi i Sistemit do te jete e pamundur.
-message.customerdebtexceded=Klienti ka mbikaluar limitin e lejuar te kreditit.
-
-message.databaseconnectionerror=nuk mund te lidhet me bazen e te dhenave: baza e te dhenave nuk eshte ne dispozicion
-message.databasedrivererror=Nuk mund te lidhet me bazen e te dhenave, Kontrollo konfigurimin e driverave
-message.databasenotsupported=Baza e te dhenave "{0}" nuk perkrahet
-message.databasesuccess=
Ju jeni kyqur!
Ristartoni EPOS per te ngarkuar bazen e te dhenave
-
-message.mergetable=Bashko Tabelat
-message.mergetablequestion=Kjo do te bashkoj tabelat. A jeni te sigurt se deshironi kete?
-message.nigratemessage=Database Migration
-message.migratenotsupported=Database Migration type not supported
-
-message.nocard=Kartela e klientit nuk gjindet. Ju lutem provoni prap
-message.nocardreader=Lexuesi i karteles nuk eshte konfiguruar
-message.nocustomer=Kodi i klientit nuk ekziston
-message.nocustomernodebt=Shitja nuk eshte paracaktuar nje Llogarie te klientit.\nKjo nuk mund te bartet ne llogari
-message.nopaymentgateway=Payment Gateway is not configured
-message.noprinters=Nuk ka printer te instaluar
-message.noproduct=Produkti me kete kod nuk ekziston
-message.nosaveticket=Nuk mund te ruaj kuponin e shitjes
-message.notactive=Gabim ne ngarkimin e Panelit
-message.notexiststicket=Fatura nuk ekziston
-message.notexiststickettitle=Mesazhi i Fatures
-message.noticket=Fatura nuk ekziston me
-message.notpermissions=Nuk ju lejohet ekzekutimi i kesaj detyre
-message.noupdatescript=Eshte detektuar nje Baze e te dhenave na versioni i kaluar, kjo nuk mund te azhurnohet ne menyr automatike. EPOS do te mbyllet tani.
-message.noweight=Peshimi nuk ka qene i mundur
-message.nullticket=Nuk mund te krijoni Fature te shpazet! Ju lutem shtoni diqka tek kjo shitje
-
-message.paymentcashneg=Beni Rimburesim. Pastaj shtypni OK
-message.paymenterror=Gabim ne trasaksionin e pageses!
-message.paymenterrorunknown=Gabim i panjohur ne transaksionin e pagese!
-message.paymentexceptionremote=Gabim ne Pagesen remote
-message.paymentexceptionservice=Gabim ne perjashtimin e sherbimit te pageses.
-message.paymentfree=Gratis
-message.paymentgatewayext=
Beni pagesen me kartel. Pastaj Shtyp OK
-message.paymentgatewayextrefund=
Beni rimburesim ne kartel. Pastaj Shtyp OK
-message.paymentgatewayswipe=Terhiqe kartelen pastaj shtyp OK
-message.paymentgatewaytype=Shtyp te dhenat e Karteles. Pastaj shtyp OK
-message.paymentnotauthorised=Transaksion i paautorizuar
-message.paymentrefundsnotsupported=Rimburesimi nuk mbeshtetet
-message.preparescanner=Pergadit Skanerin ScanPal scanner per te ndarkuar listen e produkteve dhe shtyp OK
-message.printererror=Nuk mund te shtypet Fatura
-message.productnotselected=Ska produkt te selektuar
-message.stockchangesactioned=Stock Changes Actioned
-message.restartchanges=Ndryshimi eshte ruajtur me sukses. Ndryshimet do te aplikohen pas ristartimit te sistemit
-
-message.scannerfail=Ngarkimi i listes se produkteve deshtoj
-message.scannerfail2=Shkarkimi i listes se produkteve deshtoj
-message.scannerok=Ngarkimi i listes se produkteve me sukses
-message.startupText=
-message.systemclosecash=Leviz butonin Mbyllja e parase
-
-message.tableempty=Table is now empty
-message.tablefull=Table is now full
-message.title=Cash Register message
-
-message.updatedatabase=A database from a previous version has been detected. The database will be upgraded automatically. DATA MAY BE LOST. FIRST CREATE A BACKUP. Do you want to continue?
-message.updatedatabasejl=New database changes are required (John l changes). The database will be upgraded automatically. DATA MAY BE LOST. FIRST CREATE A BACKUP. Do you want to continue? If not, you will be unable to use the system.
-
-message.wannaclosecash=A jeni te sigurt se deshironi te mbyllni paran e gatshme?
-message.wannadelete=A jeni te sigurt se deshironi te shlyeni porosin aktuale?
-message.wannasave=Ruani ndryshimet para daljes?
-
-migration.ScriptNotFound=Skripta e migrimt nuk gjindet
-migration.warning=Gabim ne migrimin SQL
-migration.warningnodefault=Nuk gjindet krijo bazen e te dhenave
-migration.warningjl=Create JL features not found
-migration.warningnofk=Drop Foreign Key not found
-migration.notvalidversion=The new database type is not supported
-
-payment.title=Pages
-
-Printer.Null=Printeri nuk eshte ne dispozicion
-Printer.Screen=Priter ne Ekran
-Printer.Serial=Printer Kuponi
-
-resource.binary=Binary
-resource.image=Imazh
-resource.text=Tekst
-
-rest.label.chairs=Karrikat
-rest.label.customer=Klient
-rest.label.date=Rezervim
-rest.label.notes=Shenim
-
-scale.notdefined=Scale not Defined
-scale.invalidvalue=Scale invalid value
-scale.weighitem=Weigh Item
-
-stock.in.movement=(Hyrje) Levizje
-stock.in.purchase=(Hyrje) Blerje
-stock.in.refund=(Hyrje) Kthim
-stock.out.break=(Dalje) Demtime
-stock.out.crossing=Kryqezim
-stock.out.movement=(Dalje) Levizje
-stock.out.refund=(Dalje) Kthim
-stock.out.sale=(Dalje) Shitje
-stock.in.openpack=(In) Open Pack
-stock.out.openpack=(Out) Open Pack
-stock.in.stockchange=(In) Stock Change
-stock.out.stockchange=(Out) Stock Change
-
-
-tab.bank=Bank
-tab.cash=Para te gatshme
-tab.cashrefund=Rimburesim
-tab.cheque=Qek
-tab.chequerefund=Qek
-tab.free=Gratis
-tab.magcard=Kartel
-tab.paper=Voucher
-tab.debt=Borxh
-
-title.changepassword=Ndrysho Fjalekalimin
-title.editor=Info' mesazhi
-
-transpayment.bank=Bank
-transpayment.cash=Para te gatshme
-transpayment.cashin=(Hyrje) Para te gatshme
-transpayment.cashout=(Dalje) Para te gatshme
-transpayment.cashrefund=Rimburesim
-transpayment.cheque=Qek
-transpayment.chequerefund=Qek Refund
-transpayment.free=Gratis
-transpayment.magcard=Kartel
-transpayment.magcardrefund=Card Refund
-transpayment.paperin=Note Input
-transpayment.paperout=Note Output
-transpayment.debt=Borxh
-transpayment.debtpaid=Borxh i Paguar
-
-Visor.Title=EPOS
-
-# Employee Presence Management
-Menu.Leaves=Pushim
-Menu.Breaks=Pauze
-Menu.CheckInCheckOut=Check In/Out
-Menu.PresenceManagement=Presence Management
-Menu.Employees.Reports=Raportet
-Menu.DailyPresenceReport=Prezenca ditore
-Menu.DailyScheduleReport=Orari Ditor
-Menu.PerformanceReport=Performanca
-label.epm.employee=i/e Punesuari
-label.epm.employee.id=ID e te punesuarit
-label.epm.startdate=Data e Fillimit
-label.epm.enddate=Data e Mbarimit
-label.epm.notes=Shenim
-label.epm.visible=I dukshem
-message.cannotfindemployee=Nuk mund te gjeje puntorin
-message.invalidenddate=Data e Mbarimit nuk mund te jete para Dates se sistemit apo Dates se Fillimit
-message.invalidstartdate=Data e Fillimit nuk mund te jete para dates se sistemit
-message.leavefor=Per majtas
-message.at=ne
-message.probleminbreak=Gabim ne Pauze
-message.leavecontrol=eshte ne Pushim. To check In: contact your Manager to Cancel leave
-message.checkedin=has Checked In at
-message.checkedout=has Checked Out at
-message.cannotcheckin=Cannot Check In
-message.cannotcheckout=Cannot Check Out
-message.noshift=has no previous shift
-message.breakoverandcheckedin='s Break is over and Checked In at
-message.breakoverandcheckedout='s break is over and Checked Out at
-
-label.roletabldescription=Desc
-Button.newcustomer=Cancel
-message.systemclosecas=jCheckBox1
-
-title.CSVImport=Gjendja
-label.splitpayment=Ndaj Pagesen
-label.addsplitpayment=Shto Pages e ndar
-label.deletesplitpayment=Fshije Pagesen e ndar
-Button.Test=Test
-label.CatalogueYes=Perfshir
-label.CatalogueNo=perjashtuar
-label.CatalogueStatus=Ne Katalof?
-label.nocashsales=Ska Shitje - Hapja e arkes
-label.closeoptions=Opsionet e Mbylljes
-label.producthtmlguide=\n
Ju mund te modifikoni butonin produktit ne ekranin e shitjes. \nNese keni vetem pak njohuri nga HTML!
\n
\n
-label.prodminmax=Minimum dhe Maximum product levels are maintained in Product \nLocation along with Units sold
-label.fontcolour=Text Colour
-tooltip.fontcolour=
-label.fontsize=SMALL TEXT
-tooltip.fontsize=small
-tooltip.fontsizesmall=small
-label.fontsizesmall=Font Size: small
-label.fontsizelarge=Large Text
-tooltip.fontsizelarge=Large
-label.fontweight=Bold Text
-label.fontitalic=Italic Text
-tooltip.fontitalic=Italic Text
-tooltip.fontbold=Bold
-label.fontexample=Display TWO LINES ON YOUR BUTTON
-tooltip.fontexample=Display dy Linja NE BUTONIN TUAJ
-button.htmltest=Shfaq Tekstin
-label.prodbuttonhtml=Butoni i Ekranit te shitjes HTML
-label.CatalogueStatusYes=Ne Katalog
-label.CatalogueStatusNo=Nuk gjindet Katalog
-label.Transactions=Transaksion
-label.photo=Foto
diff --git a/locales/Albanian/reports/uk/chromis/reports/missingdata_messages_al_SQ.properties b/locales/Albanian/missingdata_messages_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/missingdata_messages_al_SQ.properties
rename to locales/Albanian/missingdata_messages_al_SQ.properties
index aa751127..93097c7a 100644
--- a/locales/Albanian/reports/uk/chromis/reports/missingdata_messages_al_SQ.properties
+++ b/locales/Albanian/missingdata_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/newproducts_messages_al_SQ.properties b/locales/Albanian/newproducts_messages_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/newproducts_messages_al_SQ.properties
rename to locales/Albanian/newproducts_messages_al_SQ.properties
index 048f8ec0..a7a534a3 100644
--- a/locales/Albanian/reports/uk/chromis/reports/newproducts_messages_al_SQ.properties
+++ b/locales/Albanian/newproducts_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/paymentreport_messages_al_SQ.properties b/locales/Albanian/paymentreport_messages_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/paymentreport_messages_al_SQ.properties
rename to locales/Albanian/paymentreport_messages_al_SQ.properties
index d5fd17ee..1089bd5e 100644
--- a/locales/Albanian/reports/uk/chromis/reports/paymentreport_messages_al_SQ.properties
+++ b/locales/Albanian/paymentreport_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/people_messages_al_SQ.properties b/locales/Albanian/people_messages_al_SQ.properties
similarity index 89%
rename from locales/Albanian/reports/uk/chromis/reports/people_messages_al_SQ.properties
rename to locales/Albanian/people_messages_al_SQ.properties
index 45c74406..e970b45f 100644
--- a/locales/Albanian/reports/uk/chromis/reports/people_messages_al_SQ.properties
+++ b/locales/Albanian/people_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/performancereport_messages_al_SQ.properties b/locales/Albanian/performancereport_messages_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/performancereport_messages_al_SQ.properties
rename to locales/Albanian/performancereport_messages_al_SQ.properties
index b39d211b..d72a3b0c 100644
--- a/locales/Albanian/reports/uk/chromis/reports/performancereport_messages_al_SQ.properties
+++ b/locales/Albanian/performancereport_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/piesalescat_messages_al_SQ.properties b/locales/Albanian/piesalescat_messages_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/piesalescat_messages_al_SQ.properties
rename to locales/Albanian/piesalescat_messages_al_SQ.properties
index 3b268603..850cdd0e 100644
--- a/locales/Albanian/reports/uk/chromis/reports/piesalescat_messages_al_SQ.properties
+++ b/locales/Albanian/piesalescat_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/productlabels_messages_al_SQ.properties b/locales/Albanian/productlabels_messages_al_SQ.properties
similarity index 89%
rename from locales/Albanian/reports/uk/chromis/reports/productlabels_messages_al_SQ.properties
rename to locales/Albanian/productlabels_messages_al_SQ.properties
index f61967e2..0a05711d 100644
--- a/locales/Albanian/reports/uk/chromis/reports/productlabels_messages_al_SQ.properties
+++ b/locales/Albanian/productlabels_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/products_messages_al_SQ.properties b/locales/Albanian/products_messages_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/products_messages_al_SQ.properties
rename to locales/Albanian/products_messages_al_SQ.properties
index 3e8537fc..6757bb36 100644
--- a/locales/Albanian/reports/uk/chromis/reports/products_messages_al_SQ.properties
+++ b/locales/Albanian/products_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/productsales_messages_al_SQ.properties b/locales/Albanian/productsales_messages_al_SQ.properties
similarity index 90%
rename from locales/Albanian/reports/uk/chromis/reports/productsales_messages_al_SQ.properties
rename to locales/Albanian/productsales_messages_al_SQ.properties
index 763f233b..dfdbf1a1 100644
--- a/locales/Albanian/reports/uk/chromis/reports/productsales_messages_al_SQ.properties
+++ b/locales/Albanian/productsales_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/productsalesprofit_messages_al_SQ.properties b/locales/Albanian/productsalesprofit_messages_al_SQ.properties
similarity index 92%
rename from locales/Albanian/reports/uk/chromis/reports/productsalesprofit_messages_al_SQ.properties
rename to locales/Albanian/productsalesprofit_messages_al_SQ.properties
index 4278b594..c57a45b8 100644
--- a/locales/Albanian/reports/uk/chromis/reports/productsalesprofit_messages_al_SQ.properties
+++ b/locales/Albanian/productsalesprofit_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/productscatalog_messages_al_SQ.properties b/locales/Albanian/productscatalog_messages_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/productscatalog_messages_al_SQ.properties
rename to locales/Albanian/productscatalog_messages_al_SQ.properties
index 6b086e3f..028fe7ce 100644
--- a/locales/Albanian/reports/uk/chromis/reports/productscatalog_messages_al_SQ.properties
+++ b/locales/Albanian/productscatalog_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/salebycustomer_messages_al_SQ.properties b/locales/Albanian/salebycustomer_messages_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/salebycustomer_messages_al_SQ.properties
rename to locales/Albanian/salebycustomer_messages_al_SQ.properties
index 69a85c76..878c4e5c 100644
--- a/locales/Albanian/reports/uk/chromis/reports/salebycustomer_messages_al_SQ.properties
+++ b/locales/Albanian/salebycustomer_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/salecatalog_messages_al_SQ.properties b/locales/Albanian/salecatalog_messages_al_SQ.properties
similarity index 89%
rename from locales/Albanian/reports/uk/chromis/reports/salecatalog_messages_al_SQ.properties
rename to locales/Albanian/salecatalog_messages_al_SQ.properties
index 624be801..4bde257a 100644
--- a/locales/Albanian/reports/uk/chromis/reports/salecatalog_messages_al_SQ.properties
+++ b/locales/Albanian/salecatalog_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/saletaxes_messages_al_SQ.properties b/locales/Albanian/saletaxes_messages_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/saletaxes_messages_al_SQ.properties
rename to locales/Albanian/saletaxes_messages_al_SQ.properties
index 2fd7ad66..adcbcc96 100644
--- a/locales/Albanian/reports/uk/chromis/reports/saletaxes_messages_al_SQ.properties
+++ b/locales/Albanian/saletaxes_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/taxcatsales_message_al_SQ.properties b/locales/Albanian/taxcatsales_message_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/taxcatsales_message_al_SQ.properties
rename to locales/Albanian/taxcatsales_message_al_SQ.properties
index 6d7208a6..09a209fc 100644
--- a/locales/Albanian/reports/uk/chromis/reports/taxcatsales_message_al_SQ.properties
+++ b/locales/Albanian/taxcatsales_message_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/taxes_messages_al_SQ.properties b/locales/Albanian/taxes_messages_al_SQ.properties
similarity index 90%
rename from locales/Albanian/reports/uk/chromis/reports/taxes_messages_al_SQ.properties
rename to locales/Albanian/taxes_messages_al_SQ.properties
index 12b6a605..394503c3 100644
--- a/locales/Albanian/reports/uk/chromis/reports/taxes_messages_al_SQ.properties
+++ b/locales/Albanian/taxes_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/timeseriesproduct_messages_al_SQ.properties b/locales/Albanian/timeseriesproduct_messages_al_SQ.properties
similarity index 92%
rename from locales/Albanian/reports/uk/chromis/reports/timeseriesproduct_messages_al_SQ.properties
rename to locales/Albanian/timeseriesproduct_messages_al_SQ.properties
index 0674bf72..fe354a4e 100644
--- a/locales/Albanian/reports/uk/chromis/reports/timeseriesproduct_messages_al_SQ.properties
+++ b/locales/Albanian/timeseriesproduct_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/top10sales_messages_al_SQ.properties b/locales/Albanian/top10sales_messages_al_SQ.properties
similarity index 90%
rename from locales/Albanian/reports/uk/chromis/reports/top10sales_messages_al_SQ.properties
rename to locales/Albanian/top10sales_messages_al_SQ.properties
index f2c69888..3344da99 100644
--- a/locales/Albanian/reports/uk/chromis/reports/top10sales_messages_al_SQ.properties
+++ b/locales/Albanian/top10sales_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/updatedprices_messages_al_SQ.properties b/locales/Albanian/updatedprices_messages_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/updatedprices_messages_al_SQ.properties
rename to locales/Albanian/updatedprices_messages_al_SQ.properties
index 1030cf5c..ae37f77d 100644
--- a/locales/Albanian/reports/uk/chromis/reports/updatedprices_messages_al_SQ.properties
+++ b/locales/Albanian/updatedprices_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Albanian/reports/uk/chromis/reports/usersales_messages_al_SQ.properties b/locales/Albanian/usersales_messages_al_SQ.properties
similarity index 91%
rename from locales/Albanian/reports/uk/chromis/reports/usersales_messages_al_SQ.properties
rename to locales/Albanian/usersales_messages_al_SQ.properties
index 6c1b45c3..716a1397 100644
--- a/locales/Albanian/reports/uk/chromis/reports/usersales_messages_al_SQ.properties
+++ b/locales/Albanian/usersales_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/cashflow_messages_en_US.properties b/locales/American/cashflow_messages_en_US.properties
similarity index 92%
rename from locales/American/reports/uk/chromis/reports/cashflow_messages_en_US.properties
rename to locales/American/cashflow_messages_en_US.properties
index 46a9e0e5..cafc5d6d 100644
--- a/locales/American/reports/uk/chromis/reports/cashflow_messages_en_US.properties
+++ b/locales/American/cashflow_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -24,6 +24,7 @@ label.period=Period:
label.payment=Payment
label.sum=Amount
+transpayment.bank=Bank
transpayment.cash=Cash
transpayment.magcard=Card
transpayment.cashrefund=Refund
diff --git a/locales/American/reports/uk/chromis/reports/cashregisterlog_messages_en_US.properties b/locales/American/cashregisterlog_messages_en_US.properties
similarity index 92%
rename from locales/American/reports/uk/chromis/reports/cashregisterlog_messages_en_US.properties
rename to locales/American/cashregisterlog_messages_en_US.properties
index 7b229184..6b551ce5 100644
--- a/locales/American/reports/uk/chromis/reports/cashregisterlog_messages_en_US.properties
+++ b/locales/American/cashregisterlog_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -28,6 +28,7 @@ label.payment=Payment
label.period=Period:
label.total=Grand Total
+transpayment.bank=Bank
transpayment.cash=Cash
transpayment.magcard=Card
transpayment.cashrefund=Refund
diff --git a/locales/American/reports/uk/chromis/reports/categorysales_messages_en_US.properties b/locales/American/categorysales_messages_en_US.properties
similarity index 91%
rename from locales/American/reports/uk/chromis/reports/categorysales_messages_en_US.properties
rename to locales/American/categorysales_messages_en_US.properties
index 0bfe9112..df252db8 100644
--- a/locales/American/reports/uk/chromis/reports/categorysales_messages_en_US.properties
+++ b/locales/American/categorysales_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/chartsales_messages_en_US.properties b/locales/American/chartsales_messages_en_US.properties
similarity index 90%
rename from locales/American/reports/uk/chromis/reports/chartsales_messages_en_US.properties
rename to locales/American/chartsales_messages_en_US.properties
index e9be9b1a..e95bc674 100644
--- a/locales/American/reports/uk/chromis/reports/chartsales_messages_en_US.properties
+++ b/locales/American/chartsales_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/closedpos_messages_en_US.properties b/locales/American/closedpos_messages_en_US.properties
similarity index 92%
rename from locales/American/reports/uk/chromis/reports/closedpos_messages_en_US.properties
rename to locales/American/closedpos_messages_en_US.properties
index 5240bb2c..f3b96d8b 100644
--- a/locales/American/reports/uk/chromis/reports/closedpos_messages_en_US.properties
+++ b/locales/American/closedpos_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -27,6 +27,7 @@ label.terminaltotal=Terminal Total
label.subtotal=Subtotal
label.period=Period:
label.printed=Printed
+transpayment.bank=Bank
transpayment.cash=Cash
transpayment.magcard=Card
transpayment.cashrefund=Refund
diff --git a/locales/American/reports/uk/chromis/reports/closedproducts_messages_en_US.properties b/locales/American/closedproducts_messages_en_US.properties
similarity index 91%
rename from locales/American/reports/uk/chromis/reports/closedproducts_messages_en_US.properties
rename to locales/American/closedproducts_messages_en_US.properties
index 3823a613..b4212d2f 100644
--- a/locales/American/reports/uk/chromis/reports/closedproducts_messages_en_US.properties
+++ b/locales/American/closedproducts_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/customers_messages_en_US.properties b/locales/American/customers_messages_en_US.properties
similarity index 88%
rename from locales/American/reports/uk/chromis/reports/customers_messages_en_US.properties
rename to locales/American/customers_messages_en_US.properties
index 36e352fb..141d29ab 100644
--- a/locales/American/reports/uk/chromis/reports/customers_messages_en_US.properties
+++ b/locales/American/customers_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -23,3 +23,4 @@ label.curdebt=Debt current
label.curdate=Debt date
label.notes=Notes
label.taxid=Account ID
+label.discount=Discount
diff --git a/locales/American/reports/uk/chromis/reports/customersdiary_messages_en_US.properties b/locales/American/customersdiary_messages_en_US.properties
similarity index 90%
rename from locales/American/reports/uk/chromis/reports/customersdiary_messages_en_US.properties
rename to locales/American/customersdiary_messages_en_US.properties
index 3c1881bc..4e53b7a3 100644
--- a/locales/American/reports/uk/chromis/reports/customersdiary_messages_en_US.properties
+++ b/locales/American/customersdiary_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/extendedcashregisterlog_messages_en_US.properties b/locales/American/extendedcashregisterlog_messages_en_US.properties
similarity index 92%
rename from locales/American/reports/uk/chromis/reports/extendedcashregisterlog_messages_en_US.properties
rename to locales/American/extendedcashregisterlog_messages_en_US.properties
index 3dc0f1c7..0b1c35ae 100644
--- a/locales/American/reports/uk/chromis/reports/extendedcashregisterlog_messages_en_US.properties
+++ b/locales/American/extendedcashregisterlog_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -28,6 +28,7 @@ label.customer=Customer
label.payment=Payment
label.total=Grand Total
+transpayment.bank=Bank
transpayment.cash=Cash
transpayment.magcard=Card
transpayment.cashrefund=Cash Refund
diff --git a/locales/American/reports/uk/chromis/reports/extproducts_messages_en_US.properties b/locales/American/extproducts_messages_en_US.properties
similarity index 92%
rename from locales/American/reports/uk/chromis/reports/extproducts_messages_en_US.properties
rename to locales/American/extproducts_messages_en_US.properties
index 44efc692..6ddd9a1a 100644
--- a/locales/American/reports/uk/chromis/reports/extproducts_messages_en_US.properties
+++ b/locales/American/extproducts_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/inventory_messages_en_US.properties b/locales/American/inventory_messages_en_US.properties
similarity index 91%
rename from locales/American/reports/uk/chromis/reports/inventory_messages_en_US.properties
rename to locales/American/inventory_messages_en_US.properties
index f414f384..341026e8 100644
--- a/locales/American/reports/uk/chromis/reports/inventory_messages_en_US.properties
+++ b/locales/American/inventory_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/inventoryb_messages_en_US.properties b/locales/American/inventoryb_messages_en_US.properties
similarity index 90%
rename from locales/American/reports/uk/chromis/reports/inventoryb_messages_en_US.properties
rename to locales/American/inventoryb_messages_en_US.properties
index 22cad4a1..cda35d90 100644
--- a/locales/American/reports/uk/chromis/reports/inventoryb_messages_en_US.properties
+++ b/locales/American/inventoryb_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/inventorydiff_messages_en_US.properties b/locales/American/inventorydiff_messages_en_US.properties
similarity index 91%
rename from locales/American/reports/uk/chromis/reports/inventorydiff_messages_en_US.properties
rename to locales/American/inventorydiff_messages_en_US.properties
index a992c865..6a70dd1f 100644
--- a/locales/American/reports/uk/chromis/reports/inventorydiff_messages_en_US.properties
+++ b/locales/American/inventorydiff_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/inventorydiffdetail_messages_en_US.properties b/locales/American/inventorydiffdetail_messages_en_US.properties
similarity index 91%
rename from locales/American/reports/uk/chromis/reports/inventorydiffdetail_messages_en_US.properties
rename to locales/American/inventorydiffdetail_messages_en_US.properties
index 98df176b..7dc2b763 100644
--- a/locales/American/reports/uk/chromis/reports/inventorydiffdetail_messages_en_US.properties
+++ b/locales/American/inventorydiffdetail_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/inventorylistdetail_messages_en_US.properties b/locales/American/inventorylistdetail_messages_en_US.properties
similarity index 90%
rename from locales/American/reports/uk/chromis/reports/inventorylistdetail_messages_en_US.properties
rename to locales/American/inventorylistdetail_messages_en_US.properties
index 3f483db4..3ec4aefc 100644
--- a/locales/American/reports/uk/chromis/reports/inventorylistdetail_messages_en_US.properties
+++ b/locales/American/inventorylistdetail_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/locales/beans_messages_en_US.properties b/locales/American/locales/beans_messages_en_US.properties
deleted file mode 100644
index ffef6905..00000000
--- a/locales/American/locales/beans_messages_en_US.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-button.cancel=Cancel
-button.ok=OK
-button.Today=Today
-title.calendar=Select a Date
-Button.Today=Today
diff --git a/locales/American/locales/data_messages_en_US.properties b/locales/American/locales/data_messages_en_US.properties
deleted file mode 100644
index f3d69e1c..00000000
--- a/locales/American/locales/data_messages_en_US.properties
+++ /dev/null
@@ -1,87 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-button.cancel=Cancel
-button.information=Info
-button.ok=OK
-
-caption.sort=Sort
-
-exception.iofile=Error reading file.
-exception.nocompare=Expected comparator for QBF.
-exception.nodataset=Data set not defined.
-exception.nofinishedfile=Sentences file not finished.
-exception.nodelete=No records deleted.
-exception.noinsert=No records created.
-exception.nonegativelimits=Negative limits not allowed.
-exception.noparamtype=Parameter type not allowed.
-exception.noreadfile=Error reading sentences file.
-exception.notnull=The value must be not null.
-exception.noupdate=No records updated.
-exception.noupdatecount=Update count not defined.
-exception.outofbounds=Out of bounds.
-exception.parserconfig=XML analyzer error. Please contact the Administrator.
-exception.xmlfile=Analysis error. Invalid XML file.
-
-label.andby=And by
-label.casesensitive=Case sensitive
-label.findwhat=Find what
-label.imagefiles=Image files
-label.match=Match
-label.sortby=Sort by
-label.where=Where
-
-list.anypart=Any part of the field
-list.re=Regular expression
-list.startfield=Start field
-list.wholefield=Whole field
-
-qbf.none=None
-qbf.null=Is null
-qbf.notnull=Is not null
-qbf.equals=Equals
-qbf.distinct=Distinct
-qbf.greater=Greater
-qbf.less=Less
-qbf.greaterequals=Greater or equal
-qbf.lessequals=Less or equals
-qbf.re=Wildcards
-
-message.changeslost=The changes will be lost. Do you want to continue?
-message.nodelete=Cannot mark the record for deleting.
-message.nolistdata=Cannot find in data list.
-message.nomove=Cannot move to other record.
-message.nonew=Cannot create a new record.
-message.norecord=Record not found.
-message.noreload=Cannot reload data list.
-message.nosave=Record not saved.
-message.nosort=The sort condition defined is not valid
-message.resizeimage=The selected image is larger than the accurate size for this field. Do you want to resize the image?
-message.wannasave=Do you want to save the changes before exit?
-
-sgn.caution=Caution\:
-sgn.danger=Danger\:
-sgn.notice=Notice\:
-sgn.important=Important\:
-sgn.success=Success\:
-sgn.unknown=Unknown\:
-sgn.warning=Warning\:
-
-title.editor=Editor message
-title.find=Find
-title.message=Database manager message
\ No newline at end of file
diff --git a/locales/American/locales/erp_messages_en_US.properties b/locales/American/locales/erp_messages_en_US.properties
deleted file mode 100644
index 0e04770b..00000000
--- a/locales/American/locales/erp_messages_en_US.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.configerp=ERP configuration
-label.erpurl=Services URL
-label.erpid=Entity code
-label.erporg=Organization code
-label.erppos=POS code
-label.erpuser=User
-label.erppassword=Password
-message.urlnotdefined=Synchronization service URL has not been defined.
-message.syncordersok=The orders synchronization has been successful.
-message.syncordersinfo={0} orders synchronized.
-message.syncproductsok=The data synchronization has been successful.
-message.syncproductsinfo={0} products synchronized.\n{1} customers synchronized.
-message.remoteexception=Communication error.
-message.serviceexception=Cannot connect to the service.
-message.malformedurlexception=The service URL is wrong.
-message.returnnull=Synchronization parameters are wrong.
-message.zeroproducts=There are no data to synchronize.
-message.zeroorders=There are no orders to synchronize.
-message.propsnotdefined=The synchronization properties resource "chromispos.properties" has not been defined.
\ No newline at end of file
diff --git a/locales/American/locales/pos_messages_en_US.properties b/locales/American/locales/pos_messages_en_US.properties
deleted file mode 100644
index 789ee6bc..00000000
--- a/locales/American/locales/pos_messages_en_US.properties
+++ /dev/null
@@ -1,594 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-Button.Cancel=Cancel
-button.catalogadd=Add
-button.catalogdel=Remove
-button.clean=Reset
-Button.Close=Exit
-Button.CloseCash=Close Cash
-button.Discount=Discount
-Button.DeleteTicket=Delete
-button.edit=Edit
-button.ExecuteChart=Run Chart
-button.executefilter=Execute
-Button.ExecuteReport=Run Report
-Button.Factory=Restore
-button.linediscount=Disc' %
-button.listtickets=List
-button.movetable=Move
-button.NewTicket=New
-Button.OK=OK
-button.opendrawer=Drawer
-button.pay=Pay
-button.peoplepassword=Password
-button.print=Print
-Button.PrintCash=Print
-button.receive=Receive
-button.refund=Refund
-button.refundall=Refund All
-button.refundit=Refund Item
-button.refundline=Refund Line
-button.refundone=Refund One
-button.reloadticket=Reload
-button.reservations=Reservations
-button.reset=Reset
-Button.Restore=Undo
-Button.Save=Save
-button.scale=Scale
-button.sendorder=Kitchen
-button.setperson=Waiter
-button.tables=Tables
-button.totaldiscount=Total Disc'
-
-caption.tickets=Tickets
-caption.upload=Upload Product List
-caption.split=Split Receipt
-
-database.ScriptError=Cannot execute the database creation script.
-database.ScriptWarning=Creation Script did not run successfully.
-Display.Null=Display not available
-Display.Screen=Screen Display
-Display.Window=Display
-
-exception.unavailabledataset=Dataset not available
-exception.unavailablefield=Field not defined\: {0}
-exception.unavailablefields=Fields not available
-
-filter.dbdriverlib=Driver library (*.jar,*.zip)
-
-form.customertitle=Customer List
-form.productslist=Product List
-form.selectprintertitle=Select Printer
-form.tickettitle=Ticket List
-
-label.address=Address Line 1
-label.address2=Address Line 2
-label.all=All
-label.attribute=Attribute
-label.attributes=Attributes
-label.attributeset=Attribute Set
-
-label.bybarcode=By Barcode
-label.bydates=By Date
-label.byform=By Form
-label.byreason=By Reason
-label.bycustomer=By Customer
-label.byproduct=By Product
-label.bywarehouse=By Location
-
-label.card=Card
-label.cardexpdate=Expiry Date
-label.cardholder=Holder's Name
-label.cardnumber=Card Number
-Label.Cash=Cash
-label.cascade=Cascade
-Label.CashMachine=Cash Register
-label.catid=ID
-label.catimage=Image
-label.catname=Category
-label.certificatepwd=Certificate Password
-label.certificatepath=Certificate
-Label.ChangeCash=Change
-label.city=Town/City
-label.commerceid=Commerce ID
-label.commercepwd=Commerce P/wd
-label.commercesign=Commerce Sign
-label.contact=Contact
-label.country=Country
-label.curdebt=Current Debt
-label.curdate=Debt Date
-label.currency=Currency
-label.customer=Customer
-label.custtaxcategory=Customer Tax Category
-
-Label.Database=Database
-label.date=Date
-label.datestitle=Cash Dates
-label.datetime=Date Time
-Label.DbDriver=Driver Class
-label.dbdriverlib=Driver Library
-Label.DbPassword=Password
-Label.DbURL=URL
-Label.DbUser=User
-label.debt=Debt
-label.double=Double
-label.dutyid=ID
-label.dutyname=Tax Name
-label.dutyrate=Rate
-
-label.editline=Edit Line
-label.email=email
-Label.EndDate=End Date
-
-label.fax=Fax
-label.firstname=First Name
-label.floorid=ID
-label.floorname=Floor
-
-label.image=Image
-Label.InputCash=Given
-label.integer=Integer
-label.item=Item
-
-label.javapos.drawer=Drawer Name
-label.javapos.printer=Printer Name
-
-label.lastname=Last Name
-label.lindediscount=Disc' %
-label.LoadError=Error trying to show this functionality
-label.locale=Locale
-label.location=Address
-label.locationaddress=Address
-label.locationid=ID
-label.locationname=Name
-label.looknfeel=Skin
-
-Label.MachineDisplay=Customer Display
-label.machinedisplayconn=Mode
-label.machinedisplayport=Port
-Label.MachineName=Name
-Label.MachinePrinter=Printer
-Label.MachinePrinter2=Printer 2
-Label.MachinePrinter3=Printer 3
-label.machineprinterport=Port
-Label.MachineScreen=Screen
-label.magcardreader=Mag Card Reader
-label.maxdebt=Credit Limit
-label.maximum=Maximum
-label.merchantcode=Merchant Code
-label.minimum=Minimum
-label.money=Total
-
-label.packsinstock=In stock
-label.packof= packs of
-label.packstosplit=Packs to split
-label.productinpack=Product in pack
-label.split=Split
-
-label.name=Name
-Label.Name=Name
-label.notes=Notes
-label.noticketstoclose=No Bills to Close
-label.nullcategory=(No Category)
-
-label.order=Order
-
-Label.Password=Password
-label.passwordnew=New Password
-label.passwordold=Old Password
-label.passwordrepeat=Repeat Password
-Label.Payment=Payment
-label.paymentdate=Date
-label.paymentgateway=Payment Gateway
-label.paymentnote=Notes
-label.paymentreason=Reason
-label.paymentstitle=Payments Report
-label.paymenttestmode=Test Mode
-label.paymenttotal=Amount
-label.peopleimage=Image
-label.peoplename=Name
-label.peoplevisible=Visible
-label.percent=Percent
-label.phone=Phone
-label.phone2=Cell Phone
-label.placefloor=Floor
-label.placeid=ID
-label.placename=Place
-label.placeposition=Position
-label.postal=Zip
-label.price=Price
-label.pricetax=Price + Taxes
-label.printtokitchen=Print to Kitchen
-label.prodaux=Auxiliaries
-label.prodbarcode=Barcode
-label.prodcategory=Category
-label.prodcost=Cost
-label.prodgeneral=General
-label.prodincatalog=In Catalog
-label.prodname=Name
-label.prodorder=Catalog ranking
-label.prodpricebuy=Buy Price
-label.prodpricesell=Sell Price
-label.prodpriceselltax=Sell Price + Tax
-label.prodproperties=Properties
-label.prodref=Reference
-label.prodscale=Scale
-label.prodstock=Stock
-label.prodstockcost=Stock Cost by Year
-label.prodstockmax=Maximum Level
-label.prodstocksec=Minimum Level
-label.prodstockvol=Stock Volume
-label.produnits=Units
-label.prodvaluebuy=Buy Value
-label.prodvaluesell=Sell Value
-label.prodvolume=Volume
-label.properties=Properties
-
-label.receiptprinter=Receipt Printer
-label.recorddeleted=(Record Deleted)
-label.recordeof=(No Records)
-label.recordnew=(New Record)
-label.refunds=Refunds
-label.region=State/County
-label.remainingcash=Remaining
-label.reportsprinter=Reports Printer
-label.resname=Resource
-label.restaurantcustomer=Receiving Customer {0}. Select an empty table.
-label.restaurantmove=Moving table {0}. Select another Table or the original Table
-label.role=Role
-
-label.sales=Sales
-label.salestitle=Sales Report
-label.scale=Scale
-label.scaleinput=Enter Weight
-label.scanner=Scanner
-label.search=Search
-label.searchkey=Search Key
-label.sequence=Sequence
-label.sha=SHA
-Label.StartDate=Start Date
-label.stockdate=Date
-label.stockproduct=Product
-label.stockreason=Reason
-label.storename=Store Name
-label.subtotalcash=Subtotal
-
-label.table=Table
-label.tax=Taxes
-label.taxcash=Taxes
-label.taxcategory=Tax Category
-label.taxes=Taxes
-label.taxid=Account ID
-label.taxparent=Parent Tax
-label.terminal=Terminal
-label.ticketid=Ticket #
-Label.Tickets=Payments
-Label.Ticketsbag=Tickets
-label.time=Time
-label.totalcash=Total
-label.totaldiscount=Total Disc'
-label.type=Type
-
-label.units=Units
-label.uploadingproducts=Uploading Products. Please wait...
-label.user=User
-
-label.value=Value
-label.visible=Visible
-
-label.warehouse=Product
-
-Menu.Attributes=Product Attributes
-Menu.AttributeSets=Product Attribute Sets
-Menu.AttributeUse=Product Attribute Use
-Menu.AttributeValues=Attribute values
-Menu.Auxiliar=Auxiliary products
-
-Menu.Backoffice=Administration
-
-Menu.CashFlow=Cash-Flow
-Menu.CashRegisterLog=Transaction Log
-Menu.CategorySales=Category Sales
-Menu.Catalog=Catalog
-Menu.Categories=Categories
-Menu.CategoryProductSalesChart=Category Sales Chart
-Menu.ChangePassword=Change Password
-Menu.ClosedProducts=Product Sales
-Menu.CloseTPV=Close Cash
-Menu.Closing=Cash Closed
-Menu.Configuration=Configuration
-Menu.Customers=Customers
-Menu.Customers.Reports=Reports
-Menu.CustomersBReport=Debtors (Card Style)
-Menu.CustomersDiary=Customers Diary
-Menu.CustomersList=Customers List
-Menu.CustomersManagement=Customers
-Menu.CustomersPayment=Customer Payment
-Menu.CustomersReport=Customers (Card Style)
-
-Menu.ERPOrders=ERP Order Synchronisation
-Menu.ERPProducts=POS Synchronisation
-Menu.Exit=Logout
-Menu.ExtendedByProducts=Extended Product Sales
-Menu.ExtendedCashRegisterLog=Extended Transaction Log
-Menu.ExtendedSales=Extended Sales
-
-Menu.Floors=Floors
-
-Menu.Inventory=Inventory
-Menu.Inventory2=Current Inventory
-Menu.InventoryBroken=Inventory: Broken
-Menu.InventoryDiff=Inventory: Difference
-Menu.InventoryDiffDetail=Inventory: Difference Detail
-Menu.InventoryListDetail=Inventory: List Detail
-Menu.InventoryReOrder=Inventory: Re-Order
-
-Menu.Locations=Locations
-
-Menu.Main=Main
-Menu.Maintenance=Maintenance
-Menu.Maintenance.ERP=Chromis ERP
-Menu.Maintenance.POS=Point Of Sale
-Menu.Maintenance.Reports=Reports
-
-Menu.PaymentReport=Payments
-Menu.Payments=Payments
-Menu.Printer=Printers
-Menu.ProductLabels=Product Labels
-Menu.Products=Products
-Menu.ProductSales=Product Sales
-Menu.ProductsWarehouse=Product Location
-Menu.ProductPacks=Product Packs
-Menu.StockChanges=Stock Changes
-Menu.StockChangesReport=Stock Changes Report
-Menu.Promotions=Promotions
-Menu.PromotionsReport=Promotions Report
-
-Menu.Reports=Reports
-Menu.ReportTaxes=Tax Summary
-Menu.Resources=Resources
-Menu.Roles=Roles
-
-Menu.SalesByCustomer=Sales By Customer
-Menu.SaleCatalog=Catalogue
-Menu.SalesChart=Sales Chart
-Menu.SalesManagement=Sales
-Menu.SalesManagement.Reports=Reports
-Menu.SalesProfit=Product Sales Profit
-Menu.SaleTaxes=Sales Taxes
-Menu.StockDiary=Stock Diary
-Menu.StockManagement=Stock
-Menu.StockManagement.Edit=Maintenance
-Menu.StockManagement.Reports=Reports
-Menu.StockMovement=Stock Movement
-Menu.System=System
-
-Menu.Tables=Tables
-Menu.Taxes=Taxes
-Menu.TaxCustCategories=Customer Tax Categories
-Menu.TaxCategories=Tax Categories
-Menu.ThirdParties=Suppliers
-Menu.ThirdPartiesManagement=Supplier Management
-Menu.Ticket=Sales
-Menu.TicketEdit=Edit Sales
-Menu.TicketRefund=Refunds
-Menu.Top10Sales=Top 10 Sales
-
-Menu.Users=Users
-Menu.UsersReport=Users
-Menu.UserSells=Sales by User
-
-message.BadPassword=Invalid Password. Please Retry
-
-message.cannotcalculatetaxes=Unable to calculate Receipt taxes.\nOne or more Products Taxes is not configured properly
-message.cannotchangepassword=Cannot change Password
-message.cannotclosecash=Cannot Close Cash
-message.cannotdeleteconfig=Config' file cannot be Deleted
-message.cannotexecute=Unable to execute action
-message.cannotfillchart=Unable to Load Chart Data
-message.cannotfillreport=Unable to load Report Data
-message.cannotfindattributes=No Attributes set for this Product
-message.cannotfindcustomer=Cannot find Customer data
-message.cannotloadlists=Cannot load list data
-message.cannotloadreport=Unable to Load Report Definition
-message.cannotloadreportdata=Unable to Load Report Data
-message.cannotloadresourcedata=Unable to Load Report Resources
-message.cannotloadticket=Unable to load the receipt
-message.CannotMove=Unable to Move to Record
-message.cannotprint=Unable to Print
-message.cannotprintline=Unable to Print Line
-message.cannotprintticket=Unable to Print Receipt
-message.cannotsaveconfig=Unable to Save Config' file
-message.cannotsaveinventorydata=Unable to save Inventory data
-message.cardnew=Card value will change. Do you want to continue?
-message.cardremove=Card value will be removed. Do you want to continue?
-
-message.changepassworddistinct=Confirm Password
-message.changeserver=Change current Server is in Development
-message.closecashok=Cash Closed OK
-message.configfactory=Are you sure you want to Restore Factory Values?
-message.configrestore=Are you sure you want to Undo Changes?
-message.createdatabase=A working database cannot be detected. A default database will be created. Do you want to continue?
-message.customerdebtexceded=Customer Credit Limit exceeded
-
-message.databaseconnectionerror=Unable to connect to database: Database not available
-message.databasedrivererror=Unable to connect to database: Database driver not found
-message.databasenotsupported=Database "{0}" not supported
-
-message.mergetable=Merge Tables
-message.mergetablequestion=Are you sure you want to Merge Tables?
-
-message.nocard=User Card not found. Please Retry
-message.nocardreader=Card Reader is not configured
-message.nocustomer=Customer with this code does not exists
-message.nocustomernodebt=This Receipt is not assigned.\nIt cannot be paid - Debt.
-message.nopaymentgateway=Payment Gateway is not configured
-message.noprinters=No Printers installed
-message.noproduct=Product with this Code does not exist
-message.nosaveticket=Unable to Save Sales Ticket
-message.notactive=Panel Load Error
-message.notexiststicket=Receipt does not exist
-message.noticket=Receipt no longer exists
-message.notpermissions=You are not allowed to Execute this task
-message.noupdatescript=A database from a previous version has been detected but it is not possible to upgrade the database automatically. Chromis POS will exit now.
-message.noweight=Weighing has not been possible
-
-message.paymentcashneg=Make the Refund. Then press OK
-message.paymenterror=Payment Transaction Error!
-message.paymenterrorunknown=Unknown Payment Transaction Error!
-message.paymentexceptionremote=Remote Payment Error!
-message.paymentexceptionservice=Payment Service exception Error!
-message.paymentfree=Free
-message.paymentgatewayext=Make the Card Payment then press OK
-message.paymentgatewayextrefund=Make the Card Refund then press OK
-message.paymentgatewayswipe=Swipe the Card then press OK
-message.paymentgatewaytype=Type the Card details then press OK
-message.paymentnotauthorised=Transaction Not Authorised
-message.paymentrefundsnotsupported=Refunds not supported
-message.preparescanner=Prepare the ScanPal scanner to upload the Product List then press OK
-message.printererror=Unable to print Receipt
-message.productnotselected=No Product selected
-message.stockchangesactioned=Stock Changes Actioned
-
-message.restartchanges=Configuration Saved successfully. Changes will be applied on next system Restart
-
-message.scannerfail=Product List Upload failed
-message.scannerfail2=Product List Download failed
-message.scannerok=Product List Upload successful
-
-message.tableempty=Table is now empty
-message.tablefull=Table is now full
-message.title=Cash Register message
-
-message.updatedatabase=A database from a previous version has been detected. The database will be upgraded automatically. DATA MAY BE LOST. FIRST CREATE A BACKUP. Do you want to continue?
-
-message.wannaclosecash=Are you sure you want to Close Cash?
-message.wannadelete=Are you sure you want to Delete the current Order?
-message.wannasave=Save changes before exit?
-
-payment.title=Payment
-
-Printer.Null=Printer Not Available
-Printer.Screen=Screen Printer
-Printer.Serial=Ticket Printer
-
-resource.binary=Binary
-resource.image=Image
-resource.text=Text
-
-rest.label.chairs=Chairs
-rest.label.customer=Customer
-rest.label.date=Booking
-rest.label.notes=Notes
-
-scale.notdefined=Scale not Defined
-scale.invalidvalue=Scale invalid value
-scale.weighitem=Weigh Item
-
-stock.in.movement=(In) Movement
-stock.in.purchase=(In) Purchase
-stock.in.refund=(In) Refund
-stock.out.break=(Out) Breakage
-stock.out.crossing=Crossing
-stock.out.movement=(Out) Movement
-stock.out.refund=(Out) Refund
-stock.out.sale=(Out) Sale
-stock.in.openpack=(In) Open Pack
-stock.out.openpack=(Out) Open Pack
-stock.in.stockchange=(In) Stock Change
-stock.out.stockchange=(Out) Stock Change
-
-tab.bank=Bank
-tab.cash=Cash
-tab.cashrefund=Refund
-tab.cheque=Check
-tab.chequerefund=Check Refund
-tab.free=Free
-tab.magcard=Card
-tab.paper=Voucher
-tab.debt=Debt
-
-title.changepassword=Change Password
-title.editor=Info' message
-
-transpayment.bank=Bank
-transpayment.cash=Cash
-transpayment.cashin=(In) Cash
-transpayment.cashout=(Out) Cash
-transpayment.cashrefund=Refund
-transpayment.cheque=Check
-transpayment.chequerefund=Check Refund
-transpayment.free=Free
-transpayment.magcard=Card
-transpayment.magcardrefund=Card Refund
-transpayment.paperin=Coupon
-transpayment.paperout=Coupon
-transpayment.debt=Debt
-transpayment.debtpaid=Debt Paid
-
-Visor.Title=Chromis POS
-
-# Employee Presence Management
-Menu.Leaves=Leaves
-Menu.Breaks=Breaks
-Menu.CheckInCheckOut=Check In/Out
-Menu.PresenceManagement=Presence Management
-Menu.Employees.Reports=Reports
-Menu.DailyPresenceReport=Daily Presence
-Menu.DailyScheduleReport=Daily Schedule
-Menu.PerformanceReport=Performance
-label.epm.employee=Employee
-label.epm.employee.id=Employee ID
-label.epm.startdate=Start Date
-label.epm.enddate=End Date
-label.epm.notes=Notes
-label.epm.visible=Visible
-message.cannotfindemployee=Cannot find employee
-message.invalidenddate=End Date cannot be set before System or Start Date
-message.invalidstartdate=Start Date cannot be before System Date
-message.leavefor=left for
-message.at=at
-message.probleminbreak=Error in break
-message.leavecontrol=is on leave. To check In: contact your Manager to Cancel leave
-message.checkedin=has Checked In at
-message.checkedout=has Checked Out at
-message.cannotcheckin=Cannot Check In
-message.cannotcheckout=Cannot Check Out
-message.noshift=has no previous shift
-message.breakoverandcheckedin='s Break is over and Checked In at
-message.breakoverandcheckedout='s break is over and Checked Out at
-Database.ScriptError=Oops! There's a problem with this database script
-Label.ValidFrom=Valid From
-label.from=From
-Database.ScriptWarning=Oops! There's a problem with this database script
-label.to=To
-Button.NewTicket=New Ticket
-button.discount=Discount
-button.discountticket=Discount Ticket
-Button.ExecuteChart=Run Chart
-display.Null=Display not available
-display.Screen=Screen Display
-display.Window=Display
-Label.LoadError=Error trying to show this functionality
-label.prodtax=Tax
-label.tickettype=Ticket Type
-label.timeframe=Date
-label.timeperiod=Period
-tab.ticket=Ticket
-transpayment.ticket=Ticket
diff --git a/locales/American/reports/uk/chromis/reports/paymentreport_messages_en_US.properties b/locales/American/paymentreport_messages_en_US.properties
similarity index 91%
rename from locales/American/reports/uk/chromis/reports/paymentreport_messages_en_US.properties
rename to locales/American/paymentreport_messages_en_US.properties
index 82bd9c83..b1fa93f8 100644
--- a/locales/American/reports/uk/chromis/reports/paymentreport_messages_en_US.properties
+++ b/locales/American/paymentreport_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/people_messages_en_US.properties b/locales/American/people_messages_en_US.properties
similarity index 89%
rename from locales/American/reports/uk/chromis/reports/people_messages_en_US.properties
rename to locales/American/people_messages_en_US.properties
index 4de7ffe7..849521bc 100644
--- a/locales/American/reports/uk/chromis/reports/people_messages_en_US.properties
+++ b/locales/American/people_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/piesalescat_messages_en_US.properties b/locales/American/piesalescat_messages_en_US.properties
similarity index 91%
rename from locales/American/reports/uk/chromis/reports/piesalescat_messages_en_US.properties
rename to locales/American/piesalescat_messages_en_US.properties
index 255e3389..c2825430 100644
--- a/locales/American/reports/uk/chromis/reports/piesalescat_messages_en_US.properties
+++ b/locales/American/piesalescat_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/productlabels_messages_en_US.properties b/locales/American/productlabels_messages_en_US.properties
similarity index 89%
rename from locales/American/reports/uk/chromis/reports/productlabels_messages_en_US.properties
rename to locales/American/productlabels_messages_en_US.properties
index ee99fabc..21753d4e 100644
--- a/locales/American/reports/uk/chromis/reports/productlabels_messages_en_US.properties
+++ b/locales/American/productlabels_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/products_messages_en_US.properties b/locales/American/products_messages_en_US.properties
similarity index 91%
rename from locales/American/reports/uk/chromis/reports/products_messages_en_US.properties
rename to locales/American/products_messages_en_US.properties
index 3b2b4d60..e7d4d7c7 100644
--- a/locales/American/reports/uk/chromis/reports/products_messages_en_US.properties
+++ b/locales/American/products_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/productsales_messages_en_US.properties b/locales/American/productsales_messages_en_US.properties
similarity index 90%
rename from locales/American/reports/uk/chromis/reports/productsales_messages_en_US.properties
rename to locales/American/productsales_messages_en_US.properties
index 3c238ebf..bc4cc01b 100644
--- a/locales/American/reports/uk/chromis/reports/productsales_messages_en_US.properties
+++ b/locales/American/productsales_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/productsalesprofit_messages_en_US.properties b/locales/American/productsalesprofit_messages_en_US.properties
similarity index 91%
rename from locales/American/reports/uk/chromis/reports/productsalesprofit_messages_en_US.properties
rename to locales/American/productsalesprofit_messages_en_US.properties
index fd8f0e04..c3348f31 100644
--- a/locales/American/reports/uk/chromis/reports/productsalesprofit_messages_en_US.properties
+++ b/locales/American/productsalesprofit_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/productscatalog_messages_en_US.properties b/locales/American/productscatalog_messages_en_US.properties
similarity index 91%
rename from locales/American/reports/uk/chromis/reports/productscatalog_messages_en_US.properties
rename to locales/American/productscatalog_messages_en_US.properties
index 955d4db1..1bfd94df 100644
--- a/locales/American/reports/uk/chromis/reports/productscatalog_messages_en_US.properties
+++ b/locales/American/productscatalog_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/salebycustomer_messages_en_US.properties b/locales/American/salebycustomer_messages_en_US.properties
similarity index 91%
rename from locales/American/reports/uk/chromis/reports/salebycustomer_messages_en_US.properties
rename to locales/American/salebycustomer_messages_en_US.properties
index 017b9dee..d7efdf47 100644
--- a/locales/American/reports/uk/chromis/reports/salebycustomer_messages_en_US.properties
+++ b/locales/American/salebycustomer_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/salecatalog_messages_en_US.properties b/locales/American/salecatalog_messages_en_US.properties
similarity index 89%
rename from locales/American/reports/uk/chromis/reports/salecatalog_messages_en_US.properties
rename to locales/American/salecatalog_messages_en_US.properties
index 6608c94e..3e1f310f 100644
--- a/locales/American/reports/uk/chromis/reports/salecatalog_messages_en_US.properties
+++ b/locales/American/salecatalog_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/saletaxes_messages_en_US.properties b/locales/American/saletaxes_messages_en_US.properties
similarity index 91%
rename from locales/American/reports/uk/chromis/reports/saletaxes_messages_en_US.properties
rename to locales/American/saletaxes_messages_en_US.properties
index 087766da..72fd990e 100644
--- a/locales/American/reports/uk/chromis/reports/saletaxes_messages_en_US.properties
+++ b/locales/American/saletaxes_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/taxcatsales_message_en_US.properties b/locales/American/taxcatsales_message_en_US.properties
similarity index 90%
rename from locales/American/reports/uk/chromis/reports/taxcatsales_message_en_US.properties
rename to locales/American/taxcatsales_message_en_US.properties
index 0547d709..029128ed 100644
--- a/locales/American/reports/uk/chromis/reports/taxcatsales_message_en_US.properties
+++ b/locales/American/taxcatsales_message_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/taxes_messages_en_US.properties b/locales/American/taxes_messages_en_US.properties
similarity index 91%
rename from locales/American/reports/uk/chromis/reports/taxes_messages_en_US.properties
rename to locales/American/taxes_messages_en_US.properties
index a45736f6..25bb73c4 100644
--- a/locales/American/reports/uk/chromis/reports/taxes_messages_en_US.properties
+++ b/locales/American/taxes_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/timeseriesproduct_messages_en_US.properties b/locales/American/timeseriesproduct_messages_en_US.properties
similarity index 92%
rename from locales/American/reports/uk/chromis/reports/timeseriesproduct_messages_en_US.properties
rename to locales/American/timeseriesproduct_messages_en_US.properties
index 0674bf72..fe354a4e 100644
--- a/locales/American/reports/uk/chromis/reports/timeseriesproduct_messages_en_US.properties
+++ b/locales/American/timeseriesproduct_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/top10sales_messages_en_US.properties b/locales/American/top10sales_messages_en_US.properties
similarity index 90%
rename from locales/American/reports/uk/chromis/reports/top10sales_messages_en_US.properties
rename to locales/American/top10sales_messages_en_US.properties
index b5fe8eff..6cb25185 100644
--- a/locales/American/reports/uk/chromis/reports/top10sales_messages_en_US.properties
+++ b/locales/American/top10sales_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/American/reports/uk/chromis/reports/usersales_messages_en_US.properties b/locales/American/usersales_messages_en_US.properties
similarity index 91%
rename from locales/American/reports/uk/chromis/reports/usersales_messages_en_US.properties
rename to locales/American/usersales_messages_en_US.properties
index 6b09506c..cefdda75 100644
--- a/locales/American/reports/uk/chromis/reports/usersales_messages_en_US.properties
+++ b/locales/American/usersales_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Arabic/beans_messages_ar.properties b/locales/Arabic/beans_messages_ar.properties
deleted file mode 100644
index f070b1c9..00000000
--- a/locales/Arabic/beans_messages_ar.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-button.cancel=\u0625\u0644\u063a\u0627\u0621
-button.ok=\u0648\u0627\u0641\u0642
-button.Today=\u0627\u0644\u064a\u0648\u0645
-title.calendar=\u062d\u062f\u062f \u0627\u0644\u062a\u0627\u0631\u064a\u062e
-Button.Today=\u0627\u0644\u064a\u0648\u0645
\ No newline at end of file
diff --git a/locales/Arabic/reports/uk/chromis/reports/cashflow_messages_ar.properties b/locales/Arabic/cashflow_messages_ar.properties
similarity index 95%
rename from locales/Arabic/reports/uk/chromis/reports/cashflow_messages_ar.properties
rename to locales/Arabic/cashflow_messages_ar.properties
index 55cdf53d..4c265247 100644
--- a/locales/Arabic/reports/uk/chromis/reports/cashflow_messages_ar.properties
+++ b/locales/Arabic/cashflow_messages_ar.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Arabic/reports/uk/chromis/reports/cashregisterlog_messages_ar.properties b/locales/Arabic/cashregisterlog_messages_ar.properties
similarity index 96%
rename from locales/Arabic/reports/uk/chromis/reports/cashregisterlog_messages_ar.properties
rename to locales/Arabic/cashregisterlog_messages_ar.properties
index 0b089c2f..0d15f8c3 100644
--- a/locales/Arabic/reports/uk/chromis/reports/cashregisterlog_messages_ar.properties
+++ b/locales/Arabic/cashregisterlog_messages_ar.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Arabic/reports/uk/chromis/reports/categorysales_messages_ar.properties b/locales/Arabic/categorysales_messages_ar.properties
similarity index 93%
rename from locales/Arabic/reports/uk/chromis/reports/categorysales_messages_ar.properties
rename to locales/Arabic/categorysales_messages_ar.properties
index accaf541..88587d8c 100644
--- a/locales/Arabic/reports/uk/chromis/reports/categorysales_messages_ar.properties
+++ b/locales/Arabic/categorysales_messages_ar.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Arabic/reports/uk/chromis/reports/chartsales_messages_ar.properties b/locales/Arabic/chartsales_messages_ar.properties
similarity index 92%
rename from locales/Arabic/reports/uk/chromis/reports/chartsales_messages_ar.properties
rename to locales/Arabic/chartsales_messages_ar.properties
index 37a3980b..3e478b20 100644
--- a/locales/Arabic/reports/uk/chromis/reports/chartsales_messages_ar.properties
+++ b/locales/Arabic/chartsales_messages_ar.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Arabic/reports/uk/chromis/reports/closedpos_messages_ar.properties b/locales/Arabic/closedpos_messages_ar.properties
similarity index 95%
rename from locales/Arabic/reports/uk/chromis/reports/closedpos_messages_ar.properties
rename to locales/Arabic/closedpos_messages_ar.properties
index 9703cfcf..01e6fe2b 100644
--- a/locales/Arabic/reports/uk/chromis/reports/closedpos_messages_ar.properties
+++ b/locales/Arabic/closedpos_messages_ar.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -27,6 +27,7 @@ label.terminaltotal=\u0627\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0645\u062
label.subtotal=\u0627\u062c\u0645\u0627\u0644\u064a \u062c\u0632\u0626\u064a
label.period=\u0627\u0644\u0641\u062a\u0631\u0629:
label.printed=\u0645\u0637\u0628\u0648\u0639
+transpayment.bank=\u0628\u0646\u0643
transpayment.cash=\u0646\u0642\u062f
transpayment.magcard=\u0628\u0637\u0627\u0642\u0629 \u0627\u0626\u062a\u0645\u0627\u0646\u064a\u0629
transpayment.cashrefund=\u0645\u0631\u062a\u062c\u0639
diff --git a/locales/Arabic/reports/uk/chromis/reports/closedproducts_messages_ar.properties b/locales/Arabic/closedproducts_messages_ar.properties
similarity index 94%
rename from locales/Arabic/reports/uk/chromis/reports/closedproducts_messages_ar.properties
rename to locales/Arabic/closedproducts_messages_ar.properties
index 5c2a3394..6d7a8721 100644
--- a/locales/Arabic/reports/uk/chromis/reports/closedproducts_messages_ar.properties
+++ b/locales/Arabic/closedproducts_messages_ar.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Arabic/reports/uk/chromis/reports/customers_messages_ar.properties b/locales/Arabic/customers_messages_ar.properties
similarity index 91%
rename from locales/Arabic/reports/uk/chromis/reports/customers_messages_ar.properties
rename to locales/Arabic/customers_messages_ar.properties
index 10915825..729fddd2 100644
--- a/locales/Arabic/reports/uk/chromis/reports/customers_messages_ar.properties
+++ b/locales/Arabic/customers_messages_ar.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -23,3 +23,4 @@ label.curdebt=\u0627\u064a\u062f\u0627\u0639 \u0627\u0644\u062d\u0627\u0644\u064
label.curdate=\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0627\u064a\u062f\u0627\u0639
label.notes=\u0645\u0644\u0627\u062d\u0638\u0627\u062a
label.taxid=\u0631\u0642\u0645 \u0627\u0644\u062d\u0633\u0627\u0628
+label.discount=Discount
diff --git a/locales/Arabic/reports/uk/chromis/reports/customersdiary_messages_ar.properties b/locales/Arabic/customersdiary_messages_ar.properties
similarity index 92%
rename from locales/Arabic/reports/uk/chromis/reports/customersdiary_messages_ar.properties
rename to locales/Arabic/customersdiary_messages_ar.properties
index 5cb4f0e0..424c446a 100644
--- a/locales/Arabic/reports/uk/chromis/reports/customersdiary_messages_ar.properties
+++ b/locales/Arabic/customersdiary_messages_ar.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Arabic/data_messages_ar.properties b/locales/Arabic/data_messages_ar.properties
deleted file mode 100644
index 5e08ad08..00000000
--- a/locales/Arabic/data_messages_ar.properties
+++ /dev/null
@@ -1,83 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-button.cancel=\u0625\u0644\u063a\u0627\u0621
-button.information=\u0645\u0639\u0644\u0648\u0645\u0627\u062a
-button.ok=\u0648\u0627\u0641\u0642
-caption.sort=\u062a\u0631\u062a\u064a\u0628
-exception.iofile=\u062e\u0637\u0623 \u0641\u064a \u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u0644\u0641.
-exception.nocompare=\u0627\u0644\u0645\u0642\u0627\u0631\u0646\u0629 \u0627\u0644\u0645\u062a\u0648\u0642\u0639\u0629 \u0644\u0644QBF.
-exception.nodataset=\u0645\u062c\u0645\u0648\u0639\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u063a\u064a\u0631 \u0645\u0639\u0631\u0641\u0629.
-exception.nofinishedfile=\u0645\u0644\u0641 \u0627\u0644\u062c\u0645\u0644 \u0644\u0645 \u064a\u0646\u062a\u0647.
-exception.nodelete=\u0644\u0627 \u0633\u062c\u0644\u0627\u062a \u0645\u062d\u0630\u0648\u0641\u0629.
-exception.noinsert=\u0644\u0627 \u0633\u062c\u0644\u0627\u062a \u0645\u0646\u0634\u0623\u0629.
-exception.nonegativelimits=\u0627\u0644\u062d\u062f\u0648\u062f \u0627\u0644\u0633\u0627\u0644\u0628\u0629 \u063a\u064a\u0631 \u0645\u0633\u0645\u0648\u062d \u0628\u0647\u0627.
-exception.noparamtype=\u0646\u0648\u0639 \u0645\u0639\u0644\u0645\u0629 \u063a\u064a\u0631 \u0645\u0633\u0645\u0648\u062d \u0628\u0647\u0627.
-exception.noreadfile=\u0645\u0644\u0641 \u0627\u0644\u062c\u0645\u0644 \u0642\u0631\u0627\u0621\u0629 \u062e\u0637\u0623.
-exception.notnull=\u064a\u062c\u0628 \u0623\u0646 \u062a\u0643\u0648\u0646 \u0627\u0644\u0642\u064a\u0645\u0629 \u063a\u064a\u0631 \u0641\u0627\u0631\u063a\u0629.
-exception.noupdate=\u0644\u0627 \u062a\u0648\u062c\u062f \u0633\u062c\u0644\u0627\u062a \u0645\u062d\u062f\u062b\u0629.
-exception.noupdatecount=\u062a\u062d\u062f\u064a\u062b \u0639\u062f\u062f \u063a\u064a\u0631 \u0645\u0639\u0631\u0641.
-exception.outofbounds=\u062e\u0627\u0631\u062c \u0627\u0644\u062d\u062f\u0648\u062f.
-exception.parserconfig=\u062e\u0637\u0623 \u0645\u062d\u0644\u0644 XML. \u064a\u0631\u062c\u0649 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0645\u062f\u064a\u0631 \u0627\u0644\u0628\u0631\u0646\u0627\u0645\u062c.
-exception.xmlfile=\u062e\u0637\u0623 \u0627\u0644\u062a\u062d\u0644\u064a\u0644. \u0645\u0644\u0641 XML \u063a\u064a\u0631 \u0635\u0627\u0644\u062d.
-label.andby=And by
-label.casesensitive=\u062a\u062d\u0633\u0633 \u062d\u0627\u0644\u0629 \u0627\u0644\u0623\u062d\u0631\u0641
-label.findwhat=\u0625\u064a\u062c\u0627\u062f \u0645\u0627\u0630\u0627
-label.imagefiles=\u0645\u0644\u0641\u0627\u062a \u0627\u0644\u0635\u0648\u0631
-label.match=\u062a\u0637\u0627\u0628\u0642
-label.sortby=\u062a\u0631\u062a\u064a\u0628 \u062d\u0633\u0628
-label.where=\u0623\u064a\u0646
-list.anypart=\u0623\u064a \u062c\u0632\u0621 \u0641\u064a \u0627\u0644\u062d\u0642\u0644
-list.re=\u062a\u0639\u0628\u064a\u0631 \u0645\u0639\u062a\u0627\u062f
-list.startfield=\u0628\u062f\u0627\u064a\u0629 \u0627\u0644\u062d\u0642\u0644
-list.wholefield=\u0627\u0644\u062d\u0642\u0644 \u0628\u0627\u0644\u0643\u0627\u0645\u0644
-qbf.none=\u0644\u0627 \u0634\u064a\u0621
-qbf.null=\u0644\u0627\u063a
-qbf.notnull=\u0644\u064a\u0633 \u0644\u0627\u063a
-qbf.equals=\u062a\u0633\u0627\u0648\u064a
-qbf.distinct=\u0645\u062a\u0645\u064a\u0632
-qbf.greater=\u0623\u0643\u0628\u0631
-qbf.less=\u0623\u0642\u0644
-qbf.greaterequals=\u0623\u0643\u0628\u0631 \u0623\u0648 \u064a\u0633\u0627\u0648\u064a
-qbf.lessequals=\u0623\u0642\u0644 \u0623\u0648 \u064a\u0633\u0627\u0648\u064a
-qbf.re=\u0623\u062d\u0631\u0641 \u0628\u062f\u0644
-message.changeslost=\u0633\u062a\u0641\u0642\u062f \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a. \u0647\u0644 \u062a\u0631\u063a\u0628 \u0641\u064a \u0627\u0644\u0627\u0633\u062a\u0645\u0631\u0627\u0631\u061f?
-message.nodelete=\u064a\u062a\u0639\u0630\u0631 \u0648\u0636\u0639 \u0625\u0634\u0627\u0631\u0629 \u0644\u0644\u0633\u062c\u0644 \u0644\u0644\u062d\u0630\u0641.
-message.nolistdata=\u063a\u064a\u0631 \u0645\u062a\u0648\u0641\u0631 \u0641\u064a \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a.
-message.nomove=\u0644\u0627 \u064a\u0645\u0643\u0646 \u0627\u0644\u0627\u0646\u062a\u0642\u0627\u0644 \u0625\u0644\u0649 \u0633\u062c\u0644 \u0622\u062e\u0631.
-message.nonew=\u0644\u0627 \u064a\u0645\u0643\u0646 \u0625\u0646\u0634\u0627\u0621 \u0633\u062c\u0644 \u062c\u062f\u064a\u062f.
-message.norecord=\u0633\u062c\u0644 \u063a\u064a\u0631 \u0645\u0648\u062c\u0648\u062f.
-message.noreload=\u0644\u0627 \u064a\u0645\u0643\u0646 \u062a\u062d\u0645\u064a\u0644 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a.
-message.nosave=\u0644\u0645 \u064a\u062d\u0641\u0638 \u0627\u0644\u0633\u062c\u0644.
-message.nosort=\u0634\u0631\u0637 \u0627\u0644\u0641\u0631\u0632 \u0627\u0644\u0645\u062d\u062f\u062f \u063a\u064a\u0631 \u0635\u0627\u0644\u062d
-message.resizeimage=\u0627\u0644\u0635\u0648\u0631\u0629 \u0627\u0644\u0645\u062d\u062f\u062f\u0629 \u0623\u0643\u0628\u0631 \u0645\u0646 \u062d\u062c\u0645 \u062f\u0642\u0629 \u0647\u0630\u0627 \u0627\u0644\u062d\u0642\u0644. \u0647\u0644 \u062a\u0631\u064a\u062f \u062a\u063a\u064a\u064a\u0631 \u062d\u062c\u0645 \u0627\u0644\u0635\u0648\u0631\u0629\u061f?
-message.wannasave=\u0647\u0644 \u062a\u0631\u064a\u062f \u062d\u0641\u0638 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a \u0642\u0628\u0644 \u0627\u0644\u062e\u0631\u0648\u062c\u061f?
-sgn.caution=\u062a\u0646\u0628\u064a\u0647:
-sgn.danger=\u062e\u0637\u0631:
-sgn.notice=\u0644\u0627\u062d\u0638:
-sgn.important=\u0645\u0647\u0645:
-sgn.success=\u0646\u062c\u0627\u062d:
-sgn.unknown=\u063a\u064a\u0631 \u0645\u0639\u0631\u0648\u0641:
-sgn.warning=\u062a\u062d\u0630\u064a\u0631:
-title.editor=\u062a\u062d\u0631\u064a\u0631 \u0631\u0633\u0627\u0644\u0629
-title.find=\u0625\u064a\u062c\u0627\u062f
-title.message=\u0631\u0633\u0627\u0644\u0629 \u0645\u062f\u064a\u0631 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a
-combo.year=\u0627\u0644\u0633\u0646\u0629
-combo.today=\u0627\u0644\u064a\u0648\u0645
-combo.month=\u0627\u0644\u0634\u0647\u0631
\ No newline at end of file
diff --git a/locales/Arabic/erp_messages_ar.properties b/locales/Arabic/erp_messages_ar.properties
deleted file mode 100644
index b462af5e..00000000
--- a/locales/Arabic/erp_messages_ar.properties
+++ /dev/null
@@ -1,38 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.configerp=\u062a\u0643\u0648\u064a\u0646 \u062a\u062e\u0637\u064a\u0637 \u0645\u0648\u0627\u0631\u062f \u0627\u0644\u0645\u0624\u0633\u0633\u0627\u062a
-label.erpurl=URL \u062e\u062f\u0645\u0627\u062a
-label.erpid=\u0643\u0648\u062f \u0627\u0644\u0645\u0646\u0634\u0623\u0629
-label.erporg=\u0631\u0645\u0632 \u0627\u0644\u0645\u0646\u0638\u0645\u0629
-label.erppos=\u0643\u0648\u062f \u0646\u0642\u0627\u0637 \u0627\u0644\u0628\u064a\u0639
-label.erpuser=\u0645\u0633\u062a\u062e\u062f\u0645
-label.erppassword=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
-message.urlnotdefined=\u0644\u0645 \u064a\u062a\u0645 \u062a\u0639\u0631\u064a\u0641 URL \u062e\u062f\u0645\u0629 \u0627\u0644\u062a\u0632\u0627\u0645\u0646.
-message.syncordersok=\u0643\u0627\u0646 \u0623\u0648\u0627\u0645\u0631 \u0627\u0644\u062a\u0632\u0627\u0645\u0646 \u0646\u0627\u062c\u062d\u0629.
-message.syncordersinfo={0} \u0623\u0648\u0627\u0645\u0631 \u0645\u062a\u0632\u0627\u0645\u0646\u0629.
-message.syncproductsok=\u062a\u0645 \u062a\u0632\u0627\u0645\u0646 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0628\u0646\u062c\u0627\u062d.
-message.syncproductsinfo={0} \u0645\u0646\u062a\u062c\u0627\u062a \u0645\u062a\u0632\u0627\u0645\u0646\u0629.\r\n{1} \u0645\u0632\u0627\u0645\u0646\u0629 \u0627\u0644\u0639\u0645\u0644\u0627\u0621.
-message.remoteexception=\u062e\u0637\u0623 \u0641\u064a \u0627\u0644\u0627\u062a\u0635\u0627\u0644.
-message.serviceexception=\u0644\u0627 \u064a\u0645\u0643\u0646 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0627\u0644\u062e\u062f\u0645\u0629.
-message.malformedurlexception=\u0639\u0646\u0648\u0627\u0646 URL \u062e\u062f\u0645\u0629 \u062e\u0627\u0637\u0626.
-message.returnnull=\u0645\u0639\u0644\u0645\u0627\u062a \u0645\u0632\u0627\u0645\u0646\u0629 \u062e\u0627\u0637\u0626\u0629.
-message.zeroproducts=\u0644\u0627 \u062a\u0648\u062c\u062f \u0628\u064a\u0627\u0646\u0627\u062a \u0644\u0644\u0645\u0632\u0627\u0645\u0646\u0629.
-message.zeroorders=\u0644\u0627 \u062a\u0648\u062c\u062f \u0623\u0648\u0627\u0645\u0631 \u0644\u0644\u0645\u0632\u0627\u0645\u0646\u0629.
-message.propsnotdefined=\u0644\u0645 \u064a\u062a\u0645 \u062a\u0639\u0631\u064a\u0641 \u062e\u0635\u0627\u0626\u0635 \u0645\u0648\u0627\u0631\u062f \u0627\u0644\u062a\u0632\u0627\u0645\u0646 \"chromispos.properties.
\ No newline at end of file
diff --git a/locales/Arabic/reports/uk/chromis/reports/extendedcashregisterlog_messages_ar.properties b/locales/Arabic/extendedcashregisterlog_messages_ar.properties
similarity index 96%
rename from locales/Arabic/reports/uk/chromis/reports/extendedcashregisterlog_messages_ar.properties
rename to locales/Arabic/extendedcashregisterlog_messages_ar.properties
index a6e937b5..28900f9c 100644
--- a/locales/Arabic/reports/uk/chromis/reports/extendedcashregisterlog_messages_ar.properties
+++ b/locales/Arabic/extendedcashregisterlog_messages_ar.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Arabic/reports/uk/chromis/reports/extproducts_messages_ar.properties b/locales/Arabic/extproducts_messages_ar.properties
similarity index 95%
rename from locales/Arabic/reports/uk/chromis/reports/extproducts_messages_ar.properties
rename to locales/Arabic/extproducts_messages_ar.properties
index a35d25e5..959e0c25 100644
--- a/locales/Arabic/reports/uk/chromis/reports/extproducts_messages_ar.properties
+++ b/locales/Arabic/extproducts_messages_ar.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Arabic/reports/uk/chromis/reports/inventory_messages_ar.properties b/locales/Arabic/inventory_messages_ar.properties
similarity index 94%
rename from locales/Arabic/reports/uk/chromis/reports/inventory_messages_ar.properties
rename to locales/Arabic/inventory_messages_ar.properties
index 64e43038..6f74805d 100644
--- a/locales/Arabic/reports/uk/chromis/reports/inventory_messages_ar.properties
+++ b/locales/Arabic/inventory_messages_ar.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Arabic/reports/uk/chromis/reports/inventoryb_messages_ar.properties b/locales/Arabic/inventoryb_messages_ar.properties
similarity index 92%
rename from locales/Arabic/reports/uk/chromis/reports/inventoryb_messages_ar.properties
rename to locales/Arabic/inventoryb_messages_ar.properties
index fcb5dacf..a9106d4d 100644
--- a/locales/Arabic/reports/uk/chromis/reports/inventoryb_messages_ar.properties
+++ b/locales/Arabic/inventoryb_messages_ar.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Arabic/reports/uk/chromis/reports/inventorydiff_messages_ar.properties b/locales/Arabic/inventorydiff_messages_ar.properties
similarity index 94%
rename from locales/Arabic/reports/uk/chromis/reports/inventorydiff_messages_ar.properties
rename to locales/Arabic/inventorydiff_messages_ar.properties
index f974bf9e..b9d2a14f 100644
--- a/locales/Arabic/reports/uk/chromis/reports/inventorydiff_messages_ar.properties
+++ b/locales/Arabic/inventorydiff_messages_ar.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Arabic/reports/uk/chromis/reports/inventorydiffdetail_messages_ar.properties b/locales/Arabic/inventorydiffdetail_messages_ar.properties
similarity index 94%
rename from locales/Arabic/reports/uk/chromis/reports/inventorydiffdetail_messages_ar.properties
rename to locales/Arabic/inventorydiffdetail_messages_ar.properties
index 9a5d81a3..72b91577 100644
--- a/locales/Arabic/reports/uk/chromis/reports/inventorydiffdetail_messages_ar.properties
+++ b/locales/Arabic/inventorydiffdetail_messages_ar.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Arabic/reports/uk/chromis/reports/inventorylistdetail_messages_ar.properties b/locales/Arabic/inventorylistdetail_messages_ar.properties
similarity index 92%
rename from locales/Arabic/reports/uk/chromis/reports/inventorylistdetail_messages_ar.properties
rename to locales/Arabic/inventorylistdetail_messages_ar.properties
index 40cd5cf2..ec13aefb 100644
--- a/locales/Arabic/reports/uk/chromis/reports/inventorylistdetail_messages_ar.properties
+++ b/locales/Arabic/inventorylistdetail_messages_ar.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Arabic/locales/beans_messages_ar.properties b/locales/Arabic/locales/beans_messages_ar.properties
deleted file mode 100644
index e0c06376..00000000
--- a/locales/Arabic/locales/beans_messages_ar.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-button.cancel=\u0627\u0644\u063a\u0627\u0621 \u0627\u0644\u0627\u0645\u0631
-button.ok=\u0645\u0648\u0627\u0641\u0642
-button.Today=\u0627\u0644\u064a\u0648\u0645
-title.calendar=\u062d\u062f\u062f \u0627\u0644\u064a\u0648\u0645
\ No newline at end of file
diff --git a/locales/Arabic/locales/data_messages_ar.properties b/locales/Arabic/locales/data_messages_ar.properties
deleted file mode 100644
index cf32bd4a..00000000
--- a/locales/Arabic/locales/data_messages_ar.properties
+++ /dev/null
@@ -1,87 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-button.cancel=\u0627\u0644\u063a\u0627\u0621 \u0627\u0644\u0627\u0645\u0631
-button.information=\u0645\u0639\u0644\u0648\u0645\u0627\u062a
-button.ok=\u0645\u0648\u0627\u0641\u0642
-
-caption.sort=\u0641\u0631\u0632
-
-exception.iofile=\u062e\u0637\u0621 \u0641\u064a \u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u0644\u0641.
-exception.nocompare=Expected comparator for QBF.
-exception.nodataset=\u0645\u0635\u0641\u0648\u0641\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u063a\u064a\u0631 \u0645\u0639\u0631\u0641\u0629.
-exception.nofinishedfile=\u0627\u0644\u062c\u0645\u0644\u0629 \u063a\u064a\u0631 \u0643\u0627\u0645\u0644\u0629.
-exception.nodelete=\u0644\u0645 \u064a\u062a\u0645 \u062d\u0630\u0641 \u0627\u064a \u0633\u062c\u0644.
-exception.noinsert=\u0644\u0645 \u064a\u062a\u0645 \u0627\u0646\u0634\u0627\u0621 \u0627\u064a \u0633\u062c\u0644.
-exception.nonegativelimits=\u063a\u064a\u0631 \u0645\u0633\u0645\u0648\u062d \u0628\u0627\u0644\u062d\u062f\u0648\u062f \u0627\u0644\u0633\u0644\u0628\u064a\u0629.
-exception.noparamtype=\u0646\u0648\u0639 \u0627\u0644\u0645\u0639\u0637\u064a\u0627\u062a \u063a\u064a\u0631 \u0645\u0633\u0645\u0648\u062d \u0628\u0647\u0627.
-exception.noreadfile=\u062e\u0637\u0621 \u0641\u064a \u0642\u0631\u0627\u0621\u0629 \u062c\u0645\u0644\u0629 \u0627\u0644\u0645\u0641.
-exception.notnull=\u0644\u0627\u064a\u062c\u0628 \u0627\u0646 \u062a\u0643\u0648\u0646 \u0627\u0644\u0642\u064a\u0645\u0629 \u0641\u0627\u0631\u063a\u0629.
-exception.noupdate=\u0644\u0645 \u064a\u062a\u0645 \u062a\u062d\u062f\u064a\u062b \u0627\u064a \u0633\u062c\u0644.
-exception.noupdatecount=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u062a\u062d\u062f\u064a\u062b.
-exception.outofbounds=\u062e\u0631\u0627\u062c \u0627\u0644\u062d\u062f\u0648\u062f.
-exception.parserconfig=\u062e\u0637\u0627\u0621 \u0641\u064a \u062a\u062d\u0644\u064a\u0644 \u0627\u0643 \u0627\u0645 \u0627\u0644 \u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0627\u0644\u0645\u0634\u0631\u0641.
-exception.xmlfile=\u062e\u0637\u0627\u0621 \u0641\u064a \u0627\u0644\u062a\u062d\u0644\u064a\u0644 \u0645\u0644\u0641 \u0627\u0643\u0633 \u0627\u0645 \u0627\u0644 \u063a\u064a\u0631 \u0635\u062d\u064a\u062d.
-
-label.andby=\u0648\u0628\u0648\u0627\u0633\u0637\u0629
-label.casesensitive=\u062a\u062d\u0633\u0633 \u062d\u0627\u0644\u0629 \u0627\u0644\u0627\u062d\u0631\u0641
-label.findwhat=\u0628\u062d\u062b \u0639\u0646
-label.imagefiles=\u0645\u0644\u0641\u0627\u062a \u0627\u0644\u0635\u0648\u0631
-label.match=\u0645\u0637\u0627\u0628\u0642\u0629
-label.sortby=\u0641\u0631\u0632 \u0628\u0648\u0627\u0633\u0637\u0629
-label.where=\u0639\u0646\u062f\u0645\u0627 \u064a\u0643\u0648\u0646
-
-list.anypart=\u0627\u064a \u062c\u0632\u0621 \u0645\u0646 \u0627\u0644\u062d\u0642\u0644
-list.re=\u062a\u0639\u0628\u064a\u0631 \u0627\u0639\u062a\u064a\u0627\u062f\u064a
-list.startfield=\u0628\u062f\u0627\u064a\u0629 \u0627\u0644\u062d\u0642\u0644
-list.wholefield=\u0643\u0627\u0645\u0644 \u0627\u0644\u062d\u0642\u0644
-
-qbf.none=None
-qbf.null=Is null
-qbf.notnull=Is not null
-qbf.equals=Equals
-qbf.distinct=Distinct
-qbf.greater=Greater
-qbf.less=Less
-qbf.greaterequals=Greater or equal
-qbf.lessequals=Less or equals
-qbf.re=Wildcards
-
-message.changeslost=\u0633\u062a\u0641\u0642\u062f \u0627\u0644\u063a\u064a\u064a\u0631\u0627\u062a \u0639\u0644\u0649 \u062a\u0631\u064a\u062f \u0627\u0644\u0627\u0633\u062a\u0645\u0631\u0627\u0631
-message.nodelete=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0633\u062c\u0644 \u0644\u0644\u0627\u0644\u063a\u0627\u0621
-message.nolistdata=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0644\u0639\u062b\u0648\u0631 \u0641\u064a \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a
-message.nomove=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0644\u062a\u062d\u0631\u0643 \u0627\u0644\u0649 \u0633\u062c\u0644 \u0627\u062e\u0631
-message.nonew=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0646\u0634\u0627\u0621 \u0633\u062c\u0644 \u062c\u062f\u064a\u062f
-message.norecord=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0627\u0644\u0633\u062c\u0644
-message.noreload=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0639\u0627\u062f\u0629 \u062a\u062d\u0645\u064a\u0644 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a
-message.nosave=\u0627\u0644\u0633\u062c\u0644 \u063a\u064a\u0631 \u0645\u062d\u0641\u0648\u0638
-message.nosort=\u062d\u0627\u0644\u0629 \u0627\u0644\u0641\u0631\u0632 \u0627\u0644\u0645\u062d\u062f\u062f\u0629 \u063a\u064a\u0631 \u0633\u0644\u064a\u0645\u0629
-message.resizeimage=\u0627\u0644\u0635\u0648\u0631\u0629 \u0627\u0644\u0645\u062d\u062f\u062f\u0629 \u0627\u0643\u0628\u0631 \u0645\u0646 \u062d\u062c\u0645 \u0627\u0644\u062d\u0642\u0644 \u0647\u0644 \u062a\u0631\u064a\u062f \u0627\u0639\u062f\u0627\u062f\u0629 \u062a\u062d\u062c\u064a\u0645 \u0627\u0644\u0635\u0648\u0631\u0629\u061f
-message.wannasave=\u0647\u0644 \u062a\u0631\u064a\u062f \u062d\u0641\u0638 \u0627\u0644\u062a\u0639\u062f\u064a\u0644\u0627\u062a \u0642\u0628\u0644 \u0627\u0644\u062e\u0631\u0648\u062c\u061f
-
-sgn.caution=Caution\:
-sgn.danger=Danger\:
-sgn.notice=Notice\:
-sgn.important=Important\:
-sgn.success=Success\:
-sgn.unknown=Unknown\:
-sgn.warning=Warning\:
-
-title.editor=\u0645\u062d\u0631\u0631 \u0627\u0644\u0631\u0633\u0627\u0644\u0629
-title.find=\u0628\u062d\u062b
-title.message=\u0631\u0633\u0627\u0644\u0629 \u0645\u062f\u064a\u0631 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a
\ No newline at end of file
diff --git a/locales/Arabic/locales/erp_messages_ar.properties b/locales/Arabic/locales/erp_messages_ar.properties
deleted file mode 100644
index 689e2d80..00000000
--- a/locales/Arabic/locales/erp_messages_ar.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.configerp=\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u064a \u0627\u0631 \u0628\u064a
-label.erpurl=\u0631\u0627\u0628\u0637 \u0627\u0644\u062e\u062f\u0645\u0629
-label.erpid=\u0631\u0645\u0632 \u0627\u0644\u0645\u0624\u0633\u0633\u0629
-label.erporg=\u0631\u0642\u0645 \u0627\u0644\u0645\u0646\u0634\u0627\u0629
-label.erppos=\u0631\u0642\u0645 \u0646\u0642\u0637\u0629 \u0627\u0644\u0628\u064a\u0639
-label.erpuser=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645
-label.erppassword=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
-message.urlnotdefined=\u0644\u0645 \u064a\u062a\u0645 \u062a\u062d\u062f\u064a\u062f \u0631\u0627\u0628\u0637 \u062e\u062f\u0645\u0629 \u0627\u0644\u0645\u0632\u0627\u0645\u0646\u0629.
-message.syncordersok=\u062a\u0645 \u0628\u0646\u062c\u0627\u062d \u0627\u0645\u0631 \u0627\u0644\u0645\u0632\u0627\u0645\u0646\u0629.
-message.syncordersinfo={0} \u0627\u0648\u0645\u0627\u0631 \u062a\u0645\u062a \u0645\u0632\u0627\u0645\u0646\u062a\u0647\u0627.
-message.syncproductsok=\u062a\u0645\u062a \u0627\u0644\u0645\u0632\u0627\u0645\u0646\u0629 \u0628\u0646\u062c\u0627\u062d.
-message.syncproductsinfo={0} \u0645\u0646\u062a\u062c \u0645\u0632\u0627\u0645\u0646.\n{1} \u0639\u0645\u064a\u0644 \u0645\u0632\u0627\u0645\u0646.
-message.remoteexception=\u062e\u0637\u0627\u0621 \u0641\u064a \u0627\u0644\u0627\u062a\u0635\u0627\u0644.
-message.serviceexception=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0627\u0644\u062e\u062f\u0645\u0629.
-message.malformedurlexception=\u0631\u0627\u0628\u0637 \u0627\u0644\u062e\u062f\u0645\u0629 \u063a\u064a\u0631 \u0635\u062d\u064a\u062d.
-message.returnnull=\u0645\u0639\u0637\u064a\u0627\u062a \u0627\u0644\u0645\u0632\u0627\u0645\u0646\u0629 \u063a\u064a\u0631 \u0635\u062d\u064a\u062d\u0629.
-message.zeroproducts=\u0644\u0627\u062a\u0648\u062c\u062f \u0628\u064a\u0627\u0646\u0627\u062a \u0644\u0645\u0632\u0627\u0646\u062a\u0647\u0627.
-message.zeroorders=\u0644\u0627\u062a\u0648\u062c\u062f \u0627\u0648\u0627\u0645\u0631 \u0644\u0645\u0632\u0627\u0645\u0646\u062a\u0647\u0627.
-message.propsnotdefined=\u0645\u0635\u062f\u0631 \u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0645\u0632\u0627\u0645\u0646\u0629 "chromispos.properties" \u063a\u064a\u0631 \u0645\u0639\u0631\u0641.
\ No newline at end of file
diff --git a/locales/Arabic/locales/pos_messages_ar.properties b/locales/Arabic/locales/pos_messages_ar.properties
deleted file mode 100644
index c68fd907..00000000
--- a/locales/Arabic/locales/pos_messages_ar.properties
+++ /dev/null
@@ -1,538 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-Button.Cancel=\u0627\u0644\u063a\u0627\u0621 \u0627\u0644\u0627\u0645\u0631
-button.catalogadd=\u0627\u0636\u0627\u0641\u0629
-button.catalogdel=\u0627\u0632\u0627\u0644\u0629
-button.clean=\u0645\u0633\u062d
-Button.Close=\u062e\u0631\u0648\u062c
-Button.CloseCash=\u0627\u063a\u0644\u0627\u0642 \u0627\u0644\u0635\u0646\u062f\u0648\u0642
-button.Discount=\u062e\u0635\u0645
-Button.DeleteTicket=\u062d\u0630\u0641
-button.edit=\u062a\u062d\u0631\u064a\u0631
-button.ExecuteChart=\u062a\u0646\u0641\u064a\u0630 \u0627\u0644\u0645\u062e\u0637\u0637
-button.executefilter=\u062a\u0646\u0641\u064a\u0630 \u0627\u0644\u0641\u0631\u0632
-Button.ExecuteReport=\u062a\u0646\u0641\u064a\u0630 \u0627\u0644\u062a\u0642\u0631\u064a\u0631
-Button.Factory=\u0627\u0633\u062a\u0639\u0627\u062f\u0629
-button.linediscount=\u062e\u0635\u0645' %
-button.listtickets=\u0642\u0627\u0626\u0645\u0629
-button.movetable=\u062a\u062d\u0631\u064a\u0643
-button.NewTicket=\u062c\u062f\u064a\u062f
-Button.OK=\u0645\u0648\u0627\u0641\u0642
-button.opendrawer=\u062f\u0631\u062c
-button.pay=\u062d\u0633\u0627\u0628 \u0627\u0644\u062f\u0641\u0639
-button.peoplepassword=\u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631
-button.print=\u0637\u0628\u0627\u0639\u0629
-Button.PrintCash=\u0637\u0628\u0627\u0639\u0629 \u0627\u0644\u0646\u0642\u062f
-button.receive=\u0627\u0633\u062a\u0644\u0627\u0645
-button.refund=\u0645\u0631\u062a\u062c\u0639
-button.refundall=\u0627\u0631\u062a\u062c\u0627\u0639 \u0627\u0644\u0643\u0644
-button.refundline=\u0627\u0631\u062a\u062c\u0627\u0639 \u0635\u0646\u0641
-button.refundone=\u0627\u0631\u062a\u062c\u0627\u0639 \u0648\u0627\u062d\u062f
-button.reloadticket=\u0627\u0639\u0627\u062f\u0629 \u0639\u0631\u0636
-button.reservations=\u062d\u062c\u0632
-button.reset=\u0645\u0633\u062d
-Button.Restore=\u062a\u0631\u0627\u062c\u0639
-Button.Save=\u062d\u0641\u0638
-button.scale=\u0642\u064a\u0627\u0633
-button.sendorder=\u0645\u0637\u0628\u062e
-button.tables=\u0637\u0627\u0648\u0644\u0627\u062a
-button.totaldiscount=\u0627\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u062e\u0635\u0645'
-
-caption.tickets=\u0627\u0644\u062a\u0630\u0627\u0643\u0631
-caption.upload=\u062a\u062d\u0645\u064a\u0644 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u0646\u062a\u062c\u0627\u062a
-caption.split=\u062a\u0642\u0633\u064a\u0645 \u0627\u0644\u0641\u0627\u062a\u0648\u0631\u0629
-
-database.ScriptError=\u0644\u0627\u064a\u0645\u0643\u0646 \u062a\u0646\u0641\u064a\u0630 \u0643\u0648\u062f \u0627\u0646\u0634\u0627\u0621 \u0627\u0644\u0642\u0627\u0639\u062f\u0629.
-database.ScriptWarning=\u0643\u0648\u062f \u0627\u0646\u0634\u0627\u0621 \u0627\u0644\u0642\u0627\u0639\u062f\u0629 \u0644\u0645 \u064a\u0646\u062c\u062d.
-display.Null=\u0627\u0644\u0639\u0631\u0636 \u063a\u064a\u0631 \u0645\u062a\u0648\u0641\u0631
-display.Screen=\u0634\u0627\u0634\u0629 \u0627\u0644\u0639\u0631\u0636
-display.Window=\u0627\u0644\u0634\u0627\u0634\u0629
-
-exception.unavailabledataset=\u0627\u0644\u0645\u0635\u0648\u0635\u0641\u0629 \u063a\u064a\u0631 \u0645\u062a\u0648\u0641\u0631\u0629
-exception.unavailablefield=\u0627\u0644\u062d\u0642\u0644 \u063a\u064a\u0631 \u0645\u0639\u0631\u0641\: {0}
-exception.unavailablefields=\u0627\u0644\u062d\u0642\u0644 \u063a\u064a\u0631 \u0645\u062a\u0648\u0641\u0631
-
-filter.dbdriverlib=\u0645\u0643\u062a\u0628\u062a\u0629 \u0627\u0644\u0645\u062d\u0631\u0643\u0627\u062a (*.jar,*.zip)
-
-form.customertitle=\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0639\u0645\u064a\u0644
-form.productslist=\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u0646\u062a\u062c
-form.selectprintertitle=\u062a\u062d\u062f\u064a\u062f \u0637\u0627\u0628\u0639\u0629
-form.tickettitle=\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u062a\u0630\u0627\u0643\u0631
-
-label.address=\u0627\u0644\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0633\u0637\u0631 1
-label.address2=\u0627\u0644\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0633\u0637\u0631 2
-label.all=\u0627\u0644\u0643\u0644
-label.attribute=\u0627\u0644\u0635\u0641\u0629
-label.attributes=\u0627\u0644\u0635\u0641\u0627\u062a
-label.attributeset=\u0633\u0645\u0629 \u0627\u0644\u0645\u062c\u0645\u0648\u0639\u0629
-
-label.bybarcode=\u0628\u0648\u0627\u0633\u0637\u0629 \u0627\u0644\u0628\u0627\u0631\u0643\u0648\u062f
-label.bydates=\u0628\u0627\u0644\u062a\u0627\u0631\u064a\u062e
-label.byform=\u0628\u0648\u0627\u0633\u0637\u0629 \u0645\u0646
-label.byreason=\u0628\u0648\u0627\u0633\u0637\u0629 \u0627\u0644\u0633\u0628\u0628
-label.bycustomer=\u0628\u0627\u0644\u0639\u0645\u064a\u0644
-label.byproduct=\u0628\u0627\u0644\u0645\u0646\u062a\u062c
-label.bywarehouse=\u0628\u0627\u0644\u0645\u0648\u0642\u0639
-
-label.card=\u0627\u0644\u0628\u0637\u0627\u0642\u0629 \u0627\u0644\u0627\u0626\u062a\u0645\u0627\u0646\u064a\u0629
-label.cardexpdate=\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0627\u0646\u062a\u0647\u0627\u0621
-label.cardholder=\u0627\u0633\u0645 \u0645\u0627\u0644\u0643 \u0627\u0644\u0628\u0637\u0627\u0642\u0629
-label.cardnumber=\u0631\u0642\u0645 \u0627\u0644\u0628\u0637\u0627\u0642\u0629
-Label.Cash=\u0627\u0644\u0646\u0642\u062f
-label.cascade=\u0627\u0644\u062a\u062a\u0627\u0644\u064a
-Label.CashMachine=\u062c\u0647\u0627\u0632 \u0627\u0644\u0643\u0627\u0634
-label.catid=\u0627\u0644\u0631\u0642\u0645
-label.catimage=\u0627\u0644\u0635\u0648\u0631\u0629
-label.catname=\u0627\u0644\u062a\u0635\u0646\u064a\u0641
-label.certificatepwd=\u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u0645\u0648\u062b\u0642\u0629
-label.certificatepath=\u0648\u062b\u064a\u0642\u0629
-Label.ChangeCash=\u062a\u063a\u064a\u064a\u0631
-label.city=\u0628\u0644\u062f\u0629/\u0645\u062f\u064a\u0646\u0629
-label.commerceid=\u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u062a\u062c\u0627\u0631\u064a
-label.commercepwd=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0627\u0644\u062a\u062c\u0627\u0631\u064a\u0629
-label.commercesign=\u0627\u0644\u062a\u0648\u0642\u064a\u0639 \u0627\u0644\u062a\u062c\u0627\u0631\u064a
-label.contact=\u0627\u062a\u0635\u0627\u0644
-label.country=\u0627\u0644\u0628\u0644\u062f
-label.curdebt=\u0627\u0644\u0627\u064a\u062f\u0627\u0639 \u0627\u0644\u062d\u0627\u0644\u064a
-label.curdate=\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0627\u064a\u062f\u0627\u0639
-label.currency=\u0627\u0644\u0639\u0645\u0644\u0629
-label.customer=\u0627\u0644\u0639\u0645\u064a\u0644
-label.custtaxcategory=\u062a\u0635\u0646\u064a\u0641 \u0627\u0644\u0636\u0631\u064a\u0628\u0629
-
-Label.Database=\u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a
-label.date=\u0627\u0644\u062a\u0627\u0631\u064a\u062e
-label.datestitle=\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0646\u0642\u062f
-label.datetime=\u0627\u0644\u062a\u0627\u0631\u064a\u062e \u0648\u0627\u0644\u0648\u0642\u062a
-Label.DbDriver=\u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u0645\u062d\u0631\u0643\u0627\u062a \u0643\u0644\u0627\u0633
-label.dbdriverlib=\u0645\u0643\u062a\u0628\u0629 \u0627\u0644\u0645\u062d\u0631\u0643\u0627\u062a
-Label.DbPassword=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
-Label.DbURL=\u0631\u0627\u0628\u0637
-Label.DbUser=\u0645\u0633\u062a\u062e\u062f\u0645
-label.debt=\u0627\u064a\u062f\u0627\u0639
-label.double=\u0645\u0632\u062f\u0648\u062c
-label.dutyid=\u0631\u0645\u0632
-label.dutyname=\u0627\u0633\u0645 \u0627\u0644\u0636\u0631\u064a\u0628\u0629
-label.dutyrate=\u0645\u0639\u062f\u0644
-
-
-label.editline=\u062a\u062d\u0631\u064a\u0631 \u0633\u0637\u0631
-label.email=\u0628\u0631\u064a\u062f \u0627\u0644\u0643\u062a\u0631\u0648\u0646\u064a
-Label.EndDate=\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0646\u0647\u0627\u064a\u0629
-
-label.fax=\u0641\u0627\u0643\u0633
-label.firstname=\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0627\u0648\u0644
-label.floorid=\u0631\u0645\u0632
-label.floorname=\u0637\u0627\u0628\u0642
-
-label.image=\u0635\u0648\u0631\u0629
-Label.InputCash=\u0645\u0642\u062f\u0645
-label.integer=\u0639\u062f\u062f \u0635\u062d\u064a\u062d
-label.item=\u0635\u0646\u0641
-
-label.javapos.drawer=\u0627\u0633\u0645 \u0627\u0644\u062f\u0631\u062c
-label.javapos.printer=\u0627\u0633\u0645 \u0627\u0644\u0637\u0627\u0628\u0639\u0629
-
-label.lastname=\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0627\u062e\u064a\u0631
-label.lindediscount=\u062e\u0635\u0645' %
-label.LoadError=\u062e\u0637\u0621 \u0641\u064a \u0639\u0631\u0636 \u0647\u0630\u0647 \u0627\u0644\u0645\u0639\u0627\u062f\u0644\u0627\u062a
-label.locale=\u0645\u062d\u0644\u064a
-label.location=\u0639\u0646\u0648\u0627\u0646
-label.locationaddress=\u0639\u0646\u0648\u0627\u0646
-label.locationid=\u0631\u0645\u0632
-label.locationname=\u0627\u0633\u0645
-label.looknfeel=\u0634\u0643\u0644 \u0627\u0644\u0648\u0627\u062c\u0647\u0629
-
-Label.MachineDisplay=\u0634\u0627\u0634\u0629 \u0627\u0644\u0639\u0645\u064a\u0644
-label.machinedisplayconn=\u0627\u0644\u0648\u0636\u0639\u064a\u0629
-label.machinedisplayport=\u0627\u0644\u0645\u0646\u0641\u0630
-Label.MachineName=\u0627\u0644\u0627\u0633\u0645
-Label.MachinePrinter=\u0627\u0644\u0637\u0627\u0628\u0639\u0629
-Label.MachinePrinter2=\u0627\u0644\u0637\u0627\u0628\u0639\u0629 2
-Label.MachinePrinter3=\u0627\u0644\u0637\u0627\u0628\u0639\u0629 3
-label.machineprinterport=\u0627\u0644\u0645\u0646\u0641\u0630
-Label.MachineScreen=\u0634\u0627\u0634\u0629
-label.magcardreader=\u0642\u0627\u0631\u0626\u064a \u0627\u0644\u0628\u0637\u0627\u0642\u0629 \u0627\u0644\u0645\u0645\u063a\u0646\u0637\u0629
-label.maxdebt=\u062d\u062f \u0627\u0644\u0627\u0626\u062a\u0645\u0627\u0646
-label.maximum=\u0627\u0644\u0627\u0639\u0644\u0649
-label.merchantcode=\u0631\u0645\u0632 \u0627\u0644\u062a\u0627\u062c\u0631
-label.minimum=\u0627\u0644\u0627\u062f\u0646\u0649
-label.money=\u0627\u0644\u0627\u062c\u0645\u0627\u0644\u064a
-
-label.packsinstock=In stock
-label.packof= packs of
-label.packstosplit=Packs to split
-label.productinpack=Product in pack
-label.split=Split
-
-label.name=\u0627\u0633\u0645
-Label.Name=\u0627\u0644\u0627\u0633\u0645
-label.notes=\u0645\u0630\u0643\u0631\u0629
-label.noticketstoclose=\u0644\u0627\u062a\u0648\u062c\u062f \u0641\u0648\u0627\u062a\u064a\u0631 \u0644\u062a\u0631\u062d\u064a\u0644\u0647\u0627
-label.nullcategory=(\u0628\u062f\u0648\u0646 \u062a\u0635\u0646\u064a\u0641)
-
-label.order=\u0637\u0644\u0628 - \u0627\u0645\u0631
-
-Label.Password=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
-label.passwordnew=\u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u062c\u062f\u064a\u062f
-label.passwordold=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0642\u062f\u064a\u0645
-label.passwordrepeat=\u062a\u0627\u0643\u064a\u062f \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
-Label.Payment=\u0645\u062f\u0641\u0648\u0639\u0627\u062a
-label.paymentdate=\u062a\u0627\u0631\u064a\u062e
-label.paymentgateway=\u0645\u0646\u0641\u0630 \u0627\u0644\u0645\u062f\u0641\u0648\u0639\u0627\u062a
-label.paymentreason=\u0633\u0628\u0628
-label.paymentstitle=\u062a\u0642\u0631\u064a\u0631 \u0627\u0644\u0645\u062f\u0641\u0648\u0639\u0627\u062a
-label.paymenttestmode=\u062d\u0627\u0644\u0629 \u0627\u062e\u062a\u0628\u0627\u0631
-label.paymenttotal=\u0627\u062c\u0645\u0627\u0644\u064a
-label.peopleimage=\u0635\u0648\u0631\u0629
-label.peoplename=\u0627\u0633\u0645
-label.peoplevisible=\u0638\u0627\u0647\u0631
-label.percent=\u0646\u0633\u0628\u0629 \u0645\u0624\u064a\u0629
-label.phone=\u0647\u0627\u062a\u0641
-label.phone2=\u0645\u0648\u0628\u0627\u064a\u0644
-label.placefloor=\u0637\u0627\u0628\u0642
-label.placeid=\u0631\u0645\u0632
-label.placename=\u0627\u0644\u0645\u0643\u0627\u0646
-label.placeposition=\u0627\u0644\u0648\u0636\u0639\u064a\u0629
-label.postal=\u0631\u0645\u0632 \u0627\u0644\u0628\u0631\u064a\u062f
-label.price=\u0633\u0639\u0631
-label.pricetax=\u0633\u0639\u0631 + \u0636\u0631\u064a\u0628\u0629
-label.printtokitchen=\u0637\u0628\u0627\u0639\u0629 \u0627\u0644\u0649 \u0627\u0644\u0645\u0637\u0628\u062e
-label.prodaux=\u0645\u0633\u0627\u0639\u062f\u064a\u0646
-label.prodbarcode=\u0628\u0627\u0631\u0643\u0648\u062f
-label.prodcategory=\u062a\u0635\u0646\u064a\u0641
-label.prodcost=\u062a\u0643\u0644\u0641\u0629
-label.prodgeneral=\u0639\u0627\u0645
-label.prodincatalog=\u0643\u0627\u062a\u0627\u0644\u0648\u062c \u062f\u0627\u062e\u0644
-label.prodname=\u0627\u0633\u0645
-label.prodorder=\u0627\u0645\u0631 - \u062a\u0631\u062a\u064a\u0628
-label.prodpricebuy=\u0633\u0639\u0631 \u0627\u0644\u0634\u0631\u0627\u0621
-label.prodpricesell=\u0633\u0639\u0631 \u0627\u0644\u0628\u064a\u0639
-label.prodpriceselltax=\u0633\u0639\u0631 \u0627\u0644\u0628\u064a\u0639 + \u0636\u0631\u064a\u0628\u0629
-label.prodproperties=\u062e\u0635\u0627\u0626\u0635
-label.prodref=\u0645\u0631\u062c\u0639
-label.prodscale=\u0642\u064a\u0627\u0633
-label.prodstock=\u0645\u062e\u0632\u0648\u0646
-label.prodstockcost=\u062a\u0643\u0644\u0641\u0629 \u0627\u0644\u0645\u062e\u0632\u0648\u0646 \u0628\u0627\u0644\u0633\u0646\u0629
-label.prodstockmax=\u0627\u0639\u0644\u0649 \u0645\u0633\u062a\u0648\u0649
-label.prodstocksec=\u0627\u062f\u0646\u0649 \u0645\u0633\u062a\u0648\u0649
-label.prodstockvol=\u062d\u062c\u0645 \u0627\u0644\u0645\u062e\u0632\u0648\u0646
-label.produnits=\u0648\u062d\u062f\u0627\u062a
-label.prodvaluebuy=\u0642\u064a\u0645\u0629 \u0627\u0644\u0634\u0631\u0627\u0621
-label.prodvaluesell=\u0642\u064a\u0645\u0629 \u0627\u0644\u0628\u064a\u0639
-label.prodvolume=\u062d\u062c\u0645
-label.properties=\u062e\u0635\u0627\u0626\u0635
-
-label.receiptprinter=\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u0641\u0648\u0627\u062a\u064a\u0631
-label.recorddeleted=(\u062a\u0645 \u062d\u0630\u0641 \u0627\u0644\u0633\u062c\u0644)
-label.recordeof=(\u0644\u0627\u064a\u0648\u062c\u062f \u0633\u062c\u0644)
-label.recordnew=(\u0633\u062c\u0644 \u062c\u062f\u064a\u062f)
-label.refunds=\u0645\u0631\u062a\u062c\u0639
-label.region=\u0627\u0644\u0648\u0644\u0627\u064a\u0629/\u0627\u0644\u0645\u0642\u0627\u0637\u0639\u0629
-label.remainingcash=\u0627\u0644\u0628\u0627\u0642\u064a
-label.reportsprinter=\u0637\u0627\u0628\u0642\u0629 \u0627\u0644\u062a\u0642\u0627\u0631\u064a\u0631
-label.resname=\u0627\u0644\u0645\u0648\u0627\u0631\u062f
-label.restaurantcustomer=\u0627\u0633\u062a\u0642\u0628\u0627\u0644 \u0639\u0645\u064a\u0644 {0}. \u0627\u062e\u062a\u0631 \u0637\u0627\u0648\u0644\u0629 \u0641\u0627\u0631\u063a\u0629.
-label.restaurantmove=\u062a\u062d\u0631\u064a\u0643 \u0637\u0627\u0648\u0644\u0629 {0}. \u0627\u062e\u062a\u0631 \u0637\u0627\u0648\u0644\u0629 \u0627\u062e\u0631\u0649 \u0627\u0648 \u062d\u062f\u062f \u0646\u0641\u0633 \u0627\u0644\u0637\u0627\u0648\u0644\u0629
-label.role=\u062f\u0648\u0631
-
-label.sales=\u0645\u0628\u064a\u0639\u0627\u062a
-label.salestitle=\u062a\u0642\u0631\u064a\u0631 \u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a
-label.scale=\u0642\u064a\u0627\u0633
-label.scaleinput=\u0627\u062f\u062e\u0644 \u0627\u0644\u0648\u0632\u0646
-label.scanner=\u0642\u0627\u0631\u0626\u064a \u0636\u0648\u0626\u064a
-label.search=\u0628\u062d\u062b
-label.searchkey=\u0645\u0641\u062a\u0627\u062d \u0627\u0644\u0628\u062d\u062b
-label.sequence=\u062a\u0633\u0644\u0633\u0644
-label.sha=SHA
-Label.StartDate=\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0628\u062f\u0627\u064a\u0629
-label.stockdate=\u062a\u0627\u0631\u064a\u062e
-label.stockproduct=\u0645\u0646\u062a\u062c
-label.stockreason=\u0633\u0628\u0628
-label.storename=\u0627\u0633\u0645 \u0627\u0644\u0645\u062a\u062c\u0631
-label.subtotalcash=\u0627\u062c\u0645\u0627\u0644\u064a \u062c\u0632\u0626\u064a
-
-label.table=\u0637\u0627\u0648\u0644\u0629
-label.tax=\u0636\u0631\u0627\u0626\u0628
-label.taxcash=\u0636\u0631\u0627\u0626\u0628
-label.taxcategory=\u062a\u0635\u0646\u064a\u0641 \u0627\u0644\u0636\u0631\u064a\u0628\u0629
-label.taxes=\u0636\u0631\u0627\u0626\u0628
-label.taxid=\u0631\u0645\u0632 \u0627\u0644\u062d\u0633\u0627\u0628
-label.taxparent=\u0627\u0644\u0627\u0635\u0644 \u0627\u0644\u0636\u0631\u064a\u0628\u064a
-label.terminal=\u0627\u0644\u0645\u062d\u0637\u0629 \u0627\u0644\u0637\u0631\u0641\u064a\u0629
-label.ticketid=\u062a\u0630\u0643\u0631\u0629 #
-Label.Tickets=\u0645\u062f\u0641\u0648\u0639\u0627\u062a
-Label.Ticketsbag=\u062a\u0630\u0627\u0643\u0631
-label.time=\u0648\u0642\u062a
-label.totalcash=\u0627\u062c\u0645\u0627\u0644\u064a
-label.totaldiscount=\u0627\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u062e\u0635\u0645'
-label.type=\u0646\u0648\u0639
-
-label.units=\u0648\u062d\u062f\u0627\u062a
-label.uploadingproducts=\u064a\u062a\u0645 \u0631\u0641\u0639 \u0627\u0644\u0645\u0646\u062a\u062c\u0627\u062a \u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u0644\u0627\u062a\u0646\u0638\u0627\u0631...
-label.user=\u0645\u0633\u062a\u062e\u062f\u0645
-
-label.value=\u0642\u064a\u0645\u0629
-label.visible=\u0638\u0627\u0647\u0631
-
-label.warehouse=\u0645\u0646\u062a\u062c
-
-Menu.Attributes=\u0635\u0641\u0627\u062a \u0627\u0644\u0645\u0646\u062a\u062c
-Menu.AttributeSets=\u0645\u062c\u0645\u0648\u0639\u0629 \u0635\u0641\u0627\u062a \u0627\u0644\u0645\u0646\u062a\u062c
-Menu.AttributeUse=\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0635\u0641\u0627\u062a \u0627\u0644\u0645\u0646\u062a\u062c
-Menu.AttributeValues=\u0642\u064a\u0645\u0629 \u0627\u0644\u0635\u0641\u0627\u062a
-Menu.Auxiliar=\u0627\u0644\u0645\u0646\u062a\u062c\u0627\u062a \u0627\u0644\u0645\u0633\u0627\u0639\u062f\u0629
-
-Menu.Backoffice=\u0627\u0644\u0627\u062f\u0627\u0631\u0629
-
-Menu.CashFlow=\u062a\u062f\u0641\u0642 \u0627\u0644\u0646\u0642\u062f\u064a\u0629
-Menu.CashRegisterLog=\u0633\u062c\u0644 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a
-Menu.CategorySales=\u062a\u0635\u0646\u064a\u0641 \u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a
-Menu.Catalog=\u0643\u0627\u062a\u0644\u0648\u062c
-Menu.Categories=\u062a\u0635\u0646\u064a\u0641\u0627\u062a
-Menu.CategoryProductSalesChart=\u0642\u0648\u0627\u0626\u0645 \u062a\u0635\u0646\u064a\u0641 \u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a
-Menu.ChangePassword=\u062a\u063a\u064a\u064a\u0631 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
-Menu.ClosedProducts=\u0645\u0628\u064a\u0639\u0627\u062a \u0645\u0646\u062a\u062c
-Menu.CloseTPV=\u0627\u063a\u0644\u0627\u0642 \u0627\u0644\u0635\u0646\u062f\u0648\u0642
-Menu.Closing=\u0627\u0644\u0635\u0646\u062f\u0648\u0642 \u0645\u063a\u0644\u0642
-Menu.Configuration=\u0627\u0639\u062f\u0627\u062f\u0627\u062a
-Menu.Customers=\u0639\u0645\u0644\u0627\u0621
-Menu.Customers.Reports=\u062a\u0642\u0627\u0631\u064a\u0631
-Menu.CustomersBReport=\u0645\u0648\u062f\u0639\u064a\u0646
-Menu.CustomersDiary=\u0645\u0630\u0643\u0631\u0627\u062a \u0627\u0644\u0639\u0645\u0644\u0627\u0621
-Menu.CustomersManagement=\u0627\u0644\u0639\u0645\u0644\u0627\u0621
-Menu.CustomersPayment=\u0645\u062f\u0641\u0648\u0639\u0627\u062a \u0627\u0644\u0639\u0645\u064a\u0644
-Menu.CustomersReport=\u0639\u0645\u0644\u0627\u0621
-
-Menu.ERPOrders=\u0627\u0645\u0631 \u0645\u0632\u0627\u0645\u0646\u0629 \u0627\u064a \u0627\u0631 \u0628\u064a
-Menu.ERPProducts=\u0645\u0632\u0627\u0645\u0629 \u0646\u0642\u0637\u0629 \u0627\u0644\u0628\u064a\u0639
-Menu.Exit=\u062e\u0631\u0648\u062c
-Menu.ExtendedByProducts=\u0645\u0628\u064a\u0639\u0627\u062a \u0645\u0646\u062a\u062c \u0645\u0648\u0633\u0639
-Menu.ExtendedCashRegisterLog=\u0633\u062c\u0644 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0645\u0648\u0633\u0639
-Menu.ExtendedSales=\u0645\u0628\u064a\u0639\u0627\u062a \u0645\u0648\u0633\u0639
-
-Menu.Floors=\u0637\u0648\u0627\u0628\u0642
-
-Menu.Inventory=\u062c\u0631\u062f
-Menu.Inventory2=\u0627\u0644\u062c\u0631\u062f \u0627\u0644\u062d\u0627\u0644\u064a
-Menu.InventoryBroken=\u0627\u0644\u062c\u0631\u062f: \u0645\u0643\u0633\u0648\u0631
-Menu.InventoryDiff=\u0627\u0644\u062c\u0631\u062f: \u0627\u0644\u0641\u0631\u0648\u0642\u0627\u062a
-Menu.InventoryDiffDetail=\u0627\u0644\u062c\u0631\u062f: \u062a\u0641\u0627\u0635\u064a\u0644 \u0627\u0644\u0641\u0631\u0648\u0642\u0627\u062a
-Menu.InventoryListDetail=\u0627\u0644\u062c\u0631\u062f: \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u062a\u0641\u0627\u0635\u064a\u0644
-Menu.InventoryReOrder=Inventory: Re-Order
-
-Menu.Locations=\u0627\u0644\u0645\u0648\u0627\u0642\u0639
-
-Menu.Main=\u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629
-Menu.Maintenance=\u0635\u064a\u0627\u0646\u0629
-Menu.Maintenance.ERP=\u0627\u0648\u0628\u0646 \u0628\u0631\u0627\u0641\u0648 \u0627\u064a \u0627\u0631 \u0628\u064a
-Menu.Maintenance.POS=\u0646\u0642\u0637\u0629 \u0628\u064a\u0639
-Menu.Maintenance.Reports=\u062a\u0642\u0627\u0631\u064a\u0631
-
-Menu.PaymentReport=\u0645\u062f\u0641\u0648\u0639\u0627\u062a
-Menu.Payments=\u0645\u062f\u0641\u0648\u0639\u0627\u062a
-Menu.Printer=\u0637\u0627\u0628\u0642\u0629
-Menu.ProductLabels=\u0645\u0633\u0645\u064a\u0627\u062a \u0627\u0644\u0645\u0646\u062a\u062c
-Menu.Products=\u0645\u0646\u062a\u062c\u0627\u062a
-Menu.ProductSales=\u0645\u0628\u064a\u0639\u0627\u062a \u0645\u0646\u062a\u062c
-Menu.ProductsWarehouse=\u0645\u0648\u0642\u0639 \u0627\u0644\u0645\u0646\u062a\u062c
-Menu.ProductPacks=Product Packs
-Menu.StockChanges=Stock Changes
-Menu.StockChangesReport=Stock Changes Report
-Menu.Promotions=Promotions
-Menu.PromotionsReport=Promotions Report
-
-Menu.Reports=\u062a\u0642\u0627\u0631\u064a\u0631
-Menu.ReportTaxes=\u0645\u0644\u062e\u0635 \u0627\u0644\u0636\u0631\u0627\u0626\u0628
-Menu.Resources=\u0645\u0635\u0627\u062f\u0631
-Menu.Roles=\u0627\u062f\u0648\u0627\u0631
-
-Menu.SalesByCustomer=\u0645\u0628\u064a\u0639\u0627\u062a \u0627\u0644\u0639\u0645\u0644\u0627\u0621
-Menu.SalesChart=\u0627\u0639\u0645\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a
-Menu.SalesManagement=\u0645\u0628\u064a\u0639\u0627\u062a
-Menu.SalesManagement.Reports=\u062a\u0642\u0627\u0631\u064a\u0631
-Menu.SalesProfit=\u0627\u0631\u0628\u0627\u062d \u0645\u0628\u064a\u0639\u0627\u062a \u0627\u0644\u0645\u0646\u062a\u062c
-Menu.SaleTaxes=\u0636\u0631\u0627\u0626\u0628 \u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a
-Menu.StockDiary=\u064a\u0648\u0645\u064a\u0627\u062a \u0627\u0644\u062c\u0631\u062f
-Menu.StockManagement=\u062c\u0631\u062f
-Menu.StockManagement.Edit=\u0635\u064a\u0627\u0646\u0629
-Menu.StockManagement.Reports=\u062a\u0642\u0627\u0631\u064a\u0631
-Menu.StockMovement=\u0635\u064a\u0627\u0646\u0629 \u0627\u0644\u062c\u0631\u062f
-Menu.System=\u0627\u0644\u0646\u0638\u0627\u0645
-
-Menu.Tables=\u0637\u0627\u0648\u0644\u0627\u062a
-Menu.Taxes=\u0636\u0631\u0627\u0626\u0628
-Menu.TaxCustCategories\u062a\u0635\u0646\u064a\u0641\u0627\u062a \u0636\u0631\u0627\u0626\u0628 \u0627\u0644\u0639\u0645\u0644\u0627\u0621
-Menu.TaxCategories=\u062a\u0635\u0646\u064a\u0641\u0627\u062a \u0627\u0644\u0636\u0631\u0627\u0626\u0628
-Menu.ThirdParties=\u0627\u0644\u0645\u0648\u0631\u062f\u064a\u0646
-Menu.ThirdPartiesManagement=\u0627\u062f\u0627\u0631\u0629 \u0627\u0644\u0645\u0648\u0631\u062f\u064a\u0646
-Menu.Ticket=\u0645\u0628\u064a\u0639\u0627\u062a
-Menu.TicketEdit=\u062a\u062d\u0631\u064a\u0631 \u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a
-Menu.TicketRefund=\u0645\u0631\u062a\u062c\u0639
-Menu.Top10Sales=\u0627\u0639\u0644\u0649 \u0639\u0634\u0631\u0629 \u0645\u0628\u064a\u0639\u0627\u062a
-
-Menu.Users=\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646
-Menu.UsersReport=\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646
-Menu.UserSells=\u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a \u0628\u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646
-
-message.BadPassword=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u062e\u0627\u0637\u0626\u0629 \u062d\u0627\u0648\u0644 \u0645\u0631\u0629 \u0627\u062e\u0631\u0649
-
-message.cannotcalculatetaxes=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u062d\u062a\u0633\u0627\u0628 \u0636\u0631\u064a\u0628\u0629 \u0641\u0627\u062a\u0648\u0631\u0629 - \u0628\u0633\u0628\u0628 \u0627\u0646 \u0627\u062d\u062f \u0627\u0644\u0646\u062a\u062c\u0627\u062a \u0644\u0645 \u064a\u062a\u0645 \u0627\u0639\u062f\u0627\u062f \u0636\u0631\u0627\u0626\u0628\u0647\u0627 \u0628\u0634\u0643\u0644 \u0633\u0644\u064a\u0645
-message.cannotchangepassword=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u062a\u063a\u064a\u064a\u0631 \u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631
-message.cannotclosecash=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u063a\u0644\u0627\u0642 \u0627\u0644\u0635\u0646\u062f\u0648\u0642
-message.cannotdeleteconfig=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u062d\u0630\u0641 \u0645\u0644\u0641 \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u0643\u0648\u0646\u0641\u064a\u062c
-message.cannotexecute=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u062a\u0646\u0641\u064a\u0630 \u0627\u0644\u0627\u062c\u0631\u0627\u0621
-message.cannotfillchart=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u062a\u062d\u0645\u064a\u0644 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0627\u0639\u0645\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u064a\u0629
-message.cannotfillreport=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u062a\u062d\u0645\u064a\u0644 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u0642\u0631\u064a\u0631
-message.cannotfindattributes=\u0644\u0645 \u064a\u062a\u0645 \u062a\u0639\u064a\u064a\u0646 \u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0645\u0646\u062a\u062c
-message.cannotfindcustomer=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u064a\u062c\u0627\u062f \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0639\u0645\u064a\u0644
-message.cannotloadlists=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u062a\u062d\u0645\u064a\u0644 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a
-message.cannotloadreport=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u062a\u062d\u0645\u064a\u0644 \u062a\u0639\u0631\u064a\u0641\u0627\u062a \u0627\u0644\u062a\u0642\u0631\u064a\u0631
-message.cannotloadreportdata=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u062a\u062d\u0645\u064a\u0644 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062a\u0642\u0631\u064a\u0631
-message.cannotloadresourcedata=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u062a\u062d\u0645\u064a\u0644 \u0645\u0635\u0627\u062f\u0631 \u0627\u0644\u062a\u0642\u0631\u064a\u0631
-message.cannotloadticket=\u0644\u0645 \u062a\u0645\u0643\u0646 \u0645\u0646 \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0641\u0627\u0648\u0627\u062a\u064a\u0631
-message.CannotMove=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0644\u0627\u0646\u062a\u0642\u0627\u0644 \u0627\u0644\u0649 \u0633\u062c\u0644
-message.cannotprint=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0644\u0637\u0628\u0627\u0639\u0629
-message.cannotprintline=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0637\u0628\u0627\u0639\u0629 \u0633\u0637\u0631
-message.cannotprintticket=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0637\u0628\u0627\u0639\u0629 \u0641\u0627\u062a\u0648\u0631\u0629
-message.cannotsaveconfig=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u062d\u0641\u0638 \u0645\u0644\u0641 \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u0643\u0648\u0646\u0641\u064a\u062c
-message.cannotsaveinventorydata=\u0644\u0645 \u062a\u0645\u0643\u0646 \u0645\u0646 \u062d\u0641\u0638 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062c\u0631\u062f
-message.cardnew=\u0633\u064a\u062a\u0645 \u062a\u063a\u064a\u064a\u0631 \u0642\u064a\u0645\u0629 \u0627\u0644\u0646\u0642\u062f\u064a\u0629 \u0647\u0644 \u0627\u0646\u062a \u0645\u062a\u0627\u0643\u062f
-message.cardremove=\u0642\u064a\u0645\u0629 \u0627\u0644\u0628\u0637\u0627\u0642\u0629 \u0627\u0644\u0627\u0626\u062a\u0645\u0627\u0646\u064a\u0629 \u0633\u062a\u062d\u0630\u0641 \u0647\u0644 \u0627\u0646\u062a \u0645\u062a\u0627\u0643\u062f
-
-message.changepassworddistinct=\u062a\u0627\u0643\u064a\u062f \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
-message.closecashok=\u0627\u063a\u0644\u0627\u0642 \u0627\u0644\u0635\u0646\u062f\u0648\u0642 \u0646\u0627\u062c\u062d
-message.configfactory=\u0647\u0644 \u0627\u0646\u062a \u0645\u062a\u0627\u0643\u062f \u0645\u0646 \u0627\u0633\u062a\u0639\u0627\u062f\u0629 \u0627\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u0645\u0635\u0646\u0639
-message.configrestore=\u0647\u0644 \u0627\u0646\u062a \u0645\u062a\u0627\u0643\u062f \u0645\u0646 \u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u062a\u0631\u0627\u062c\u0639 \u0639\u0646 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a
-message.createdatabase=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0635\u0627\u0644\u062d\u0629 \u0633\u064a\u062a\u0645 \u0627\u0646\u0634\u0627\u0621 \u0642\u0627\u0639\u062f\u0629 \u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 \u0647\u0644 \u062a\u0631\u064a\u062f \u0627\u0644\u0627\u0633\u062a\u0645\u0631\u0627\u0631
-message.customerdebtexceded=\u062a\u0645 \u062a\u062c\u0627\u0648\u0632 \u0627\u0644\u062d\u062f \u0627\u0644\u0627\u0626\u062a\u0645\u0627\u0646\u064a \u0644\u0644\u0639\u0645\u064a\u0644
-
-message.databaseconnectionerror=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a - \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u063a\u064a\u0631 \u0645\u062a\u0648\u0641\u0631\u0629
-message.databasedrivererror=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a - \u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0645\u0634\u063a\u0644 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a
-message.databasenotsupported=\u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a "{0}" \u063a\u064a\u0631 \u0645\u062f\u0639\u0648\u0645\u0629
-
-message.mergetable=\u062f\u0645\u062c \u0637\u0627\u0648\u0644\u0627\u062a
-message.mergetablequestion=\u0647\u0644 \u0627\u0646\u062a \u0645\u062a\u0627\u0643\u062f \u0645\u0646 \u062f\u0645\u062c \u0627\u0644\u0637\u0627\u0648\u0644\u0627\u062a
-
-message.nocard=\u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0628\u0637\u0627\u0642\u0629 \u0627\u0644\u0639\u0645\u064a\u0644 \u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u0644\u0645\u062d\u0627\u0648\u0644\u0629 \u0645\u0631\u0629 \u0627\u062e\u0631\u0649
-message.nocardreader=\u0642\u0627\u0626\u0631\u064a \u0627\u0644\u0628\u0637\u0627\u0626\u0642 \u063a\u064a\u0631 \u0645\u0639\u0631\u0641 \u0628\u0637\u0631\u064a\u0642\u0629 \u0633\u0644\u064a\u0645\u0629
-message.nocustomer=\u0627\u0644\u0639\u0645\u064a\u0644 \u0628\u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u062d\u0627\u0644\u064a\u0629 \u063a\u064a\u0631 \u0645\u0648\u062c\u0648\u062f
-message.nocustomernodebt=\u0627\u0644\u0641\u0627\u062a\u0648\u0631\u0629 \u063a\u064a\u0631 \u0645\u0648\u0642\u0639 - \u0644\u0627\u064a\u0645\u0643\u0646 \u062f\u0641\u0639\u0647\u0627 - \u0627\u064a\u062f\u0627\u0639\u0647\u0627
-message.nopaymentgateway=\u0628\u0648\u0627\u0628\u0629 \u0627\u0644\u0645\u062f\u0641\u0648\u0639\u0627\u062a \u063a\u064a\u0631 \u0645\u0639\u0631\u0641\u0629
-message.noprinters=\u0644\u0643 \u064a\u062a\u0645 \u062a\u062b\u0628\u064a\u062a \u0627\u064a \u0637\u0627\u0628\u0639\u0629
-message.noproduct=\u0627\u0644\u0645\u0646\u062a\u062d \u0628\u0647\u0630\u0627 \u0627\u0644\u0631\u0645\u0632 \u063a\u064a\u0631 \u0645\u0648\u062c\u0648\u062f
-message.nosaveticket=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u062d\u0641\u0638 \u062a\u0630\u0643\u0631\u0629 \u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a
-message.notactive=\u062e\u0637\u0627\u0621 \u0641\u064a \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0644\u0648\u062d\u0629
-message.notexiststicket=\u0627\u0644\u0641\u0627\u062a\u0648\u0631\u0629 \u063a\u064a\u0631 \u0645\u0648\u062c\u0648\u062f\u0629
-message.noticket=\u0627\u0644\u0641\u0627\u062a\u0648\u0631\u0629 \u063a\u064a\u0631 \u0645\u0648\u062c\u0648\u062f\u0629 \u0645\u0637\u0644\u0642\u0627
-message.notpermissions=\u0627\u0646\u062a \u063a\u064a\u0631 \u0645\u0635\u0631\u062d \u0644\u0643 \u0644\u062a\u0646\u0641\u064a\u0630 \u0647\u0630\u0627 \u0627\u0644\u0627\u062c\u0631\u0627\u0621
-message.noupdatescript=\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0642\u062f\u064a\u0645\u0629 \u0644\u0643\u0646 \u0644\u0627\u064a\u0645\u0643\u0646 \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0649 \u0627\u0644\u0627\u0635\u062f\u0627\u0631 \u0627\u0644\u062c\u062f\u064a\u062f \u0633\u0648\u0641 \u064a\u062a\u0645 \u0627\u063a\u0644\u0627\u0642 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0627\u0646
-message.noweight=\u0648\u0632\u0646 \u063a\u064a\u0631 \u0645\u0645\u0643\u0646
-
-message.paymentcashneg=\u0642\u0645 \u0628\u0639\u0645\u0644\u064a\u0629 \u0645\u0631\u062a\u062c\u0639 \u062b\u0645 \u0627\u0636\u063a\u0637 \u0645\u0648\u0627\u0641\u0642
-message.paymenterror=\u062e\u0637\u0627\u0621 \u0641\u064a \u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u062f\u0641\u0639
-message.paymenterrorunknown=\u062e\u0637\u0627\u0621 \u063a\u064a\u0631 \u0645\u0639\u0631\u0648\u0641 \u0641\u064a \u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u062f\u0641\u0639
-message.paymentexceptionremote=\u062e\u0637\u0627\u0621 \u0641\u064a \u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u062f\u0641\u0639 \u0627\u0644\u0628\u0639\u064a\u062f
-message.paymentexceptionservice=\u062e\u0637\u0627\u0621 \u0627\u0633\u062a\u062b\u0646\u0627\u0626\u064a \u0641\u064a \u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u062f\u0641\u0639
-message.paymentfree=\u0645\u062c\u0627\u0646\u064a
-message.paymentgatewayext=\u0642\u0645 \u0628\u0627\u0644\u062f\u0641\u0639 \u0628\u0648\u0627\u0633\u0637\u0629 \u0627\u0644\u0628\u0637\u0627\u0642\u0629 \u0627\u0644\u0627\u0626\u062a\u0645\u0627\u0646\u064a\u0629 \u062b\u0645 \u0627\u0636\u063a\u0637 \u0645\u0648\u0627\u0641\u0642
-message.paymentgatewayextrefund=\u0642\u0645 \u0628\u0645\u0631\u062a\u062c\u0639 \u0627\u0644\u0628\u0637\u0627\u0642\u0629 \u0627\u0644\u0627\u0626\u062a\u0645\u0627\u0646\u064a\u0629 \u062b\u0645 \u0627\u0636\u063a\u0637 \u0645\u0648\u0627\u0641\u0642
-message.paymentgatewayswipe=\u0645\u0631\u0631 \u0627\u0644\u0628\u0637\u0627\u0642\u0629 \u0627\u0644\u0627\u0626\u062a\u0645\u0627\u0646\u064a\u0629 \u062b\u0645 \u0627\u0636\u063a\u0637 \u0645\u0648\u0627\u0641\u0642
-message.paymentgatewaytype=\u0633\u062c\u0644 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0628\u0637\u0627\u0642\u0629 \u0627\u0644\u0627\u0626\u062a\u0645\u0627\u0646\u064a\u0629 \u062b\u0645 \u0627\u0636\u0639\u0637 \u0645\u0648\u0627\u0641\u0642
-message.paymentnotauthorised=\u0627\u0644\u0627\u062c\u0631\u0627\u0621 \u063a\u064a\u0631 \u0645\u0635\u0631\u062d
-message.paymentrefundsnotsupported=\u0627\u0644\u0645\u0631\u062a\u062c\u0639 \u063a\u064a\u0631 \u0645\u062f\u0639\u0648\u0645
-message.preparescanner=\u0642\u0645 \u0628\u062a\u062c\u0647\u064a\u0632 \u0627\u0644\u0645\u0627\u0633\u062d \u0627\u0644\u0636\u0648\u0626\u064a \u0644\u062a\u062d\u0645\u064a\u0644 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u0646\u062a\u062c\u0627\u062a \u062b\u0645 \u0627\u0636\u063a\u0637 \u0645\u0648\u0627\u0641\u0642
-message.printererror=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0637\u0628\u0627\u0639\u0629 \u0627\u0644\u0641\u0627\u062a\u0648\u0631\u0629
-message.productnotselected=\u0644\u0645 \u064a\u062a\u0645 \u062a\u062d\u062f\u064a\u062f \u0645\u0646\u062a\u062c
-message.stockchangesactioned=Stock Changes Actioned
-
-message.restartchanges=\u062a\u0645 \u062d\u0641\u0638 \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u0628\u0646\u062c\u0627\u062d \u0633\u0648\u0641 \u062a\u0638\u0647\u0631 \u0627\u0644\u0646\u062a\u0627\u0626\u062c \u0628\u0639\u062f \u0627\u0639\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0628\u0631\u0646\u0627\u0645\u062c
-
-message.scannerfail=P\u0641\u0634\u0644 \u062a\u062d\u0645\u064a\u0644 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u0646\u062a\u062c\u0627\u062a
-message.scannerfail2=\u0641\u0634\u0644 \u062a\u0646\u0632\u064a\u0644 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u0646\u062a\u062c\u0627\u062a
-message.scannerok=\u062a\u0645 \u062a\u062d\u0645\u064a\u0644 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u0646\u062a\u062c\u0627\u062a \u0628\u0646\u062c\u0627\u062d
-
-message.tableempty=\u0627\u0644\u0637\u0627\u0648\u0644\u0629 \u0641\u0627\u0631\u063a\u0629 \u0627\u0644\u0627\u0646
-message.tablefull=\u0627\u0644\u0637\u0627\u0648\u0644\u0629 \u0645\u0645\u062a\u0644\u0626\u0629 \u0627\u0644\u0627\u0646
-message.title=\u0631\u0633\u0627\u0644\u0629 \u0633\u062c\u0644 \u0627\u0644\u0646\u0642\u062f\u064a\u0629
-
-message.updatedatabase=\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0642\u062f\u064a\u0645\u0629 \u0648\u0633\u064a\u062a\u0645 \u0627\u0644\u062a\u062d\u062f\u064a\u062b \u062a\u0644\u0642\u0627\u0626\u064a\u0627 \u0642\u062f \u064a\u062d\u062f\u062b \u0641\u0642\u062f\u0627\u0646 \u0644\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u062a\u0627\u0643\u062f \u0645\u0646 \u0627\u0644\u0646\u0633\u062e\u0629 \u0627\u0644\u0627\u062d\u062a\u064a\u0627\u0637\u064a\u0629 \u0647\u0644 \u062a\u0631\u064a\u062f \u0627\u0644\u0627\u0633\u062a\u0645\u0631\u0627
-
-message.wannaclosecash=\u0647\u0644 \u0627\u0646\u062a \u0645\u062a\u0627\u0643\u062f \u0627\u0646\u0643 \u062a\u0631\u064a\u062f \u0627\u063a\u0644\u0627\u0642 \u0627\u0644\u0635\u0646\u062f\u0648\u0642
-message.wannadelete=\u0647\u0644 \u0627\u0646\u062a \u0645\u062a\u0627\u0643\u062f \u0627\u0646\u0643 \u062a\u0631\u064a\u062f \u0627\u0644\u063a\u0627\u0621 \u0627\u0644\u0637\u0644\u0628 \u0627\u0644\u062d\u0627\u0644\u064a
-message.wannasave=\u062d\u0641\u0638 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a \u0642\u0628\u0644 \u0627\u0644\u062e\u0631\u0648\u062c
-
-payment.title=\u0645\u062f\u0641\u0648\u0639\u0627\u062a
-
-Printer.Null=\u0627\u0644\u0637\u0627\u0628\u0639\u0629 \u063a\u064a\u0631 \u0646\u062a\u0648\u0641\u0631\u0629
-Printer.Screen=\u0637\u0627\u0628\u0639\u0629 \u0634\u0627\u0634\u0629
-Printer.Serial=\u0637\u0627\u0628\u0639\u0629 \u062a\u0630\u0643\u0631\u0629
-
-resource.binary=\u0645\u0644\u0641
-resource.image=\u0635\u0648\u0631\u0629
-resource.text=\u0646\u0635
-
-rest.label.chairs=\u0643\u0631\u0633\u064a
-rest.label.customer=\u0639\u0645\u064a\u0644
-rest.label.date=\u062d\u062c\u0632
-rest.label.notes=\u0645\u0630\u0643\u0631\u0627\u062a
-
-scale.notdefined=\u0627\u0644\u0642\u064a\u0633 \u063a\u064a\u0631 \u0645\u0639\u0631\u0641
-scale.invalidvalue=\u0642\u064a\u0627\u0633 \u0642\u064a\u0645\u0629 \u063a\u064a\u0631 \u0635\u062d\u064a\u062d\u0629
-scale.weighitem=Weigh Item
-
-stock.in.movement=(\u062f\u0627\u062e\u0644) \u062d\u0631\u0643\u0629
-stock.in.purchase=(\u062f\u0627\u062e\u0644) \u0645\u0634\u062a\u0631\u0648\u0627\u062a
-stock.in.refund=(\u062f\u0627\u062e\u0644) \u0645\u0631\u062a\u062c\u0639
-stock.out.break=(\u062e\u0627\u0631\u062c) \u0643\u0633\u0631
-stock.out.crossing=\u062a\u0642\u0627\u0637\u0639
-stock.out.movement=(\u062e\u0627\u0631\u062c) \u062d\u0631\u0643\u0629
-stock.out.refund=(\u062e\u0627\u0631\u062c) \u0645\u0631\u062c\u0639
-stock.out.sale=(\u062e\u0627\u0631\u062c) \u0628\u064a\u0639
-stock.in.openpack=(In) Open Pack
-stock.out.openpack=(Out) Open Pack
-stock.in.stockchange=(In) Stock Change
-stock.out.stockchange=(Out) Stock Change
-
-tab.cash=\u0646\u0642\u062f\u064a
-tab.cashrefund=\u0645\u0631\u062a\u062c\u0639
-tab.cheque=\u0634\u064a\u0643
-tab.chequerefund=\u0634\u064a\u0643
-tab.free=\u0645\u062c\u0627\u0646\u064a
-tab.magcard=\u0628\u0637\u0627\u0642\u0629 \u0627\u0626\u062a\u0645\u0627\u0646\u064a\u0629
-tab.paper=\u0642\u0633\u064a\u0645\u0629
-tab.debt=\u0627\u064a\u062f\u0627\u0639
-
-title.changepassword=\u062a\u063a\u064a\u064a\u0631 \u0643\u0644\u0645\u0629 \u0627\u0644\u0633\u0631
-title.editor=\u0631\u0633\u0627\u0644\u0629 \u0645\u062d\u0631\u0631
-
-transpayment.cash=\u0643\u0627\u0634
-transpayment.cashin=\u0646\u0642\u062f\u064a \u062f\u0627\u062e\u0644
-transpayment.cashout=\u0646\u0642\u062f\u064a \u062e\u0627\u0631\u062c
-transpayment.cashrefund=\u0645\u0631\u062a\u062c\u0639
-transpayment.cheque=\u0634\u064a\u0643
-transpayment.chequerefund=\u0645\u0631\u062a\u062c\u0639 \u0634\u064a\u0643
-transpayment.free=\u0645\u062c\u0627\u0646\u064a
-transpayment.magcard=\u0628\u0637\u0627\u0642\u0629 \u0627\u0626\u062a\u0645\u0627\u0646\u064a\u0629
-transpayment.magcardrefund=\u0645\u0631\u062a\u062c\u0639 \u0628\u0637\u0627\u0642\u0629 \u0627\u0626\u062a\u0645\u0627\u0646\u064a\u0629
-transpayment.paperin=\u0645\u0630\u0643\u0631\u0629 \u062f\u062e\u0648\u0644
-transpayment.paperout=\u0645\u0630\u0643\u0631\u0629 \u062e\u0631\u0648\u062c
-transpayment.debt=\u0627\u064a\u062f\u0627\u0639
-transpayment.debtpaid=\u0627\u064a\u062f\u0627\u0639 \u0645\u062f\u0641\u0648\u0639
-
-Visor.Title=\u0646\u0642\u0627\u0637 \u0628\u064a\u0639 \u064a\u0648\u0646\u064a \u0633\u0646\u062a\u0631\u0627
\ No newline at end of file
diff --git a/locales/Arabic/reports/uk/chromis/reports/paymentreport_messages_ar.properties b/locales/Arabic/paymentreport_messages_ar.properties
similarity index 94%
rename from locales/Arabic/reports/uk/chromis/reports/paymentreport_messages_ar.properties
rename to locales/Arabic/paymentreport_messages_ar.properties
index 337aab81..bc41b95c 100644
--- a/locales/Arabic/reports/uk/chromis/reports/paymentreport_messages_ar.properties
+++ b/locales/Arabic/paymentreport_messages_ar.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Arabic/reports/uk/chromis/reports/people_messages_ar.properties b/locales/Arabic/people_messages_ar.properties
similarity index 90%
rename from locales/Arabic/reports/uk/chromis/reports/people_messages_ar.properties
rename to locales/Arabic/people_messages_ar.properties
index 0f318a83..1f25910f 100644
--- a/locales/Arabic/reports/uk/chromis/reports/people_messages_ar.properties
+++ b/locales/Arabic/people_messages_ar.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Arabic/reports/uk/chromis/reports/piesalescat_messages_ar.properties b/locales/Arabic/piesalescat_messages_ar.properties
similarity index 93%
rename from locales/Arabic/reports/uk/chromis/reports/piesalescat_messages_ar.properties
rename to locales/Arabic/piesalescat_messages_ar.properties
index 29f759b1..de9f37c9 100644
--- a/locales/Arabic/reports/uk/chromis/reports/piesalescat_messages_ar.properties
+++ b/locales/Arabic/piesalescat_messages_ar.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Arabic/pos_messages_ar.properties b/locales/Arabic/pos_messages_ar.properties
deleted file mode 100644
index 8a639ef0..00000000
--- a/locales/Arabic/pos_messages_ar.properties
+++ /dev/null
@@ -1,671 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-button.memberdiscount=\u062a\u0630\u0643\u0631 \u0627\u0644\u0642\u0631\u0635
-button.catalogadd=\u0646\u0639\u0645
-button.catalogdel=\u0644\u0627
-button.clean=\u0625\u0639\u0627\u062f\u0629 \u0636\u0628\u0637
-Button.Close=\u062e\u0631\u0648\u062c
-Button.CloseCash=\u0625\u063a\u0644\u0627\u0642 \u0646\u0642\u062f\u064a\u0629
-button.Discount=\u062e\u0635\u0645
-button.edit=\u062a\u062d\u0631\u064a\u0631
-button.ExecuteChart=\u062a\u0646\u0641\u064a\u0630 \u0645\u062e\u0637\u0637
-button.executefilter=\u062a\u0646\u0641\u064a\u0630
-Button.ExecuteReport=\u0639\u0645\u0644 \u062a\u0642\u0631\u064a\u0631
-Button.Factory=\u0627\u0633\u062a\u0639\u0627\u062f\u0629
-button.linediscount=\u062e\u0635\u0645\' %
-button.listtickets=\u0642\u0627\u0626\u0645\u0629
-button.migrate=\u062a\u0631\u062d\u064a\u0644 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a
-button.movetable=\u062a\u062d\u0631\u0643
-button.NewTicket=\u062c\u062f\u064a\u062f
-Button.OK=\u0648\u0627\u0641\u0642
-button.opendrawer=\u0627\u0644\u062f\u0631\u062c
-button.pay=\u062f\u0641\u0639
-button.peoplepassword=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
-Button.PrintCash=\u0637\u0628\u0627\u0639\u0629
-button.receive=\u0627\u0633\u062a\u0644\u0627\u0645
-button.refund=\u0627\u0644\u0645\u0631\u062a\u062c\u0639
-button.refundall=\u0627\u0631\u062c\u0627\u0639 \u0627\u0644\u0643\u0644
-button.refundit=\u0625\u0631\u062c\u0627\u0639 \u0627\u0644\u0633\u0644\u0639\u0629
-button.refundline=\u0625\u0631\u062c\u0627\u0639 \u0633\u0637\u0631
-button.refundone=\u0625\u0631\u062c\u0627\u0639 \u0648\u0627\u062d\u062f
-button.reloadticket=\u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0635\u0641\u062d\u0629
-button.reservations=\u0627\u0644\u062d\u062c\u0648\u0632\u0627\u062a
-button.reset=\u0625\u0639\u0627\u062f\u0629 \u0636\u0628\u0637
-Button.Restore=\u062a\u062d\u062f\u064a\u062b \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a
-Button.Save=\u062d\u0641\u0638
-button.scale=\u0646\u0637\u0627\u0642
-button.setperson=\u0627\u0644\u0646\u0627\u062f\u0644
-button.tables=\u0627\u0644\u0637\u0627\u0648\u0644\u0627\u062a
-button.totaldiscount=\u0625\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0642\u0631\u0635
-Button.Exit=\u062e\u0631\u0648\u062c
-button.moorings=\u0627\u0644\u0645\u0631\u0627\u0633\u064a
-button.test=\u0627\u062e\u062a\u0628\u0627\u0631
-button.newcustomer=\u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0639\u0645\u064a\u0644
-caption.tickets=\u0628\u0637\u0627\u0642\u0627\u062a
-caption.upload=\u0631\u0641\u0639 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u0646\u062a\u062c\u0627\u062a
-caption.split=\u062a\u062c\u0632\u0623\u0629 \u0645\u0628\u064a\u0639\u0627\u062a
-database.ScriptError=\u0644\u0627 \u064a\u0645\u0643\u0646 \u062a\u0646\u0641\u064a\u0630 \u0627\u0644\u0628\u0631\u0646\u0627\u0645\u062c \u0627\u0644\u0646\u0635\u064a \u0644\u0625\u0646\u0634\u0627\u0621 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a.
-database.ScriptNotFound=Updater.sql script.\u063a\u064a\u0631 \u0642\u0627\u062f\u0631 \u0639\u0644\u0649 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649.
-database.ScriptWarning=\u0645\u0646\u0634\u064a\u0621 \u0627\u0644\u0633\u0643\u0631\u0628\u062a \u0644\u0627 \u064a\u0639\u0645\u0644 \u0628\u0646\u062c\u0627\u062d.
-database.UnableToConnect=\u063a\u064a\u0631 \u0642\u0627\u062f\u0631 \u0639\u0644\u0649 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0645\u0639 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a! \u062a\u062d\u0642\u0642 \u0645\u0646 \u0625\u0639\u062f\u0627\u062f \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0641\u064a \u0627\u0644\u062a\u0643\u0648\u064a\u0646
-database.UpdaterWarning=\u0644\u0627 \u064a\u0645\u0643\u0646 \u062a\u0646\u0641\u064a\u0630 \u0627\u0644\u0628\u0631\u0646\u0627\u0645\u062c \u0627\u0644\u0646\u0635\u064a \u0627\u0644\u0645\u062d\u062f\u062b \u0644\u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a.
-datebase.ResetPickup=\u0644\u0627 \u064a\u0645\u0643\u0646 \u0625\u0639\u0627\u062f\u0629 \u062a\u0639\u064a\u064a\u0646 \u0627\u0644\u0644\u0627\u0642\u0637
-Display.Null=\u0639\u0631\u0636 \u063a\u064a\u0631 \u0645\u062a\u0648\u0641\u0631\u0629
-Display.Screen=\u0639\u0631\u0636 \u0627\u0644\u0634\u0627\u0634\u0629
-Display.Window=\u0639\u0631\u0636
-exception.unavailabledataset=\u0628\u064a\u0627\u0646\u0627\u062a \u063a\u064a\u0631 \u0645\u062a\u0648\u0641\u0631\u0629
-exception.unavailablefield=\u0627\u0644\u0645\u062c\u0627\u0644 \u063a\u064a\u0631 \u0645\u0639\u0631\u0641: {0}
-exception.unavailablefields=\u0627\u0644\u062d\u0642\u0648\u0644 \u063a\u064a\u0631 \u0645\u062a\u0648\u0641\u0631\u0629
-filter.dbdriverlib=\u0645\u0643\u062a\u0628\u0629 \u0628\u0631\u0646\u0627\u0645\u062c \u062a\u0634\u063a\u064a\u0644 (*. \u062c\u0631\u0629\u060c *. \u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0628\u0631\u064a\u062f\u064a)
-form.customertitle=\u0642\u0627\u0626\u0645\u0629 \u0632\u0628\u0648\u0646
-form.productslist=\u0642\u0627\u0626\u0645\u0629 \u0645\u0646\u062a\u062c
-form.selectprintertitle=\u0627\u062e\u062a\u064a\u0627\u0631 \u0637\u0627\u0628\u0639\u0629
-form.tickettitle=\u0642\u0627\u0626\u0645\u0629 \u0628\u0637\u0627\u0642\u0629
-label.address=\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0633\u0637\u06311
-label.address2=\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0633\u0637\u06312
-label.all=\u0627\u0644\u0643\u0644
-label.attribute=\u0627\u0644\u0633\u0645\u0629
-label.attributes=\u0627\u0644\u0633\u0645\u0627\u062a
-label.attributeset=\u0645\u062c\u0645\u0648\u0639\u0629 \u0627\u0644\u0633\u0645\u0627\u062a
-label.autologoffpanel=\u062e\u0631\u0648\u062c \u062a\u0644\u0642\u0627\u0626\u064a
-label.autologonoff=\u062e\u0631\u0648\u062c \u062a\u0644\u0642\u0627\u0626\u064a \u0628\u0639\u062f \u0627\u0644\u0628\u064a\u0639
-label.autoloffrestaurant=\u0641\u064a \u0648\u0636\u0639 \u0645\u0637\u0639\u0645 - \u0627\u0644\u0639\u0648\u062f\u0629 \u0625\u0644\u0649 \u0627\u0644\u0637\u0627\u0648\u0644\u0627\u062a
-label.autolofftime=\u062a\u0633\u062c\u064a\u0644 \u062e\u0631\u0648\u062c \u062a\u0644\u0642\u0627\u0626\u064a \u0628\u0639\u062f \u0648\u0642\u062a \u063a\u064a\u0631 \u0646\u0634\u0637
-label.autologoffzero=\u062b\u0627\u0646\u064a\u0629\u060c 0 = \u0644\u0627 \u062a\u0633\u062c\u064a\u0644 \u062e\u0631\u0648\u062c \u0645\u0648\u0642\u0648\u062a
-label.btndisplay=\u0632\u0631 \u0639\u0631\u0636 \u0627\u0644\u0646\u0635
-label.bybarcode=\u0628\u0648\u0627\u0633\u0637\u0629 \u0627\u0644\u0628\u0627\u0631\u0643\u0648\u062f
-label.bydates=\u062d\u0633\u0628 \u0627\u0644\u062a\u0627\u0631\u064a\u062e
-label.byform=\u062d\u0633\u0628 \u0627\u0644\u0646\u0645\u0648\u0630\u062c
-label.byreason=\u062d\u0633\u0628 \u0627\u0644\u0633\u0628\u0628
-label.bycustomer=\u0645\u0646 \u0642\u0628\u0644 \u0627\u0644\u0639\u0645\u064a\u0644
-label.byproduct=\u062d\u0633\u0628 \u0627\u0644\u0645\u0646\u062a\u062c
-label.bywarehouse=\u062d\u0633\u0628 \u0627\u0644\u0645\u0648\u0642\u0639
-label.card=\u0627\u0644\u0628\u0637\u0627\u0642\u0629
-label.cardexpdate=\u062a\u0627\u0631\u064a\u062e \u0627\u0646\u062a\u0647\u0627\u0621 \u0627\u0644\u0635\u0644\u0627\u062d\u064a\u0629
-label.cardholder=\u0627\u0633\u0645 \u062d\u0627\u0645\u0644\u0647\u0627
-label.cardnumber=\u0631\u0642\u0645 \u0627\u0644\u0628\u0637\u0627\u0642\u0629
-Label.Cash=\u0627\u0644\u0646\u0642\u062f\u064a\u0629
-label.cascade=\u062a\u062a\u0627\u0644\u064a
-Label.CashMachine=\u0633\u062c\u0644 \u0627\u0644\u0646\u0642\u062f\u064a\u0629
-label.catid=\u0627\u0644\u0631\u0645\u0632
-label.catimage=\u0635\u0648\u0631\u0629
-label.catname=\u0627\u0644\u0641\u0626\u0629
-label.certificatepwd=\u0634\u0647\u0627\u062f\u0629 P\'word
-label.certificatepath=\u0634\u0647\u0627\u062f\u0629
-Label.ChangeCash=\u062a\u063a\u064a\u064a\u0631
-label.city=\u0627\u0644\u0628\u0644\u062f\u0629 / \u0627\u0644\u0645\u062f\u064a\u0646\u0629
-label.commerceid=\u0631\u0645\u0632 \u0627\u0644\u062a\u062c\u0627\u0631\u0629
-label.commercepwd=\u0627\u0644\u062a\u062c\u0627\u0631\u0629 P / WD
-label.commercesign=\u062e\u062a\u0645 \u0627\u0644\u062a\u062c\u0627\u0631\u0629
-label.companyname=\u0627\u0633\u0645 \u0627\u0644\u0634\u0631\u0643\u0629
-label.companyaddr1=\u0627\u0644\u0634\u0627\u0631\u0639
-label.companyaddr2=\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0633\u0637\u06312
-label.companyaddr3=\u0627\u0644\u0645\u062f\u064a\u0646\u0629
-label.companyaddr4=\u0631\u0645\u0632 \u0628\u0631\u064a\u062f\u064a
-label.companytelephone=\u0631\u0642\u0645 \u0627\u0644\u062c\u0648\u0627\u0644
-label.companyFax=\u0631\u0642\u0645 \u0627\u0644\u0641\u0627\u0643\u0633
-label.companyemail=\u0639\u0646\u0648\u0627\u0646 \u0627\u0644\u0625\u064a\u0645\u064a\u0644
-label.companytax=\u0631\u0642\u0645 \u0636\u0631\u064a\u0628\u0629 \u0627\u0644\u0642\u064a\u0645\u0629 \u0627\u0644\u0645\u0636\u0627\u0641\u0629
-label.companywww=\u0645\u0648\u0642\u0639 \u0627\u0644\u0625\u0646\u062a\u0631\u0646\u062a
-label.configreceipt=\u0625\u0639\u062f\u0627\u062f \u0627\u0644\u0625\u064a\u0635\u0627\u0644
-label.contact=\u0627\u0644\u0627\u062a\u0635\u0627\u0644
-label.country=\u0627\u0644\u0628\u0644\u062f
-label.csvbad=\u0627\u0644\u0633\u0639\u0631 \u0633\u064a\u0626
-label.csvclearlog=\u062a\u0635\u0641\u064a\u0629 \u0633\u062c\u0644 \u0627\u0644\u0627\u0633\u062a\u064a\u0631\u0627\u062f
-label.csvdelimit=\u0641\u0648\u0627\u0635\u0644
-label.csvenableclear=\u062a\u0645\u0643\u064a\u0646 \u0632\u0631 \u062a\u0635\u0641\u064a\u0629 \u0627\u0644\u0627\u0633\u062a\u064a\u0631\u0627\u062f
-label.csvfile=\u0645\u0644\u0641
-label.csvimpostbtn=\u0627\u0633\u062a\u064a\u0631\u0627\u062f CSV
-label.cvsinvalid=\u0645\u0646\u062a\u062c\u0627\u062a \u0645\u0639\u064a\u0628\u0629
-label.csvmissing=\u0628\u064a\u0627\u0646\u0627\u062a \u0646\u0627\u0642\u0635\u0629
-label.csvnewproducts=\u0645\u0646\u062a\u062c\u0627\u062a \u062c\u062f\u064a\u062f\u0629
-label.cvsnotchanged=\u0644\u0627 \u062a\u063a\u064a\u064a\u0631
-label.csvpriceupdated=\u0623\u0633\u0639\u0627\u0631 \u0645\u062d\u062f\u062b\u0629
-label.csvread=\u0642\u0631\u0627\u0621\u0629 \u0631\u0623\u0633\u064a\u0629
-label.csvrecordsfound=\u0633\u062c\u0644\u0627\u062a \u0645\u062a\u0648\u0627\u062c\u062f\u0629
-label.csvresetimport=\u0625\u0639\u0627\u062f\u0629 \u0636\u0628\u0637 \u0627\u0633\u062a\u064a\u0631\u0627\u062f \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a
-label.csvsellingintax=\u0633\u0639\u0631 \u0627\u0644\u0628\u064a\u0639 \u064a\u0634\u0645\u0644 \u0627\u0644\u0636\u0631\u064a\u0628\u0629\u061f?
-label.curdebt=\u0627\u0644\u062f\u064a\u0646 \u0627\u0644\u062d\u0627\u0636\u0631
-label.curdate=\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u062f\u064a\u0646
-label.currency=\u0627\u0644\u0639\u0645\u0644\u0629
-label.currencybutton=\u0625\u062e\u0641\u0627\u0621 \u0627\u0644\u0646\u0635 \u0627\u0644\u0645\u062a\u0631\u0627\u0643\u0628
-label.customer=\u0632\u0628\u0648\u0646
-label.custtaxcategory=\u0641\u0626\u0629 \u0627\u0644\u0636\u0631\u064a\u0628\u0629
-Label.Database=\u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a
-label.date=\u0627\u0644\u062a\u0627\u0631\u064a\u062e
-label.datestitle=\u0627\u0644\u062a\u0627\u0631\u064a\u062e
-label.datetime=\u0627\u0644\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0648\u0642\u062a
-Label.DbDriver=\u0628\u0631\u0646\u0627\u0645\u062c \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0637\u0628\u0642\u0629
-label.dbdriverlib=\u0645\u0643\u062a\u0628\u0629 \u0628\u0631\u0646\u0627\u0645\u062c \u0627\u0644\u062a\u0634\u063a\u064a\u0644
-Label.DbPassword=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
-Label.DbURL=URL
-Label.DbUser=\u0645\u0633\u062a\u062e\u062f\u0645
-label.debt=\u062f\u064a\u0646
-label.double=\u0636\u0627\u0639\u0641
-label.dutyid=\u0627\u0644\u0631\u0645\u0632
-label.dutyname=\u0627\u0633\u0645 \u0627\u0644\u0636\u0631\u064a\u0628\u0629
-label.dutyrate=\u0627\u0644\u0645\u0639\u062f\u0644
-label.editline=\u062a\u062d\u0631\u064a\u0631 \u0633\u0637\u0631
-label.email=\u0627\u0644\u0625\u064a\u0645\u064a\u0644
-Label.EndDate=\u0625\u0644\u0649 \u062a\u0627\u0631\u064a\u062e
-label.fax=\u0627\u0644\u0641\u0627\u0643\u0633
-label.firstname=\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0623\u0648\u0644
-label.floorid=\u0627\u0644\u0631\u0645\u0632
-label.floorname=\u0627\u0644\u0637\u0627\u0628\u0642
-label.general=\u0639\u0627\u0645
-label.grossprofit=\u0625\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0631\u0628\u062d
-label.Infopanel=\u0625\u062e\u0641\u0627\u0621 \u0627\u0644\u0634\u0631\u064a\u0637 \u0627\u0644\u0633\u0641\u0644\u064a \u0644\u0644\u062d\u0627\u0644\u0629
-label.image=\u0635\u0648\u0631\u0629
-label.inputamount=\u0645\u0631\u0628\u0639 \u0627\u0644\u0625\u062f\u062e\u0627\u0644 \u0641\u0648\u0642 \u0644\u0648\u062d\u0629 \u0627\u0644\u0645\u0641\u0627\u062a\u064a\u062d
-Label.InputCash=\u0625\u0639\u0637\u0627\u0621
-label.integer=\u0639\u062f\u062f \u0635\u062d\u064a\u062d
-label.item=\u0627\u0644\u0633\u0644\u0639\u0629
-label.item2=\u0627\u0644\u0648\u0635\u0641
-label.javapos.drawer=\u0627\u0644\u062f\u0631\u062c
-label.javapos.printer=\u0627\u0644\u0637\u0627\u0628\u0639\u0629
-label.lastname=\u0627\u0644\u0627\u0633\u0645 \u0627\u0644\u0623\u062e\u064a\u0631
-label.lindediscount=\u062e\u0635\u0645\' %
-label.LoadError=\u062e\u0637\u0623 \u0641\u064a \u0645\u062d\u0627\u0648\u0644\u0629 \u0639\u0631\u0636 \u0647\u0630\u0647 \u0627\u0644\u0648\u0638\u0627\u0626\u0641
-label.locale=\u0627\u0644\u0645\u0648\u0642\u0639
-label.location=\u0627\u0644\u0639\u0646\u0648\u0627\u0646
-label.locationaddress=\u0627\u0644\u0639\u0646\u0648\u0627\u0646
-label.locationid=\u0627\u0644\u0631\u0645\u0632
-label.locationname=\u0627\u0644\u0627\u0633\u0645
-label.looknfeel=\u0627\u0644\u062a\u062c\u0644\u064a\u062f
-label.loyaltycardnumber=\u0631\u0642\u0645 \u0627\u0644\u0628\u0637\u0627\u0642\u0629
-label.loyaltyproducts=\u062e\u0644\u0627\u0635\u0629 \u0627\u0644\u062a\u0641\u0627\u0635\u064a\u0644
-Label.MachineDisplay=\u0639\u0631\u0636 \u0627\u0644\u0632\u0628\u0648\u0646
-label.machinedisplayconn=\u0627\u0644\u0648\u0636\u0639
-label.machinedisplayport=\u0645\u0646\u0641\u0630
-Label.MachineName=\u0627\u0644\u0627\u0633\u0645
-Label.MachinePrinter=\u0627\u0644\u0637\u0627\u0628\u0639\u0629
-Label.MachinePrinter2=\u0637\u0627\u0628\u0639\u0629 2
-Label.MachinePrinter3=\u0637\u0627\u0628\u0639\u0629 3
-Label.MachinePrinter4=\u0637\u0627\u0628\u0639\u0629 4
-Label.MachinePrinter5=\u0637\u0627\u0628\u0639\u0629 5
-Label.MachinePrinter6=\u0637\u0627\u0628\u0639\u0629 6
-label.machineprinterport=\u0645\u0646\u0641\u0630
-Label.MachineScreen=\u0627\u0644\u0634\u0627\u0634\u0629
-label.magcardreader=\u0645\u062f\u064a\u0631 \u0642\u0627\u0631\u0626 \u0627\u0644\u0628\u0637\u0627\u0642\u0629
-label.mandatory=\u0625\u0644\u0632\u0627\u0645\u064a
-label.margin=\u0627\u0644\u0641\u0627\u0631\u0642
-label.marine=\u062e\u064a\u0627\u0631 \u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0645\u0627\u0631\u064a\u0646\u0627
-label.maxdebt=\u0633\u0642\u0641 \u0627\u0626\u062a\u0645\u0627\u0646
-label.maximum=\u0627\u0644\u062d\u062f \u0627\u0644\u0627\u0642\u0635\u0649
-label.merchantcode=\u0627\u0644\u0643\u0648\u062f \u0627\u0644\u062a\u062c\u0627\u0631\u064a
-label.minimum=\u0627\u0644\u062d\u062f \u0627\u0644\u0623\u062f\u0646\u0649
-label.money=\u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a
-
-label.packsinstock=In stock
-label.packof= packs of
-label.packstosplit=Packs to split
-label.productinpack=Product in pack
-label.split=Split
-
-label.mooringscreatefor=\u0625\u0646\u0634\u0627\u0621 \u062a\u0630\u0643\u0631\u0629 \u0644
-label.mooringcreatebtn=\u0625\u0646\u0634\u0627\u0621 \u062a\u0630\u0643\u0631\u0629
-label.name=\u0627\u0644\u0627\u0633\u0645
-Label.Name=\u0627\u0644\u0627\u0633\u0645
-label.notes=\u0645\u0644\u0627\u062d\u0638\u0627\u062a
-label.noticketstoclose=\u0644\u0627 \u0623\u0630\u0648\u0646\u0627\u062a \u0644\u0644\u0625\u063a\u0644\u0627\u0642
-label.nullcategory=\u0644\u0627 \u0641\u0626\u0629
-label.order=\u0637\u0644\u0628
-Label.Password=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
-label.passwordnew=\u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u062c\u062f\u064a\u062f\u0629
-label.passwordold=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0627\u0644\u0642\u062f\u064a\u0645\u0629
-label.passwordrepeat=\u062a\u0643\u0631\u0627\u0631 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
-Label.Payment=\u0633\u062f\u0627\u062f
-label.paymentdate=\u0627\u0644\u062a\u0627\u0631\u064a\u062e
-label.paymentgateway=\u0628\u0648\u0627\u0628\u0629 \u0627\u0644\u0633\u062f\u0627\u062f
-label.paymentnote=\u0645\u0644\u0627\u062d\u0638\u0627\u062a
-label.paymentreason=\u0627\u0644\u0633\u0628\u0628
-label.paymentstitle=\u0645\u0644\u062e\u0635
-label.paymenttestmode=\u0648\u0636\u0639 \u0627\u062e\u062a\u0628\u0627\u0631
-label.paymenttotal=\u0627\u0644\u0645\u0628\u0644\u063a
-label.peopleimage=\u0635\u0648\u0631\u0629
-label.peoplename=\u0627\u0644\u0627\u0633\u0645
-label.peoplevisible=\u0645\u0631\u0626\u064a
-label.percent=\u0627\u0644\u0646\u0633\u0628\u0629
-label.pickupcodesize=\u0637\u0648\u0644 \u0631\u0642\u0645 \u0627\u0644\u0644\u0627\u0642\u0637
-label.phone=\u0627\u0644\u0647\u0627\u062a\u0641
-label.phone2=\u0627\u0644\u0646\u0642\u0627\u0644
-label.placefloor=\u0627\u0644\u0637\u0627\u0628\u0642
-label.placeid=\u0627\u0644\u0631\u0645\u0632
-label.placename=\u0627\u0644\u0645\u0643\u0627\u0646
-label.placeposition=\u0627\u0644\u0645\u0648\u0642\u0639
-label.postal=\u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u0628\u0631\u064a\u062f\u064a
-label.price=\u0627\u0644\u0633\u0639\u0631
-label.pricetax=\u0627\u0644\u0633\u0639\u0631 + \u0627\u0644\u0636\u0631\u064a\u0628\u0629
-label.printtokitchen=\u0637\u0628\u0627\u0639\u0629 \u0639\u0646 \u0628\u0639\u062f
-label.prodaux=\u0645\u0633\u0627\u0639\u062f\u0629 (\u0627\u0644\u062a\u0639\u062f\u064a\u0644)\u061f
-label.prodbarcode=\u0628\u0627\u0631\u0643\u0648\u062f
-label.prodcategory=\u0627\u0644\u0641\u0626\u0629
-label.prodcost=\u0627\u0644\u062a\u0643\u0644\u0641\u0629
-label.prodgeneral=\u0639\u0627\u0645
-label.prodincatalog=\u062a\u0636\u0645\u064a\u0646 \u0627\u0644\u0641\u0626\u0629\u061f?
-label.prodname=\u0627\u0644\u0627\u0633\u0645
-label.prodorder=\u062a\u0631\u062a\u064a\u0628 \u0627\u0644\u062f\u0644\u064a\u0644
-label.prodpricebuy=\u0633\u0639\u0631 \u0627\u0644\u0634\u0631\u0627\u0621
-label.prodpricesell=\u0633\u0639\u0631 \u0627\u0644\u0628\u064a\u0639
-label.prodpriceselltax=\u0633\u0639\u0631 \u0627\u0644\u0628\u064a\u0639 + \u0627\u0644\u0636\u0631\u064a\u0628\u0629
-label.prodproperties=\u062e\u0635\u0627\u0626\u0635
-label.productreceipt=\u0637\u0644\u0628 \u0625\u064a\u0635\u0627\u0644 \u0644\u0644\u0636\u0645\u0627\u0646
-label.prodref=\u0631\u0645\u0632 \u0643\u0645\u0631\u062c\u0639
-label.prodscale=\u0646\u0637\u0627\u0642
-label.prodstock=\u0627\u0644\u0645\u062e\u0627\u0632\u0646
-label.prodstockcost=\u062a\u0643\u0644\u0641\u0629 \u0627\u0644\u0645\u062e\u0632\u0648\u0646 \u062d\u0633\u0628 \u0627\u0644\u0633\u0646\u0629
-label.prodstockmax=\u0627\u0644\u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u0623\u0642\u0635\u0649
-label.pricewith00=\u0627\u062f\u062e\u0627\u0644 \u0627\u0644\u0633\u0639\u0631 \u0628\u0627\u0644\u0628\u064a\u0633\u0627\u062a
-label.prodstocksec=\u0627\u0644\u0645\u0633\u062a\u0648\u0649 \u0627\u0644\u0623\u062f\u0646\u0649
-label.prodstockvol=\u062d\u062c\u0645 \u0627\u0644\u0645\u062e\u0632\u0646
-label.prodtaxcode=\u0627\u0644\u0636\u0631\u064a\u0628\u0629
-label.produnits=\u0627\u0644\u0639\u062f\u062f
-label.prodvaluebuy=\u0642\u064a\u0645\u0629 \u0627\u0644\u0634\u0631\u0627\u0621
-label.prodvaluesell=\u0642\u064a\u0645\u0629 \u0627\u0644\u0628\u064a\u0639
-label.prodvolume=\u0627\u0644\u062d\u062c\u0645
-label.properties=\u062e\u0635\u0627\u0626\u0635
-label.receiptprint=\u0625\u064a\u0642\u0627\u0641 \u0637\u0628\u0627\u0639\u0629 \u0625\u064a\u0635\u0627\u0644
-label.receiptprinter=\u0637\u0627\u0628\u0639\u0629 \u0627\u0644\u0625\u064a\u0635\u0627\u0644
-label.recorddeleted=\u0633\u062c\u0644 \u0645\u062d\u0630\u0648\u0641
-label.recordeof=\u0644\u0627 \u062a\u0648\u062c\u062f \u0633\u062c\u0644\u0627\u062a
-label.recordnew=\u0633\u062c\u0644 \u062c\u062f\u064a\u062f
-label.refunds=\u0625\u0631\u062c\u0627\u0639\u0627\u062a
-label.region=\u0627\u0644\u062f\u0648\u0644\u0629 / \u0645\u0642\u0627\u0637\u0639\u0629
-label.remainingcash=\u0627\u0644\u0645\u062a\u0628\u0642\u064a
-label.reportsprinter=\u062a\u0642\u0627\u0631\u064a\u0631 \u0627\u0644\u0637\u0628\u0627\u0639\u0629
-label.resetpickup=\u0625\u0639\u0627\u062f\u0629 \u062a\u0639\u064a\u064a\u0646 \u0644\u0627\u0642\u0637 \u0627\u0644\u0645\u062d\u0627\u0633\u0628
-label.resname=\u0645\u0648\u0627\u0631\u062f
-label.restaurantcustomer=\u0627\u0633\u062a\u0642\u0628\u0627\u0644 \u0627\u0644\u0639\u0645\u064a\u0644 {0}. \u062d\u062f\u062f \u0627\u0644\u0637\u0627\u0648\u0644\u0629 \u0627\u0644\u0641\u0627\u0631\u063a\u0629.
-label.restaurantmove=\u0627\u0644\u0637\u0627\u0648\u0644\u0629 \u062a\u062a\u062d\u0631\u0643 {0}. \u062d\u062f\u062f \u0637\u0627\u0648\u0644\u0629 \u0627\u062e\u0631\u0649 \u0627\u0648 \u0627\u0644\u0637\u0627\u0648\u0644\u0629 \u0627\u0644\u0623\u0635\u0644\u064a\u0629
-label.role=\u0627\u0644\u062f\u0648\u0631
-label.roletableclass=\u0627\u0644\u0637\u0628\u0642\u0629
-label.roletabledescription=\u0627\u0644\u0648\u0635\u0641
-label.roletableallowed=\u0627\u0644\u0633\u0645\u0627\u062d
-label.sales=\u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a
-label.salestitle=\u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a
-label.scale=\u0646\u0637\u0627\u0642
-label.scaleinput=\u0625\u062f\u062e\u0627\u0644 \u0627\u0644\u0648\u0632\u0646
-label.scanner=\u0627\u0644\u0645\u0627\u0633\u062d \u0627\u0644\u0636\u0648\u0626\u064a
-label.SChargepanel=\u062e\u062f\u0645\u0629 \u0634\u062d\u0646
-label.SCOnOff=\u062a\u0645\u0643\u064a\u0646 \u062e\u062f\u0645\u0629 \u0634\u062d\u0646
-label.SCRestaurant=\u0648\u0636\u0639 \u0627\u0644\u0645\u0637\u0639\u0645 \u0641\u0642\u0637\u061f?
-label.SCRate=\u0645\u0639\u062f\u0644 \u062e\u062f\u0645\u0629 \u0627\u0644\u0634\u062d\u0646
-label.SCZero=%
-label.search=\u0628\u062d\u062b
-label.searchkey=\u0645\u0641\u062a\u0627\u062d \u0628\u062d\u062b
-label.sequence=\u062a\u0633\u0644\u0633\u0644
-label.sha=SHA
-Label.StartDate=\u0645\u0646
-label.startuptext=\u0646\u0635
-label.startuplogo=\u0627\u0644\u0634\u0639\u0627\u0631
-label.startuppanel=\u0634\u0627\u0634\u0629 \u0628\u062f\u0627\u064a\u0629 \u0627\u0644\u062a\u0634\u063a\u064a\u0644
-label.stockdate=\u0627\u0644\u062a\u0627\u0631\u064a\u062e
-label.stockproduct=\u0627\u0644\u0645\u0646\u062a\u062c
-label.stockreason=\u0627\u0644\u0633\u0628\u0628
-label.stocktaker=\u062d\u0633\u0628 \u0627\u0644\u0645\u062f\u062e\u0644
-label.storename=\u0627\u0633\u0645 \u0627\u0644\u0645\u062e\u0632\u0646
-label.subcategorytitle=\u0639\u0631\u0636 \u0627\u0644\u0627\u0633\u0645 \u0641\u064a \u0627\u0644\u0644\u0648\u062d\u0629
-label.subtotalcash=\u0627\u0644\u0645\u062c\u0645\u0648\u0639 \u0627\u0644\u0641\u0631\u0639\u064a
-label.table=\u0637\u0627\u0648\u0644\u0629
-label.tabledisplayoptions=\u0639\u0631\u0636 \u0627\u0644\u0637\u0627\u0648\u0644\u0629
-label.tableshowcustomerdetails=\u0625\u0638\u0647\u0627\u0631 \u062a\u0641\u0627\u0635\u064a\u0644 \u0627\u0644\u0632\u0628\u0648\u0646 \u0641\u064a \u0627\u0644\u062c\u062f\u0648\u0644
-label.tableshowwaiterdetails=\u0625\u0638\u0647\u0627\u0631 \u062a\u0641\u0627\u0635\u064a\u0644 \u0627\u0644\u0646\u0627\u062f\u0644 \u0641\u064a \u0627\u0644\u062c\u062f\u0648\u0644
-label.tax=\u0627\u0644\u0636\u0631\u0627\u0626\u0628
-label.taxcash=\u0627\u0644\u0636\u0631\u0627\u0626\u0628
-label.taxcategory=\u0641\u0626\u0629 \u0627\u0644\u0636\u0631\u064a\u0628\u0629
-label.taxes=\u0627\u0644\u0636\u0631\u0627\u0626\u0628
-label.taxid=\u0631\u0645\u0632 \u0627\u0644\u062d\u0633\u0627\u0628
-label.taxincluded=\u062a\u0639\u064a\u064a\u0646 \u062a\u0636\u0645\u064a\u0646 \u0627\u0644\u0636\u0631\u064a\u0628\u0629 \u0639\u0646\u062f \u0628\u062f\u0621 \u0627\u0644\u062a\u0634\u063a\u064a\u0644
-label.taxparent=\u0627\u0644\u0636\u0631\u064a\u0628\u0629 \u0627\u0644\u0623\u0635\u0644
-label.terminal=\u0627\u0644\u0645\u062d\u0637\u0629 \u0627\u0644\u0637\u0631\u0641\u064a\u0629
-label.textcolourcustomer=\u0644\u0648\u0646 \u0646\u0635 \u0627\u0644\u0639\u0645\u0644\u0627\u0621
-label.textcolourwaiter=\u0644\u0648\u0646 \u0646\u0635 \u0627\u0644\u0646\u0627\u062f\u0644
-label.textclourtablename=\u0644\u0648\u0646 \u0646\u0635 \u0627\u0633\u0645 \u0627\u0644\u0637\u0627\u0648\u0644\u0629
-label.texttip=\u0646\u0635 \u0631\u0633\u0627\u0644\u0629 \u0627\u0644\u062a\u0644\u0645\u064a\u062d
-label.ticketid=\u062a\u0630\u0643\u0631\u0629 #
-Label.Tickets=\u0627\u0644\u0645\u0639\u0627\u0645\u0644\u0627\u062a
-Label.Ticketsbag=\u0628\u0637\u0627\u0642\u0627\u062a
-Label.ticketsetupexample=\u0645\u062b\u0627\u0644
-Label.ticketsetupprefix=\u0628\u0627\u062f\u0626\u0629 \u0631\u0642\u0645 \u0627\u0644\u0625\u064a\u0635\u0627\u0644
-Label.ticketsetupnumber=\u0631\u0642\u0645 \u0627\u0644\u0625\u064a\u0635\u0627\u0644 -\u062d\u062f \'\u0627\u0644\u0637\u0648\u0644
-label.time=\u0627\u0644\u0648\u0642\u062a
-label.totalcash=\u0627\u0644\u0625\u062c\u0645\u0627\u0644\u064a
-label.totaldiscount=\u0625\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0642\u0631\u0635
-label.type=\u0627\u0644\u0646\u0648\u0639
-label.units=\u0627\u0644\u0639\u062f\u062f
-label.units2=\u0627\u0644\u0643\u0645\u064a\u0629
-label.uploadingproducts=\u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0645\u0646\u062a\u062c\u0627\u062a. \u064a\u0631\u062c\u0649 \u0627\u0644\u0627\u0646\u062a\u0638\u0627\u0631...
-label.user=\u0645\u0633\u062a\u062e\u062f\u0645
-label.value=\u0627\u0644\u0642\u064a\u0645\u0629
-label.value2=\u0627\u0644\u0633\u0639\u0631
-label.variableprice=\u062a\u063a\u064a\u064a\u0631 \u0633\u0639\u0631 \u0645\u0646\u062a\u062c
-label.visible=\u0645\u0631\u0626\u064a
-label.warehouse=\u0627\u0644\u0645\u0646\u062a\u062c
-Menu.Attributes=\u0633\u0645\u0627\u062a \u0645\u0646\u062a\u062c
-Menu.AttributeSets=\u0645\u062c\u0645\u0648\u0639\u0627\u062a \u0645\u0646\u062a\u062c \u0633\u0645\u0629
-Menu.AttributeUse=\u0627\u0633\u062a\u062e\u062f\u0627\u0645 \u0633\u0645\u0629 \u0627\u0644\u0645\u0646\u062a\u062c
-Menu.AttributeValues=\u0633\u0645\u0627\u062a \u0627\u0644\u0642\u064a\u0645
-Menu.Auxiliar=\u0645\u0646\u062a\u062c\u0627\u062a \u0625\u0636\u0627\u0641\u064a\u0629
-Menu.Backoffice=\u0625\u062f\u0627\u0631\u0629
-Menu.CashFlow=\u0627\u0644\u062a\u062f\u0641\u0642\u0627\u062a \u0627\u0644\u0646\u0642\u062f\u064a\u0629
-Menu.CashRegisterLog=\u0633\u062c\u0644 \u0627\u0644\u0645\u0639\u0627\u0645\u0644\u0627\u062a
-Menu.CategorySales=\u0641\u0626\u0629 \u0645\u0628\u064a\u0639\u0627\u062a
-Menu.Catalog=\u0643\u062a\u0627\u0644\u0648\u062c
-Menu.Categories=\u0641\u0626\u0627\u062a
-Menu.CategoryProductSalesChart=\u0631\u0633\u0645 \u0628\u064a\u0627\u0646\u064a \u0644\u0641\u0626\u0629 \u0645\u0628\u064a\u0639\u0627\u062a
-Menu.ChangePassword=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
-Menu.ClosedProducts=\u0645\u0628\u064a\u0639\u0627\u062a \u0645\u0646\u062a\u062c
-Menu.CloseTPV=\u0625\u063a\u0644\u0627\u0642 \u0646\u0642\u062f\u064a\u0629
-Menu.Closing=\u0627\u0644\u0646\u0642\u062f\u064a\u0629 \u0645\u063a\u0644\u0642\u0629
-Menu.Configuration=\u062e\u0635\u0627\u0626\u0635
-Menu.CSVImport=CSV\u0627\u0633\u062a\u064a\u0631\u0627\u062f \u0645\u0644\u0641
-Menu.CSVReset=\u0645\u0633\u062d \u0633\u062c\u0644 \u0627\u0633\u062a\u064a\u0631\u0627\u062f \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a
-Menu.Customers=\u0627\u0644\u0632\u0628\u0627\u0626\u0646
-Menu.Customers.Reports=\u062a\u0642\u0627\u0631\u064a\u0631
-Menu.CustomersBReport=\u0627\u0644\u0645\u062f\u064a\u0646\u064a\u0646 (\u0646\u0645\u0637 \u0628\u0637\u0627\u0642\u0629)
-Menu.CustomersDiary=\u0645\u062a\u0627\u0628\u0639\u0629 \u0627\u0644\u0632\u0628\u0627\u0626\u0646
-Menu.CustomersList=\u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0632\u0628\u0627\u0626\u0646
-Menu.CustomersManagement=\u0627\u0644\u0632\u0628\u0627\u0626\u0646
-Menu.CustomersPayment=\u062f\u0641\u0639\u0627\u062a \u0632\u0628\u0648\u0646
-Menu.CustomersReport=\u0627\u0644\u0632\u0628\u0627\u0626\u0646 (\u0646\u0645\u0637 \u0628\u0637\u0627\u0642\u0629)
-message.DBDefault=html>
The Default database shipped with Chromis POS is Apache Derby Embedded. It is intended for stand-alone, single-user installs only.
\n
If you need multiple terminals to connect to a central database then select from the Database dropdown list above.
\n
If you have selected an alternative database then you must ensure it is installed and configured correctly before trying to connect Chromis POS
A working database cannot be detected. A default database will be created. Do you want to continue?
-message.createdatabasejl=New database information needs to be created for John L changes. This will now be done. Do you want to continue? If not, you will be unable to use the system.
-message.customerdebtexceded=Customer Credit Limit exceeded
-message.databaseconnectionerror=Unable to connect to database: Database not available
-message.databasedrivererror=Unable to connect to database: Database driver not found
-message.databasenotsupported=\u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \"{0}\" \u063a\u064a\u0631 \u0645\u0639\u062a\u0645\u062f\u0629
-message.databasesuccess=
You\'re Connected!
Restart Chromis POS to load your Database Connection
-message.mergetable=\u062f\u0645\u062c \u0637\u0627\u0648\u0644\u0627\u062a
-message.mergetablequestion=\u0647\u0630\u0627 \u0633\u064a\u062f\u0645\u062c \u0627\u0644\u0637\u0627\u0648\u0644\u0627\u062a \u0647\u0644 \u0623\u0646\u062a \u0645\u062a\u0623\u0643\u062f \u0644\u0641\u0639\u0644 \u0647\u0630\u0627\u061f?
-message.nigratemessage=\u062a\u0631\u062d\u064a\u0644 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a
-message.migratenotsupported=\u0646\u0648\u0639 \u062a\u0631\u062d\u064a\u0644 \u063a\u064a\u0631 \u0645\u0639\u062a\u0645\u062f \u0644\u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a
-message.nocard=\u0628\u0637\u0627\u0642\u0629 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645 \u063a\u064a\u0631 \u0645\u0648\u062c\u0648\u062f\u0629. \u064a\u0631\u062c\u0649 \u0625\u0639\u0627\u062f\u0629 \u0627\u0644\u0645\u062d\u0627\u0648\u0644\u0629
-message.nocardreader=\u0644\u0645 \u064a\u062a\u0645 \u062a\u0643\u0648\u064a\u0646 \u0642\u0627\u0631\u0626 \u0627\u0644\u0628\u0637\u0627\u0642\u0627\u062a
-message.nocustomer=\u0644\u0627 \u064a\u0648\u062c\u062f \u0643\u0648\u062f \u0644\u0644\u0632\u0628\u0648\u0646
-message.nocustomernodebt=\u0644\u0645 \u064a\u062a\u0645 \u062a\u0639\u064a\u064a\u0646 \u0627\u0644\u0628\u064a\u0639 \u0644\u062d\u0633\u0627\u0628 \u0627\u0644\u0639\u0645\u064a\u0644.\r\n\u0644\u0627 \u064a\u0645\u0643\u0646 \u0648\u0636\u0639\u0647 \u0639\u0644\u0649 \u0627\u0644\u062d\u0633\u0627\u0628
-message.nopaymentgateway=\u0644\u0645 \u064a\u062a\u0645 \u062a\u0643\u0648\u064a\u0646 \u0645\u062f\u062e\u0644 \u0633\u062f\u0627\u062f
-message.noprinters=\u0644\u0627 \u0637\u0627\u0628\u0639\u0627\u062a \u0645\u062b\u0628\u062a\u0629
-message.noproduct=\u0644\u0627 \u064a\u0648\u062c\u062f \u0631\u0645\u0632 \u0627\u0644\u0645\u0646\u062a\u062c \u0647\u0630\u0627
-message.nosaveticket=\u063a\u064a\u0631 \u0642\u0627\u062f\u0631 \u0639\u0644\u0649 \u062d\u0641\u0638 \u0628\u0637\u0627\u0642\u0629 \u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a
-message.notactive=\u062e\u0637\u0623 \u0641\u064a \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0644\u0648\u062d\u0629
-message.notexiststicket=\u0644\u0627 \u062a\u0648\u062c\u062f \u0625\u064a\u0635\u0627\u0644\u0627\u062a
-message.notexiststickettitle=\u0631\u0633\u0627\u0644\u0629 \u0625\u064a\u0635\u0627\u0644
-message.noticket=\u0627\u0644\u0625\u064a\u0635\u0627\u0644 \u0644\u0627 \u064a\u0637\u0648\u0644 \u062a\u0648\u0627\u062c\u062f\u0647
-message.notpermissions=\u0644\u0627 \u064a\u0633\u0645\u062d \u0644\u0643 \u0628\u062a\u0646\u0641\u064a\u0630 \u0647\u0630\u0647 \u0627\u0644\u0645\u0647\u0645\u0629
-message.noupdatescript=A database from a previous version has been detected but it is not possible to upgrade the database automatically. Chromis POS will exit now.
-message.noweight=\u0648\u0632\u0646\u0647\u0627 \u0644\u0645 \u064a\u0643\u0646 \u0645\u0645\u0643\u0646\u0627
-message.nullticket=You cannot create an empty ticket layaway! Please add something to this Sale
-message.paymentcashneg=\u0642\u0645 \u0628\u0627\u0644\u0627\u0631\u062c\u0627\u0639. \u062b\u0645 \u0627\u0636\u063a\u0637 \u0645\u0648\u0627\u0641\u0642
-message.paymenterror=\u0639\u0645\u0644\u064a\u0629 \u062f\u0641\u0639 \u062e\u0627\u0637\u0626\u0629!
-message.paymenterrorunknown=\u062e\u0637\u0623 \u063a\u064a\u0631 \u0645\u0639\u0631\u0648\u0641 \u0641\u064a \u0645\u0639\u0627\u0645\u0644\u0629 \u0627\u0644\u062f\u0641\u0639!
-message.paymentexceptionremote=\u062f\u0641\u0639 \u0639\u0646 \u0628\u0639\u062f \u062e\u0627\u0637\u0626!
-message.paymentexceptionservice=\u062e\u0637\u0623 \u0627\u0633\u062a\u062b\u0646\u0627\u0621 \u062f\u0641\u0639 \u062e\u062f\u0645\u0629!
-message.paymentfree=\u0645\u062c\u0627\u0646\u0627!
-message.paymentgatewayext=html>
Make the Card Payment. Then press OK
Make the Card Refund. Then press OK
Changing the content of the default Startup Text and not declaring that this is free software is in violation of the Free Software Foundation\'s GNU General Public License GPL
-message.systemclosecash=\u0632\u0631 \u062a\u062d\u0631\u064a\u0643 \u0625\u063a\u0644\u0627\u0642 \u0627\u0644\u0646\u0642\u062f\u064a\u0629
-message.tableempty=\u0627\u0644\u0637\u0627\u0648\u0644\u0627\u062a \u0627\u0644\u0622\u0646 \u0641\u0627\u0631\u063a\u0629
-message.tablefull=\u0627\u0644\u0637\u0627\u0648\u0644\u0627\u062a \u0627\u0644\u0622\u0646 \u0645\u0644\u0626\u0649
-message.title=\u0631\u0633\u0627\u0644\u0629 \u0645\u0633\u062c\u0644 \u0627\u0644\u0646\u0642\u062f\u064a\u0629
-message.updatedatabase=A database from a previous version has been detected. The database will be upgraded automatically. DATA MAY BE LOST. FIRST CREATE A BACKUP. Do you want to continue?
-message.updatedatabasejl=New database changes are required (John l changes). The database will be upgraded automatically. DATA MAY BE LOST. FIRST CREATE A BACKUP. Do you want to continue? If not, you will be unable to use the system.
-message.wannaclosecash=\u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u0625\u063a\u0644\u0627\u0642 \u0627\u0644\u0646\u0642\u062f\u064a\u0629\u061f?
-message.wannadelete=\u0645\u062a\u0623\u0643\u062f \u0623\u0646\u0643 \u062a\u0631\u064a\u062f \u062d\u0630\u0641 \u0627\u0644\u0637\u0644\u0628\u064a\u0629 \u0627\u0644\u062d\u0627\u0644\u064a\u0629\u061f?
-message.wannasave=\u0642\u0628\u0644 \u0627\u0644\u062e\u0631\u0648\u062c \u0623\u062a\u0631\u063a\u0628 \u0628\u062d\u0641\u0638 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a \u061f?
-migration.ScriptNotFound=\u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0633\u0643\u0631\u0628\u062a \u0627\u0644\u062a\u0631\u062d\u064a\u0644
-migration.warning=\u062e\u0637\u0623 SQL \u062a\u0631\u062d\u064a\u0644
-migration.warningnodefault=\u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0645\u0646\u0634\u0626 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a
-migration.warningjl=\u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0645\u0646\u0634\u064a\u0621 \u0645\u064a\u0632\u0627\u062a JL
-migration.warningnofk=\u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0645\u0641\u062a\u0627\u062d \u062a\u0631\u0627\u062c\u0639 \u062e\u0627\u0631\u062c\u064a
-migration.notvalidversion=\u0646\u0648\u0639 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u062c\u062f\u064a\u062f\u0629 \u063a\u064a\u0631 \u0645\u0639\u062a\u0645\u062f
-payment.title=\u0633\u062f\u0627\u062f
-Printer.Null=\u0627\u0644\u0637\u0627\u0628\u0639\u0629 \u063a\u064a\u0631 \u0645\u062a\u0627\u062d\u0629
-Printer.Screen=\u0634\u0627\u0634\u0629 \u0627\u0644\u0637\u0627\u0628\u0639\u0629
-Printer.Serial=\u0637\u0627\u0628\u0639\u0629 \u0627\u0644\u062a\u0630\u0627\u0643\u0631
-resource.binary=\u062b\u0646\u0627\u0626\u064a
-resource.image=\u0635\u0648\u0631\u0629
-resource.text=\u0646\u0635
-rest.label.chairs=\u0627\u0644\u0643\u0631\u0627\u0633\u064a
-rest.label.customer=\u0632\u0628\u0648\u0646
-rest.label.date=\u0627\u0644\u062d\u062c\u0632
-rest.label.notes=\u0645\u0644\u0627\u062d\u0638\u0627\u062a
-scale.notdefined=\u0646\u0637\u0627\u0642 \u063a\u064a\u0631 \u0645\u062d\u062f\u062f
-scale.invalidvalue=\u0646\u0637\u0627\u0642 \u0642\u064a\u0645\u0629 \u063a\u064a\u0631 \u0635\u0627\u0644\u062d
-scale.weighitem=Weigh Item
-
-stock.in.movement=(\u0641\u064a) \u0627\u0644\u062d\u0631\u0643\u0629
-stock.in.purchase=(\u0641\u064a) \u0627\u0644\u0634\u0631\u0627\u0621
-stock.in.refund=(\u0641\u064a) \u0627\u0644\u0645\u0631\u062a\u062c\u0639
-stock.out.break=(\u062e\u0627\u0631\u062c) \u0627\u0644\u062a\u0627\u0644\u0641
-stock.out.crossing=\u0645\u0639\u0628\u0631
-stock.out.movement=(\u062e\u0627\u0631\u062c) \u0627\u0644\u062d\u0631\u0643\u0629
-stock.out.refund=(\u062e\u0627\u0631\u062c) \u0627\u0644\u0645\u0631\u062a\u062c\u0639
-stock.out.sale=(\u062e\u0627\u0631\u062c) \u0627\u0644\u0628\u064a\u0639
-stock.in.openpack=(In) Open Pack
-stock.out.openpack=(Out) Open Pack
-stock.in.stockchange=(In) Stock Change
-stock.out.stockchange=(Out) Stock Change
-
-tab.bank=\u0645\u0635\u0631\u0641
-tab.cash=\u0627\u0644\u0646\u0642\u062f\u064a\u0629
-tab.cashrefund=\u0627\u0644\u0645\u0631\u062a\u062c\u0639
-tab.cheque=\u0634\u064a\u0643
-tab.chequerefund=\u0634\u064a\u0643
-tab.free=\u0645\u062c\u0627\u0646\u0627
-tab.magcard=\u0627\u0644\u0628\u0637\u0627\u0642\u0629
-tab.paper=\u0642\u0633\u064a\u0645\u0629
-tab.debt=\u062f\u064a\u0646
-title.changepassword=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
-title.editor=\u0631\u0633\u0627\u0644\u0629 \u062a\u0646\u0628\u064a\u0647
-transpayment.bank=\u0645\u0635\u0631\u0641
-transpayment.cash=\u0627\u0644\u0646\u0642\u062f\u064a\u0629
-transpayment.cashin=(\u062f\u0627\u062e\u0644 \u0641\u064a) \u0627\u0644\u0646\u0642\u062f
-transpayment.cashout=(\u062e\u0627\u0631\u062c \u0645\u0646) \u0627\u0644\u0646\u0642\u062f
-transpayment.cashrefund=\u0627\u0644\u0645\u0631\u062a\u062c\u0639
-transpayment.cheque=\u0634\u064a\u0643
-transpayment.chequerefund=\u0631\u062f \u0634\u064a\u0643
-transpayment.free=\u0645\u062c\u0627\u0646\u0627
-transpayment.magcard=\u0627\u0644\u0628\u0637\u0627\u0642\u0629
-transpayment.magcardrefund=\u0628\u0637\u0627\u0642\u0629 \u0631\u062f
-transpayment.paperin=\u0645\u0644\u0627\u062d\u0638\u0629 \u0627\u0644\u0625\u062f\u062e\u0627\u0644
-transpayment.paperout=\u0645\u0644\u0627\u062d\u0638\u0629 \u0645\u062e\u0631\u062c\u0627\u062a
-transpayment.debt=\u062f\u064a\u0646
-transpayment.debtpaid=\u062f\u064a\u0648\u0646 \u0645\u062f\u0641\u0648\u0639\u0629
-Visor.Title=Chromis POS
-Menu.Leaves=\u0623\u0648\u0631\u0627\u0642
-Menu.Breaks=\u0641\u0648\u0627\u0635\u0644
-Menu.CheckInCheckOut=\u062a\u062d\u0642\u0642 \u062f/\u062e
-Menu.PresenceManagement=\u0643\u0634\u0641 \u062d\u0636\u0648\u0631
-Menu.Employees.Reports=\u062a\u0642\u0627\u0631\u064a\u0631
-Menu.DailyPresenceReport=\u0627\u0644\u062d\u0636\u0648\u0631 \u0627\u0644\u064a\u0648\u0645\u064a
-Menu.DailyScheduleReport=\u0627\u0644\u062c\u062f\u0648\u0644 \u0627\u0644\u064a\u0648\u0645\u064a
-Menu.PerformanceReport=\u0627\u0644\u0623\u062f\u0627\u0621
-label.epm.employee=\u0639\u0627\u0645\u0644
-label.epm.employee.id=\u0631\u0645\u0632 \u0627\u0644\u0645\u0648\u0638\u0641
-label.epm.startdate=\u0645\u0646
-label.epm.enddate=\u0625\u0644\u0649 \u062a\u0627\u0631\u064a\u062e
-label.epm.notes=\u0645\u0644\u0627\u062d\u0638\u0627\u062a
-label.epm.visible=\u0645\u0631\u0626\u064a
-message.cannotfindemployee=\u0644\u0627 \u064a\u0645\u0643\u0646 \u0625\u064a\u062c\u0627\u062f \u0639\u0627\u0645\u0644\u064a\u0646
-message.invalidenddate=\u0644\u0627 \u064a\u0645\u0643\u0646 \u062a\u0639\u064a\u064a\u0646 \u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0646\u0647\u0627\u064a\u0629 \u0642\u0628\u0644 \u0627\u0644\u0646\u0638\u0627\u0645 \u0623\u0648 \u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0628\u062f\u0621
-message.invalidstartdate=\u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0628\u062f\u0621 \u0644\u0627 \u064a\u0645\u0643\u0646 \u0623\u0646 \u064a\u0643\u0648\u0646 \u0642\u0628\u0644 \u062a\u0627\u0631\u064a\u062e \u0627\u0644\u0646\u0638\u0627\u0645
-message.leavefor=\u063a\u0627\u062f\u0631 \u0644
-message.at=\u0641\u064a
-message.probleminbreak=\u062e\u0637\u0623 \u0641\u064a \u0627\u0644\u0627\u0633\u062a\u0631\u0627\u062d\u0629
-message.leavecontrol=\u0647\u0648 \u0641\u064a \u0625\u062c\u0627\u0632\u0629. \u0644\u0644\u062a\u062d\u0642\u0642 \u0627\u062a\u0635\u0644 \u0628\u0627\u0644\u0645\u062f\u064a\u0631 \u0644\u0627\u0644\u063a\u0627\u0621 \u0627\u0644\u0625\u062c\u0627\u0632\u0629
-message.checkedin=\u062a\u0645 \u0648\u0635\u0648\u0644\u0647 \u0641\u064a
-message.checkedout=\u062a\u0645 \u062e\u0631\u0648\u062c\u0647 \u0641\u064a
-message.cannotcheckin=\u0644\u0627 \u064a\u0645\u0643\u0646 \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0627\u0644\u0648\u0635\u0648\u0644
-message.cannotcheckout=\u0644\u0627 \u064a\u0645\u0643\u0646 \u0627\u0644\u062a\u062d\u0642\u0642 \u0645\u0646 \u0627\u0644\u062e\u0631\u0648\u062c
-message.noshift=has no previous shift
-message.breakoverandcheckedin=\'s Break is over and Checked In at
-message.breakoverandcheckedout=\'s break is over and Checked Out at
-label.roletabldescription=\u062a\u0646\u0627\u0632\u0644\u064a\u0627
-Button.newcustomer=\u0625\u0644\u063a\u0627\u0621
-message.systemclosecas=jCheckBox1
-title.CSVImport=\u0648\u0635\u0641 \u0627\u0644\u062d\u0627\u0644\u0629
-label.splitpayment=\u0627\u0646\u0642\u0633\u0627\u0645 \u0627\u0644\u062f\u0641\u0639
-label.addsplitpayment=\u0625\u0636\u0627\u0641\u0629 \u0633\u0628\u0644\u064a\u062a \u0627\u0644\u062f\u0641\u0639
-label.deletesplitpayment=\u062d\u0630\u0641 \u062a\u062c\u0632\u0623\u0629 \u0627\u0644\u062f\u0641\u0639
-Button.Test=\u062a\u062c\u0631\u0628\u0629
-label.CatalogueYes=\u0634\u0627\u0645\u0644
-label.CatalogueNo=\u0627\u0633\u062a\u0628\u0639\u0627\u062f
-label.CatalogueStatus=\u0641\u064a \u0627\u0644\u062f\u0644\u064a\u0644\u061f?
-label.nocashsales=\u0641\u062a\u062d \u0627\u0644\u062f\u0631\u062c - \u062f\u0648\u0646 \u0628\u064a\u0639
-label.closeoptions=\u062e\u064a\u0627\u0631\u0627\u062a \u0627\u0644\u0625\u063a\u0644\u0627\u0642
-label.producthtmlguide=html>\n
You can customise the Sales screen Product buttons here. \nIf you have even a little HTML knowlege you\'re more than halfway there!
\n
Hover over the text to your right to see the HTML code for the effect you want on your Button
Minimum and Maximum product levels are maintained in Product \nLocation along with Units sold
-label.fontcolour=html>Text ColourSMALL TEXTsmallsmallFont Size: smallLarge TextLargeBold TextItalic TextItalic TextBoldDisplay TWO LINES ON YOUR BUTTONDisplay TWO LINES ON YOUR BUTTON.
label.title=Cierres de caja
-
label.closedate=Fechas de cierre
-
label.partialtotal=Total
-
label.total=Total
-
label.partialtax=Impuestos
-
label.partialsubtotal=Subtotal
-
label.tax=Impuestos
-
label.subtotal=Subtotal
-
+transpayment.bank=Bank
transpayment.cash=Efectivo
-
transpayment.magcard=Tarjeta
-
transpayment.cashrefund=Devoluci\u00f3n
-
transpayment.magcardrefund=Devoluci\u00f3n con tarjeta
-
transpayment.cheque=Cheque
-
transpayment.chequerefund=Devoluci\u00f3n con cheque
-
transpayment.cashin=(entrada) Efectivo
-
transpayment.cashout=(salida) Efectivo
-
transpayment.free=Sin cargo
-
transpayment.ticket=Tiquet
-
transpayment.paperin=Vales cobrados
-
transpayment.paperout=Vales emitidos
transpayment.debt=A cuenta
transpayment.debtpaid=A cuenta pagado
diff --git a/locales/Argentinian/reports/uk/chromis/reports/closedproducts_messages_es_AR.properties b/locales/Argentinian/closedproducts_messages_es_AR.properties
similarity index 91%
rename from locales/Argentinian/reports/uk/chromis/reports/closedproducts_messages_es_AR.properties
rename to locales/Argentinian/closedproducts_messages_es_AR.properties
index 3240b26a..5ef12f36 100644
--- a/locales/Argentinian/reports/uk/chromis/reports/closedproducts_messages_es_AR.properties
+++ b/locales/Argentinian/closedproducts_messages_es_AR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Argentinian/reports/uk/chromis/reports/customers_messages_es_AR.properties b/locales/Argentinian/customers_messages_es_AR.properties
similarity index 88%
rename from locales/Argentinian/reports/uk/chromis/reports/customers_messages_es_AR.properties
rename to locales/Argentinian/customers_messages_es_AR.properties
index ceabef68..363d1c95 100644
--- a/locales/Argentinian/reports/uk/chromis/reports/customers_messages_es_AR.properties
+++ b/locales/Argentinian/customers_messages_es_AR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -22,3 +22,4 @@ label.curdebt=A cuenta
label.curdate=Fecha de d\u00e9bito
label.notes=Notas
label.taxid=CUIT / CUIL
+label.discount=Discount
diff --git a/locales/Argentinian/reports/uk/chromis/reports/customersdiary_messages_es_AR.properties b/locales/Argentinian/customersdiary_messages_es_AR.properties
similarity index 90%
rename from locales/Argentinian/reports/uk/chromis/reports/customersdiary_messages_es_AR.properties
rename to locales/Argentinian/customersdiary_messages_es_AR.properties
index 854c2124..38b93201 100644
--- a/locales/Argentinian/reports/uk/chromis/reports/customersdiary_messages_es_AR.properties
+++ b/locales/Argentinian/customersdiary_messages_es_AR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Argentinian/reports/uk/chromis/reports/inventory_messages_es_AR.properties b/locales/Argentinian/inventory_messages_es_AR.properties
similarity index 91%
rename from locales/Argentinian/reports/uk/chromis/reports/inventory_messages_es_AR.properties
rename to locales/Argentinian/inventory_messages_es_AR.properties
index 07b8d9a5..8a0bd958 100644
--- a/locales/Argentinian/reports/uk/chromis/reports/inventory_messages_es_AR.properties
+++ b/locales/Argentinian/inventory_messages_es_AR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Argentinian/reports/uk/chromis/reports/inventoryb_messages_es_AR.properties b/locales/Argentinian/inventoryb_messages_es_AR.properties
similarity index 90%
rename from locales/Argentinian/reports/uk/chromis/reports/inventoryb_messages_es_AR.properties
rename to locales/Argentinian/inventoryb_messages_es_AR.properties
index 9e9819df..45e2b5b7 100644
--- a/locales/Argentinian/reports/uk/chromis/reports/inventoryb_messages_es_AR.properties
+++ b/locales/Argentinian/inventoryb_messages_es_AR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Argentinian/reports/uk/chromis/reports/inventorydiff_messages_es_AR.properties b/locales/Argentinian/inventorydiff_messages_es_AR.properties
similarity index 91%
rename from locales/Argentinian/reports/uk/chromis/reports/inventorydiff_messages_es_AR.properties
rename to locales/Argentinian/inventorydiff_messages_es_AR.properties
index 64a035b2..5c972bff 100644
--- a/locales/Argentinian/reports/uk/chromis/reports/inventorydiff_messages_es_AR.properties
+++ b/locales/Argentinian/inventorydiff_messages_es_AR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Argentinian/reports/uk/chromis/reports/inventorydiffdetail_messages_es_AR.properties b/locales/Argentinian/inventorydiffdetail_messages_es_AR.properties
similarity index 91%
rename from locales/Argentinian/reports/uk/chromis/reports/inventorydiffdetail_messages_es_AR.properties
rename to locales/Argentinian/inventorydiffdetail_messages_es_AR.properties
index 3b8851c5..c5484f3e 100644
--- a/locales/Argentinian/reports/uk/chromis/reports/inventorydiffdetail_messages_es_AR.properties
+++ b/locales/Argentinian/inventorydiffdetail_messages_es_AR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Argentinian/reports/uk/chromis/reports/inventorylistdetail_messages_es_AR.properties b/locales/Argentinian/inventorylistdetail_messages_es_AR.properties
similarity index 90%
rename from locales/Argentinian/reports/uk/chromis/reports/inventorylistdetail_messages_es_AR.properties
rename to locales/Argentinian/inventorylistdetail_messages_es_AR.properties
index dc527b9b..2e5b51e6 100644
--- a/locales/Argentinian/reports/uk/chromis/reports/inventorylistdetail_messages_es_AR.properties
+++ b/locales/Argentinian/inventorylistdetail_messages_es_AR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Argentinian/locales/beans_messages_es_AR.properties b/locales/Argentinian/locales/beans_messages_es_AR.properties
deleted file mode 100644
index ea72e89b..00000000
--- a/locales/Argentinian/locales/beans_messages_es_AR.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-Button.Today=Hoy
-
-button.ok=Aceptar
-
-button.cancel=Cancelar
-
-title.calendar=Seleccione una fecha
diff --git a/locales/Argentinian/locales/data_messages_es_AR.properties b/locales/Argentinian/locales/data_messages_es_AR.properties
deleted file mode 100644
index 0585835b..00000000
--- a/locales/Argentinian/locales/data_messages_es_AR.properties
+++ /dev/null
@@ -1,137 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-exception.noupdatecount=N\u00famero de modificaciones desconocidas.
-
-exception.nodataset=Conjunto de datos sin definir.
-
-exception.nonegativelimits=No se permiten l\u00edmites negativos.
-
-exception.outofbounds=Fuera de los l\u00edmites.
-
-exception.noreadfile=Error leyendo el archivo de sentencias.
-
-exception.nofinishedfile=El archivo de sentencias no ha finalizado.
-
-exception.notnull=El valor no debe ser nulo.
-
-exception.noparamtype=El tipo del par\u00e1metro no est\u00e1 permitido.
-
-qbf.none=Ninguno
-
-qbf.null=Nulo
-
-qbf.notnull=No nulo
-
-qbf.equals=Igual
-
-qbf.distinct=Distinto
-
-qbf.greater=Mayor
-
-qbf.less=Menor
-
-qbf.greaterequals=Mayor o igual
-
-qbf.lessequals=Menor o igual
-
-label.findwhat=Buscar
-
-label.where=Donde
-
-label.match=Condici\u00f3n
-
-label.casesensitive=May\u00fasculas / Min\u00fasculas
-
-button.ok=Aceptar
-
-button.cancel=Cancelar
-
-title.find=Buscar
-
-list.startfield=Principio del campo
-
-list.wholefield=Todo el campo
-
-list.anypart=Cualquier parte del campo
-
-list.re=Expresi\u00f3n regular
-
-title.message=Mensaje del gestor de datos
-
-button.information=Informaci\u00f3n
-
-message.norecord=No se encuentra el registro.
-
-message.nolistdata=No se puede buscar en la lista de datos.
-
-message.noreload=No se puede recargar la lista de datos.
-
-message.nomove=No se puede mover a otro registro.
-
-message.nosave=No se puede grabar el registro.
-
-message.nodelete=No se puede marcar el registro para eliminar.
-
-message.nonew=No se puede crear un nuevo registro.
-
-
-sgn.danger=Peligro\:
-
-sgn.warning=Precauci\u00f3n\:
-
-sgn.caution=Atenci\u00f3n\:
-
-sgn.notice=Aviso\:
-
-sgn.important=Importante\:
-
-sgn.success=\u00c9xito\:
-
-sgn.unknown=Desconocido\:
-
-exception.nocompare=Se esperaba un comparador de QBF.
-
-exception.nodelete=No se han eliminado registros.
-
-exception.noupdate=No se han modificado registros.
-
-exception.noinsert=No se han creado registros.
-
-message.changeslost=Los cambios realizados se perder\u00e1n. \u00bfDesea continuar?
-
-title.editor=Mensaje del editor
-
-message.wannasave=\u00bfDesea guardar los cambios antes de salir?
-
-label.imagefiles=Archivos de im\u00e1genes
-
-message.resizeimage=La image seleccionada es m\u00e1s grande que el tama\u00f1o adecuado para el campo. \u00bfDesea redimensionarla?
-
-qbf.re=Expresi\u00f3n regular
-
-label.sortby=Ordenar por
-
-label.andby=Y por
-
-message.nosort=La condici\u00f3n de ordenaci\u00f3n no es correcta
-
-caption.sort=Ordenar
-exception.iofile=Error leyendo el archivo.
-exception.parserconfig=Error del analizador XML. Por favor, p\u00f3ngase en contacto con el administrador.
-exception.xmlfile=Error de an\u00e1lisis. Archivo XML no v\u00e1lido.
diff --git a/locales/Argentinian/locales/erp_messages_es_AR.properties b/locales/Argentinian/locales/erp_messages_es_AR.properties
deleted file mode 100644
index 47ea9d8f..00000000
--- a/locales/Argentinian/locales/erp_messages_es_AR.properties
+++ /dev/null
@@ -1,55 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.configerp=Configuraci\u00f3n ERP
-
-label.erpurl=URL de servicio
-
-label.erpid=C\u00f3digo de entidad
-
-label.erporg=C\u00f3digo de organizacion
-
-label.erppos=C\u00f3digo de punto de venta
-
-label.erpuser=Usuario
-
-label.erppassword=Clave de acceso
-
-message.urlnotdefined=No se ha definido la direcci\u00f3n URL del servicio de sincronizaci\u00f3n
-
-message.syncordersok=Se han sincronizado las \u00f3rdenes correctamente.
-
-message.syncordersinfo=Se han sincronizado {0} \u00f3rdenes.
-
-message.syncproductsok=Se han sincronizado los datos correctamente.
-
-message.syncproductsinfo=Se han sincronizado {0} productos.\nSe han sincronizado {1} clientes.
-
-message.remoteexception=Se ha producido un error de comunicaci\u00f3n.
-
-message.serviceexception=No se ha podido conectar con el servicio.
-
-message.malformedurlexception=La direcci\u00f3n URL del servicio no es correcta.
-
-message.returnnull=Los par\u00e1metros de sincronizaci\u00f3n no son correctos.
-
-message.zeroproducts=No hay datos que deban ser sincronizados.
-
-message.zeroorders=No hay \u00f3rdenes que deban ser sincronizados.
-
-message.propsnotdefined=No se ha definido el recurso de propiedades de sincronizaci\u00f3n "chromispos.properties".
diff --git a/locales/Argentinian/locales/pos_messages_es_AR.properties b/locales/Argentinian/locales/pos_messages_es_AR.properties
deleted file mode 100644
index 14d13a1d..00000000
--- a/locales/Argentinian/locales/pos_messages_es_AR.properties
+++ /dev/null
@@ -1,472 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-Button.Cancel=Cancelar
-button.catalogadd=A\u00f1adir al cat\u00e1logo
-button.catalogdel=Eliminar del cat\u00e1logo
-Button.Close=Cerrar
-Button.CloseCash=Cerrar caja
-Button.DeleteTicket=Eliminar
-button.edit=Editar
-Button.ExecuteChart=Ejecutar gr\u00e1fico
-button.executefilter=Ejecutar filtro
-Button.ExecuteReport=Ejecutar informe
-Button.Factory=Valores de f\u00e1brica
-button.listtickets=Lista
-button.movetable=Mover
-Button.NewTicket=Nuevo
-Button.OK=Aceptar
-button.opendrawer=Abrir caj\u00f3n
-button.peoplepassword=Clave de acceso
-button.print=Imprimir
-button.receive=Recibir
-button.refund=Devolver
-button.refundall=Devolver todo
-button.refundline=Devolver l\u00ednea
-button.refundone=Devolver uno
-button.reloadticket=Recargar
-button.reservations=Reservas
-button.reset=Limpiar
-Button.Restore=Restaurar
-Button.Save=Guardar
-button.tables=Mesas
-caption.tickets=Recibos
-caption.upload=Subir lista de productos
-Database.ScriptError=No se ha podido ejecutar el script de creaci\u00f3n de base de datos.
-Database.ScriptWarning=No se ha podido ejecutar el script correctamente.
-Display.Null=Visor no disponible
-Display.Screen=Visor en pantalla
-Display.Window=Visor
-exception.unavailabledataset=No hay conjunto de datos disponible
-exception.unavailablefield=Campo no definido\: {0}
-exception.unavailablefields=No hay campos disponibles
-filter.dbdriverlib=Manejador (librer\u00eda) (*.jar,*.zip)
-form.productslist=Lista de productos
-label.bybarcode=Por c\u00f3digo de barras
-label.bydates=Por fechas
-label.byform=Por formulario
-label.byreason=Por raz\u00f3n
-label.bywarehouse=Por almac\u00e9n
-label.cardexpdate=V\u00e1lida hasta
-label.cardholder=Nombre
-label.cardnumber=Tarjeta
-Label.Cash=Caja
-Label.CashMachine=Caja registradora
-label.catid=Identificador
-label.image=Imagen
-label.catname=Categor\u00eda
-Label.ChangeCash=Cambio
-label.commerceid=Id. de comercio
-label.commercepwd=Clave de comercio
-Label.Database=Base de datos
-label.date=Fecha
-label.datestitle=Fechas de cierre
-Label.DbDriver=Manejador (clase)
-label.dbdriverlib=Manejador (librer\u00eda)
-Label.DbPassword=Clave de acceso
-Label.DbURL=Cadena de conexi\u00f3n
-Label.DbUser=Usuario
-label.dutyid=Identificador
-label.dutyname=Impuesto
-label.dutyrate=Tasa
-label.editline=Editar l\u00ednea
-Label.EndDate=Fecha de fin
-label.floorid=Identificador
-label.floorname=Planta
-Label.InputCash=Entregado
-label.item=Art\u00edculo
-Label.LoadError=Se ha producido un error al mostrar esta funcionalidad.
-label.locationaddress=Direcci\u00f3n
-label.locationid=Identificador
-label.locationname=Nombre
-Label.MachineDisplay=Visor de clientes
-label.machinedisplayconn=Modo
-label.machinedisplayport=Puerto
-Label.MachineName=Nombre
-Label.MachinePrinter=Impresora 1
-Label.MachinePrinter2=Impresora 2
-Label.MachinePrinter3=Impresora 3
-label.machineprinterport=Puerto
-Label.MachineScreen=Pantalla
-label.magcardreader=Lector de tarjetas
-label.maximum=M\u00e1ximo
-label.minimum=M\u00ednimo
-Label.Name=Nombre
-label.noticketstoclose=No hay tiquets por cerrar
-label.nullcategory=(Sin categor\u00eda)
-Label.Password=Clave
-label.passwordnew=Clave nueva
-label.passwordold=Clave antigua
-label.passwordrepeat=Repetir clave
-Label.Payment=Pagos
-label.paymentdate=Fecha
-label.paymentgateway=Pasarela de pagos
-label.paymentreason=Raz\u00f3n
-label.paymentstitle=Informe de pagos
-label.paymenttestmode=Modo pruebas
-label.paymenttotal=Total
-label.peopleimage=Imagen
-label.peoplename=Nombre
-label.peoplevisible=Visible
-label.placefloor=Planta
-label.placename=Sitio
-label.placeposition=Posici\u00f3n
-label.price=Precio
-label.pricetax=Precio + Impuestos
-label.prodaux=Auxiliar
-label.prodbarcode=C\u00f3digo de barras
-label.prodcategory=Categor\u00eda
-label.prodcost=Costo
-label.prodgeneral=General
-label.prodincatalog=En el cat\u00e1logo
-label.prodname=Nombre
-label.prodorder=Orden
-label.prodpricebuy=Precio de compra
-label.prodpricesell=Precio de venta
-label.prodpriceselltax=Precio de venta + impuesto
-label.prodproperties=Propiedades
-label.prodref=Referencia
-label.prodscale=Balanza
-label.prodstock=Inventario
-label.prodstockcost=Coste anual
-label.prodstockmax=Nivel m\u00e1ximo
-label.prodstocksec=Nivel de seguridad
-label.prodstockvol=Volumen
-label.produnits=Unidades
-label.prodvaluebuy=Valor de compra
-label.prodvaluesell=Valor de venta
-label.prodvolume=Volumen
-label.recorddeleted=(Registro eliminado)
-label.recordeof=(No hay registros)
-label.recordnew=(Registro nuevo)
-label.remainingcash=Restante
-label.resname=Recurso
-label.restaurantmove=Se est\u00e1 moviendo la mesa {0}. Seleccione otra mesa o la mesa de origen.
-label.role=Rol
-label.sales=Ventas
-label.salestitle=Informe de ventas
-label.scale=Balanza
-Label.StartDate=Fecha de inicio
-label.stockdate=Fecha
-label.stockproduct=Producto
-label.stockreason=Raz\u00f3n
-label.subtotalcash=Subtotal
-label.table=Mesa
-label.tax=Impuestos
-label.taxcash=Impuestos
-label.ticketid=Recibo
-Label.Tickets=Pagos
-Label.Ticketsbag=Recibos
-label.totalcash=Total
-label.units=Cant.
-label.user=Usuario
-label.value=Importe
-label.warehouse=Almac\u00e9n
-Menu.Backoffice=Administraci\u00f3n
-Menu.Catalog=Cat\u00e1logo
-Menu.Categories=Categorias
-Menu.ChangePassword=Cambiar clave
-Menu.ClosedProducts=Ventas de productos
-Menu.CloseTPV=Cerrar caja
-Menu.Closing=Cierres de caja
-Menu.Configuration=Configuraci\u00f3n
-Menu.ERPOrders=Sincronizar \u00f3rdenes
-Menu.ERPProducts=Sincronizar POS
-Menu.Exit=Salir
-Menu.Floors=Plantas
-Menu.Inventory=Almacenes
-Menu.Inventory2=Existencias
-Menu.InventoryBroken=Existencias bajo m\u00ednimos
-Menu.InventoryDiff=Diario de existencias
-Menu.Locations=Almacenes
-Menu.Main=Principal
-Menu.Maintenance=Mantenimiento
-Menu.Maintenance.ERP=Chromis ERP
-Menu.Maintenance.POS=Terminal de venta
-Menu.Payments=Movimientos de caja
-Menu.Printer=Impresora
-Menu.Products=Productos
-Menu.StockChanges=Stock Changes
-Menu.StockChangesReport=Stock Changes Report
-Menu.Promotions=Promotions
-Menu.PromotionsReport=Promotions Report
-
-Menu.Reports=Informes
-Menu.ReportTaxes=Impuestos
-Menu.Resources=Recursos
-Menu.Roles=Roles
-Menu.SalesChart=Gr\u00e1fico de ventas
-Menu.SalesManagement=Ventas
-Menu.SalesManagement.Reports=Informes
-Menu.StockDiary=Movimiento de existencias
-Menu.StockManagement=Inventario
-Menu.StockManagement.Edit=Mantenimiento
-Menu.StockManagement.Reports=Informes
-Menu.StockMovement=Gesti\u00f3n de inventario
-Menu.System=Sistema
-Menu.Tables=Mesas
-Menu.Taxes=Impuestos
-Menu.ThirdParties=Proveedores
-Menu.ThirdPartiesManagement=Gesti\u00f3n de proveedores
-Menu.Ticket=Ventas
-Menu.TicketEdit=Editar ventas
-Menu.TicketRefund=Devoluciones
-Menu.Users=Usuarios
-Menu.UserSells=Caja por vendedor
-message.BadPassword=La clave no es v\u00e1lida. Reint\u00e9ntelo otra vez.
-message.cannotchangepassword=No se ha podido cambiar la clave de acceso.
-message.cannotclosecash=No se puede cargar la caja.
-message.cannotdeleteconfig=No se ha podido eliminar el archivo de configuraci\u00f3n.
-message.cannotexecute=No se ha podido ejecutar la acci\u00f3n.
-message.cannotfillchart=No se han podido rellenar los datos del gr\u00e1fico.
-message.cannotfillreport=No se han podido rellenar los datos del informe.
-message.cannotloadreport=No se ha podido cargar la definici\u00f3n del informe.
-message.cannotloadreportdata=No se han podido cargar los datos del informe.
-message.cannotloadresourcedata=No se han podido cargar los recursos del informe.
-message.CannotMove=No se puede mover a otro registro.
-message.cannotprint=No se puede imprimir el recibo.
-message.cannotprintline=No se ha podido imprimir la l\u00ednea.
-message.cannotprintticket=No se ha podido imprimir el recibo.
-message.cannotsaveconfig=No se ha podido guardar el archivo de configuraci\u00f3n.
-message.changepassworddistinct=La clave de acceso repetida debe ser igual a la clave nueva.
-message.closecashok=La caja se ha cerrado con \u00e9xito.
-message.configfactory=Se restaurar\u00e1n los valores de f\u00e1brica y se perder\u00e1n los actuales. \u00bfDesea continuar?
-message.configrestore=Se restaurar\u00e1n los valores iniciales y se perder\u00e1n los cambios. \u00bfDesea continuar?
-message.createdatabase=No se ha detectado una base de datos en funcionamiento. Se creara una base de datos por defecto. \u00bfDesea continuar?
-message.databaseconnectionerror=No se puede conectar con la base de datos. Base de datos no disponible.
-message.databasedrivererror=No se puede conectar con la base de datos. Manejador no encontrado.
-message.databasenotsupported=Base de datos "{0}" no soportada.
-message.nocardreader=Lector de tarjetas no especificada.
-message.nopaymentgateway=Pasarela de pago no especificada.
-message.nosaveticket=No se ha podido guardar el recibo.
-message.notactive=Ha sucedido un error al mostrar el panel.
-message.notpermissions=No dispone de permisos para ejecutar esta tarea.
-message.paymentcashneg=Haga la devoluci\u00f3n y pulse Aceptar.
-message.paymenterror=Error en la transacci\u00f3n.
-message.paymenterrorunknown=Error desconocido en la transacci\u00f3n.
-message.paymentexceptionremote=Excepci\u00f3n remota.
-message.paymentexceptionservice=Excepci\u00f3n del servicio.
-message.paymentfree=Sin cargo.
-message.paymentgatewayext=Haga el pago con tarjeta y pulse Aceptar.
-message.paymentgatewayextrefund=Haga la devoluci\u00f3n con tarjeta y pulse Aceptar.
-message.paymentnotauthorised=Transacci\u00f3n no autorizada.
-message.paymentrefundsnotsupported=No se pueden realizar devoluciones.
-message.preparescanner=Prepare the scanner to upload the products list and press OK.
-message.restartchanges=La configuraci\u00f3n se ha guardado correctamente. Los cambios se realizar\u00e1n al reiniciar la aplicaci\u00f3n.
-message.scannerfail=Se ha producido un error al subir la lista de productos.
-message.scannerfail2=Se ha producido un error al descargar la lista de productos.
-message.scannerok=Se ha subido con \u00e9xito la lista de productos.
-message.title=Mensaje de la registradora
-message.updatedatabase=Se ha detectado una versi\u00f3n anterior de la base de datos. Se actualizar\u00e1 la base de datos autom\u00e1ticamente. SE PUEDEN PERDER DATOS. PRIMERO HAGA UNA COPIA DE SEGURIDAD. \u00bfDesea continuar?
-message.wannaclosecash=\u00bfEst\u00e1 seguro que desea cerrar la caja?
-message.wannadelete=\u00bfEst\u00e1 seguro que desea eliminar el recibo actual?
-payment.title=Pago
-Printer.Null=Impresora no disponible
-Printer.Screen=Impresora en pantalla
-Printer.Serial=Impresora de recibos
-resource.binary=Binario
-resource.image=Imagen
-resource.text=Texto
-rest.label.chairs=Sillas
-rest.label.customer=Cliente
-rest.label.date=Fecha
-rest.label.notes=Notas
-stock.in.movement=(entrada) Traspaso
-stock.in.purchase=(entrada) compra
-stock.in.refund=(entrada) devoluci\u00f3n
-stock.out.break=(salida) rotura
-stock.out.crossing=Traspaso
-stock.out.movement=(salida) Traspaso
-stock.out.refund=(salida) devoluci\u00f3n
-stock.out.sale=(salida) venta
-stock.in.openpack=(In) Open Pack
-stock.out.openpack=(Out) Open Pack
-stock.in.stockchange=(In) Stock Change
-stock.out.stockchange=(Out) Stock Change
-
-tab.cash=Efectivo
-tab.cashrefund=Devoluci\u00f3n
-tab.cheque=Cheque
-tab.chequerefund=Cheque
-tab.free=Gratis
-tab.magcard=Tarjeta
-tab.paper=Vale
-title.changepassword=Cambiar clave de acceso
-title.editor=Mensaje del editor
-transpayment.cash=Efectivo
-transpayment.cashin=(entrada) Efectivo
-transpayment.cashout=(Salida) Efectivo
-transpayment.cashrefund=Devoluci\u00f3n
-transpayment.cheque=Cheque
-transpayment.chequerefund=Devoluci\u00f3n con cheque
-transpayment.free=Sin cargo
-transpayment.magcard=Tarjeta
-transpayment.magcardrefund=Devoluci\u00f3n con tarjeta
-transpayment.paperin=Vales cobrados
-transpayment.paperout=Vales emitidos
-Visor.Title=Chromis POS
-
-message.paymentgatewayswipe=Pase la tarjeta por el lector y pulse Aceptar.
-
-message.paymentgatewaytype=Escriba los datos de la tarjeta y pulse Aceptar.
-
-message.noticket=El recibo ya no existe.
-
-Menu.ProductsWarehouse=Productos por almac\u00e9n
-Menu.ProductPacks=Product Packs
-
-message.noproduct=No existe un producto con el c\u00f3digo introducido
-
-label.type=Tipo
-
-message.tableempty=La mesa est\u00e1 ahora vac\u00eda.
-
-message.tablefull=La mesa est\u00e1 ahora vac\u00eda.
-scale.notdefined=La balanza no est\u00e1 definida.
-scale.invalidvalue=La balanza devolvi\u00f3 un valor err\u00f3neo.
-scale.weighitem=Weigh Item
-
-message.noweight=No se ha podido realizar la pesada.
-label.scaleinput=Introduzca un peso.
-label.scanner=Esc\u00e1ner
-button.scale=Balanza
-message.cannotloadticket=No se ha podido cargar el recibo.
-message.notexiststicket=El recibo no existe.
-label.locale=Localizaci\u00f3n
-label.integer=Entero
-label.double=Decimal
-label.looknfeel=Aspecto
-label.datetime=Fecha y hora
-label.currency=Moneda
-label.catimage=Imagen
-label.percent=Porcentaje
-label.placeid=Identificador
-label.time=Hora
-message.noupdatescript=Se ha detectado un versi\u00f3n anterior de la base de datos pero no es posible actualizar la base de datos autom\u00e1ticamente. chromispos POS se cerrar\u00e1 ahora.
-Menu.Customers=Clientes
-label.visible=Visible
-label.name=Nombre
-label.address=Direcci\u00f3n l\u00ednea 1
-label.notes=Notas
-Menu.CustomersManagement=Clientes
-form.customertitle=Lista de clientes
-message.nocard=Tarjeta de usuario no encontrada. Reint\u00e9ntelo otra vez...
-label.card=Tarjeta
-message.cardnew=El valor de la tarjeta va a cambiar. Desea continuar?
-message.cardremove=El valor de la tarjeta se va a eliminar. Desea continuar?
-message.nocustomer=No existe un cliente con el c\u00f3digo introducido
-message.wannasave=\u00bfDesea guardar los cambios antes de salir?
-Menu.Customers.Reports=Informes
-Menu.CustomersReport=Clientes
-Menu.CustomersBReport=Clientes morosos
-Menu.Maintenance.Reports=Informes
-Menu.UsersReport=Usuarios
-label.bycustomer=Por cliente
-label.customer=Cliente
-label.restaurantcustomer=Se est\u00e1 recibiendo al cliente {0}. Seleccione una mesa vac\u00eda.
-tab.debt=A cuenta
-label.debt=A cuenta
-transpayment.debt=A cuenta
-message.nocustomernodebt=Este recibo no est\u00e1 asignado.\nNo puede ser pagado a cuenta.
-message.cannotfindcustomer=No se han podido encontrar los datos del cliente.
-button.pay=Pagar cuenta
-Menu.CustomersPayment=Clientes
-transpayment.debtpaid=A cuenta pagados
-label.taxid=CIF / NIF
-Menu.ProductSales=Ventas de productos
-label.attributes=Atributos
-Menu.ProductLabels=Etiquetas de productos
-caption.split=Dividir recibo
-label.maxdebt=Deuda m\u00e1xima
-label.curdebt=Deuda actual
-label.curdate=Fecha de deuda
-label.searchkey=Clave de b\u00fasqueda
-label.contact=Contacto
-label.location=Direcci\u00f3n
-label.firstname=Nombre
-label.lastname=Apellidos
-label.email=E-mail
-label.phone=Tel\u00e9fono
-label.phone2=Tel\u00e9fono alt.
-label.fax=Fax
-label.address2=Direcci\u00f3n l\u00ednea 2
-label.postal=C\u00f3digo postal
-label.city=Ciudad
-label.region=Regi\u00f3n
-label.country=Pa\u00eds
-label.sequence=Secuencia
-message.customerdebtexceded=El cliente supera la deuda permitida.
-Menu.CustomersDiary=Diario de clientes
-label.reportsprinter=Impresora de informes
-label.taxcategory=Categor\u00eda de impuesto
-label.taxparent=Impuesto padre
-label.cascade=Cascada
-label.custtaxcategory=Categor\u00eda de impuesto por cliente
-Menu.TaxCustCategories=Categor\u00edas de impuestos por cliente
-Menu.TaxCategories=Categor\u00edas de impuestos
-button.clean=Restaurar
-label.order=Orden
-label.taxes=Impuestos
-Button.PrintCash=Imprimir
-form.tickettitle=Lista de recibos
-label.attribute=Atributo de producto
-label.attributeset=Conjunto de atributos
-label.certificatepath=Certificado
-label.certificatepwd=Clave del certificado
-label.commercesign=Signo de comercio
-label.javapos.drawer=Nombre del caj\u00f3n
-label.javapos.printer=Nombre de la impresora
-label.merchantcode=C\u00f3digo de comercio
-label.money=Total
-
-label.packsinstock=In stock
-label.packof= packs of
-label.packstosplit=Packs to split
-label.productinpack=Product in pack
-label.split=Split
-
-label.properties=Propiedades
-label.receiptprinter=Impresora de recibos
-label.refunds=Devoluciones
-label.search=Buscar
-label.sha=SHA
-label.storename=Nombre de tienda
-label.terminal=Terminal
-label.uploadingproducts=Subiendo productos... Por favor, espere
-Menu.Attributes=Atributos de productos
-Menu.AttributeSets=Conjunto de atributos de productos
-Menu.AttributeUse=Uso de atributos de productos
-Menu.AttributeValues=Valores de atributos
-Menu.Auxiliar=Productos auxiliares
-Menu.InventoryDiffDetail=Detalle de diario de existencias
-Menu.InventoryListDetail=Detalle de existencias
-Menu.InventoryReOrder=Inventory: Re-Order
-message.cannotcalculatetaxes=No se han podido calcular los impuestos.\nLos impuestos de uno o m\u00e1s productos del recibo no est\u00e1n correctamente definidos.\n
-message.cannotfindattributes=Este producto no tiene atributos.
-message.cannotloadlists=No se han podido cargar las listas de datos.
-message.cannotsaveinventorydata=No se ha podido guardar los datos de inventario.
-message.mergetable=Uni\u00f3n de mesas
-message.mergetablequestion=\u00bfEst\u00e1 seguro que quiere unir las mesas?
-message.productnotselected=No se ha seleccionado el producto.
-form.selectprintertitle=Seleccionar impresora
-message.printererror=No se ha podido imprimir el recibo.
-message.stockchangesactioned=Stock Changes Actioned
-
-message.noprinters=No hay impresoras instaladas en el sistema.
-label.all=Todos
-label.byproduct=Por producto
diff --git a/locales/Argentinian/reports/uk/chromis/reports/people_messages_es_AR.properties b/locales/Argentinian/people_messages_es_AR.properties
similarity index 89%
rename from locales/Argentinian/reports/uk/chromis/reports/people_messages_es_AR.properties
rename to locales/Argentinian/people_messages_es_AR.properties
index 0f0643af..d9d22e05 100644
--- a/locales/Argentinian/reports/uk/chromis/reports/people_messages_es_AR.properties
+++ b/locales/Argentinian/people_messages_es_AR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Argentinian/reports/uk/chromis/reports/productlabels_messages_es_AR.properties b/locales/Argentinian/productlabels_messages_es_AR.properties
similarity index 89%
rename from locales/Argentinian/reports/uk/chromis/reports/productlabels_messages_es_AR.properties
rename to locales/Argentinian/productlabels_messages_es_AR.properties
index 53601b75..f48ededd 100644
--- a/locales/Argentinian/reports/uk/chromis/reports/productlabels_messages_es_AR.properties
+++ b/locales/Argentinian/productlabels_messages_es_AR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Argentinian/reports/uk/chromis/reports/products_messages_es_AR.properties b/locales/Argentinian/products_messages_es_AR.properties
similarity index 91%
rename from locales/Argentinian/reports/uk/chromis/reports/products_messages_es_AR.properties
rename to locales/Argentinian/products_messages_es_AR.properties
index a30df6d0..c63a46a0 100644
--- a/locales/Argentinian/reports/uk/chromis/reports/products_messages_es_AR.properties
+++ b/locales/Argentinian/products_messages_es_AR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Argentinian/reports/uk/chromis/reports/productsales_messages_es_AR.properties b/locales/Argentinian/productsales_messages_es_AR.properties
similarity index 90%
rename from locales/Argentinian/reports/uk/chromis/reports/productsales_messages_es_AR.properties
rename to locales/Argentinian/productsales_messages_es_AR.properties
index 65ad4cf1..eb731239 100644
--- a/locales/Argentinian/reports/uk/chromis/reports/productsales_messages_es_AR.properties
+++ b/locales/Argentinian/productsales_messages_es_AR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Argentinian/reports/uk/chromis/reports/productscatalog_messages_es_AR.properties b/locales/Argentinian/productscatalog_messages_es_AR.properties
similarity index 90%
rename from locales/Argentinian/reports/uk/chromis/reports/productscatalog_messages_es_AR.properties
rename to locales/Argentinian/productscatalog_messages_es_AR.properties
index c6e6f0fb..e30bfb44 100644
--- a/locales/Argentinian/reports/uk/chromis/reports/productscatalog_messages_es_AR.properties
+++ b/locales/Argentinian/productscatalog_messages_es_AR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Argentinian/reports/uk/chromis/reports/taxes_messages_es_AR.properties b/locales/Argentinian/taxes_messages_es_AR.properties
similarity index 90%
rename from locales/Argentinian/reports/uk/chromis/reports/taxes_messages_es_AR.properties
rename to locales/Argentinian/taxes_messages_es_AR.properties
index 9568ff85..f2122e8a 100644
--- a/locales/Argentinian/reports/uk/chromis/reports/taxes_messages_es_AR.properties
+++ b/locales/Argentinian/taxes_messages_es_AR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Argentinian/reports/uk/chromis/reports/usersales_messages_es_AR.properties b/locales/Argentinian/usersales_messages_es_AR.properties
similarity index 90%
rename from locales/Argentinian/reports/uk/chromis/reports/usersales_messages_es_AR.properties
rename to locales/Argentinian/usersales_messages_es_AR.properties
index 4467edc3..535e63fd 100644
--- a/locales/Argentinian/reports/uk/chromis/reports/usersales_messages_es_AR.properties
+++ b/locales/Argentinian/usersales_messages_es_AR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Brazilian/locales/beans_messages_pt_BR.properties b/locales/Brazilian/locales/beans_messages_pt_BR.properties
deleted file mode 100644
index 7dcbe726..00000000
--- a/locales/Brazilian/locales/beans_messages_pt_BR.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-Button.Today=Hoje
-button.ok=OK
-button.cancel=Cancelar
-title.calendar=Selecione uma data
-button.Today=Hoje
diff --git a/locales/Brazilian/locales/data_messages_pt_BR.properties b/locales/Brazilian/locales/data_messages_pt_BR.properties
deleted file mode 100644
index 6efd9729..00000000
--- a/locales/Brazilian/locales/data_messages_pt_BR.properties
+++ /dev/null
@@ -1,79 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-exception.noupdatecount=N\u00famero de modifica\u00e7\u00f5es n\u00e3o definido.
-exception.nodataset=Conjunto de dados n\u00e3o definido.
-exception.nonegativelimits=N\u00e3o se permite limites negativos.
-exception.outofbounds=Fora dos limites.
-exception.noreadfile=Erro lendo arquivo de senten\u00e7as.
-exception.nofinishedfile=Arquivo de senten\u00e7as n\u00e3o finalizado.
-exception.notnull=Valor n\u00e3o pode ser nulo.
-exception.noparamtype=Tipo de par\u00e2metro n\u00e3o permitido.
-qbf.none=Nenhum
-qbf.null=\u00c9 nulo
-qbf.notnull=N\u00e3o \u00e9 nulo
-qbf.equals=Iguais
-qbf.distinct=Distinto
-qbf.greater=Maior
-qbf.less=Menor
-qbf.greaterequals=Maior ou igual
-qbf.lessequals=Menor ou igual
-label.findwhat=Procurando o qu\u00ea
-label.where=Onde
-label.match=Entrontado
-label.casesensitive=Diferenciar mai\u00fascula e min\u00fascula
-button.ok=OK
-button.cancel=Cancela
-title.find=Procura
-list.startfield=Campo inicial
-list.wholefield=Todo campo
-list.anypart=Qualquer parte do campo
-list.re=Express\u00e3o regular
-title.message=Mensagem do gerenciador de banco de dados
-button.information=informa\u00e7\u00e3o
-message.norecord=Registro n\u00e3o encontrado.
-message.nolistdata=N\u00e3o encontrado na lista de dados.
-message.noreload=N\u00e3o foi recarregada a lista de dados.
-message.nomove=N\u00e3o pode mover para outro registro.
-message.nosave=Registro n\u00e3o salvo.
-message.nodelete=N\u00e3o pode marcar o registro para dele\u00e7\u00e3o.
-message.nonew=N\u00e3o pode criar um novo registro.
-sgn.danger=Perigo\:
-sgn.warning=Aten\u00e7\u00e3o\:
-sgn.caution=Cuidado:
-sgn.notice=Aviso\:
-sgn.important=Importante\:
-sgn.success=Successo\:
-sgn.unknown=Desconhecido\:
-exception.nocompare=Se espera um comparador para QBF.
-exception.nodelete=Nenhum registro deletado.
-exception.noupdate=Nenhum registro atualizado.
-exception.noinsert=Nenhum registro criado.
-message.changeslost=As mudan\u00e7as ser\u00e3o perdidas. Deseja continuar?
-title.editor=Mensagem do editor
-message.wannasave=Voc\u00ea deseja salvar as modifica\u00e7\u00f5es antes de sair?
-label.imagefiles=Arquivos de imagem
-message.resizeimage=A imagem selecionada \u00e9 maior do que o tamanho deste campo. Voc\u00ea deseja redimensionar a imagem ?
-qbf.re=Express\u00e3o regular
-label.sortby=Ordenar por
-label.andby=E por
-message.nosort=A condi\u00e7\u00e3o de ordena\u00e7\u00e3o definida n\u00e3o \u00e9 valida
-caption.sort=Ordena\u00e7\u00e3o
-exception.xmlfile=Error XML
-exception.parserconfig=Error
-exception.iofile=Erro
diff --git a/locales/Brazilian/locales/erp_messages_pt_BR.properties b/locales/Brazilian/locales/erp_messages_pt_BR.properties
deleted file mode 100644
index 86de340a..00000000
--- a/locales/Brazilian/locales/erp_messages_pt_BR.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.configerp=Configura o ERP
-label.erpurl=URL dos servi\u00e7os
-label.erpid=C\u00f3digo entidade
-label.erporg=C\u00f3digo organiza\u00e7\u00e3o
-label.erppos=C\u00f3digo POS
-label.erpuser=Usu\u00e1rio
-label.erppassword=Senha
-message.urlnotdefined=URL do servi\u00e7o de sincroniza\u00e7\u00e3o n\u00e3o foi definida.
-message.syncordersok=Sucesso na sicroniza\u00e7\u00e3o de ordens.
-message.syncordersinfo={0} ordens sicronizada(s).
-message.syncproductsok=Sucesso na sincroniza\u00e7\u00e3o de produtos.
-message.syncproductsinfo={0} produtos sincronizado(s).
-message.remoteexception=Erro de Comunica\u00e7\u00e3o.
-message.serviceexception=N\u00e3o foi poss\u00edvel conectar ao servi\u00e7o.
-message.malformedurlexception=A URL do servi\u00e7o est\u00e1 errada.
-message.returnnull=Par\u00e2metros de sincroniza\u00e7\u00e3o est\u00e3o errados.
-message.zeroproducts=N\u00e3o existem produtos para sincronizar.
-message.zeroorders=N\u00e3o existem ordens a sincronizar.
-message.propsnotdefined=As propriedades de sincroniza\u00e7\u00e3o no arquivo de configura\u00e7\u00e3o "chromispos.properties" n\u00e3o foram definidas.
\ No newline at end of file
diff --git a/locales/Brazilian/locales/pos_messages_pt_BR.properties b/locales/Brazilian/locales/pos_messages_pt_BR.properties
deleted file mode 100644
index 38a92979..00000000
--- a/locales/Brazilian/locales/pos_messages_pt_BR.properties
+++ /dev/null
@@ -1,379 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-Button.Cancel=Cancelar
-button.catalogadd=Adicionar ao cat\u00e1logo
-button.catalogdel=Remover do cat\u00e1logo
-Button.Close=Fechar
-Button.CloseCash=Fechar o caixa
-Button.DeleteTicket=Deletar
-button.edit=Editar
-Button.ExecuteChart=Executar o gr\u00e1fico
-button.executefilter=Executar o filtro
-Button.ExecuteReport=Executar o relat\u00f3rio
-Button.Factory=Valores de f\u00e1brica
-button.listtickets=Lista
-button.movetable=Mover
-Button.NewTicket=Novo
-Button.OK=OK
-button.opendrawer=Abrir gaveta
-button.peoplepassword=Senha
-button.print=Imprimir
-button.receive=Receber
-button.refund=Estornar
-button.refundall=Estornar tudo
-button.refundline=Estornar linha
-button.refundone=Estornar um
-button.reloadticket=Recarregar
-button.reservations=Reservas
-button.reset=Reiniciar
-Button.Restore=Restaurar
-Button.Save=Salvar
-button.tables=Mesas
-caption.tickets=Cupons
-caption.upload=Atualizar lista de produtos
-Database.ScriptError=N\u00e3o foi poss\u00edvel executar o script de cria\u00e7\u00e3o do banco de dados.
-Database.ScriptWarning=Script de cria\u00e7\u00e3o n\u00e3o executou com sucesso.
-Display.Null=Tela n\u00e3o dispon\u00edvel
-Display.Screen=Tela de display
-Display.Window=Janela
-exception.unavailabledataset=Banco de dados n\u00e3o dispon\u00edvel
-exception.unavailablefield=Campo n\u00e3o definido\: {0}
-exception.unavailablefields=Campos n\u00e3o definidos
-filter.dbdriverlib=Biblioteca de driver (*.jar,*.zip)
-form.productslist=Lista de produtos
-label.bybarcode=Por c\u00f3digo de barra
-label.bydates=Por datas
-label.byform=Por formul\u00e1rio
-label.byreason=Por raz\u00e3o
-label.bywarehouse=Por dep\u00f3sito
-label.cardexpdate=Data exp.
-label.cardholder=Nome do propriet\u00e1rio
-label.cardnumber=N\u00famero cart\u00e3o
-Label.Cash=Dinheiro
-Label.CashMachine=Caixa registradora
-label.catid=ID
-label.image=Imagem
-label.catname=Categoria
-Label.ChangeCash=Troco
-label.commerceid=Identifica\u00e7\u00e3o comercial
-label.commercepwd=Senha comercial
-Label.Database=Banco de dados
-label.date=Data
-label.datestitle=Datas do caixa
-Label.DbDriver=Classe do driver
-label.dbdriverlib=Biblioteca de Driver
-Label.DbPassword=Senha
-Label.DbURL=URL
-Label.DbUser=Usu\u00e1rio
-label.dutyid=ID
-label.dutyname=Nome do imposto
-label.dutyrate=Taxa
-label.editline=Edita linha
-Label.EndDate=Data final
-label.floorid=ID
-label.floorname=Piso
-Label.InputCash=Entrada
-label.item=Item
-Label.LoadError=Error ao tentar mostrar esta funcionalidade.
-label.locationaddress=Endere\u00e7o
-label.locationid=ID
-label.locationname=Nome
-Label.MachineDisplay=Tela do cliente
-label.machinedisplayconn=Modo
-label.machinedisplayport=Porta
-Label.MachineName=Nome
-Label.MachinePrinter=Impressora
-Label.MachinePrinter2=Impressora 2
-Label.MachinePrinter3=Impressora 3
-label.machineprinterport=Porta
-Label.MachineScreen=Tela
-label.magcardreader=Leitor de cart\u00e3o magn\u00e9tico
-label.maximum=M\u00e1ximo
-label.minimum=M\u00ednimo
-Label.Name=Nome
-label.noticketstoclose=Sem cobran\u00e7as a fechar
-label.nullcategory=(Sem categoria)
-Label.Password=Senha
-label.passwordnew=Nova senha
-label.passwordold=Senha antiga
-label.passwordrepeat=Repita a senha
-Label.Payment=Pagamento
-label.paymentdate=Data
-label.paymentgateway=Gateway de pagamento
-label.paymentreason=Motivo
-label.paymentstitle=Relat\u00f3rios de pagamento
-label.paymenttestmode=Modo de teste
-label.paymenttotal=Total
-label.peopleimage=Imagem
-label.peoplename=Nome
-label.peoplevisible=Vis\u00edvel
-label.placefloor=Piso
-label.placename=Local
-label.placeposition=Posi\u00e7\u00e3o
-label.price=Pre\u00e7o
-label.pricetax=Pre\u00e7o + Impostos
-label.prodaux=Auxiliar
-label.prodbarcode=C\u00f3digo de barras
-label.prodcategory=Categoria
-label.prodcost=Custo
-label.prodgeneral=Geral
-label.prodincatalog=Em cat\u00e1logo
-label.prodname=Nome
-label.prodorder=Ordem
-label.prodpricebuy=Pre\u00e7o de compra
-label.prodpricesell=Pre\u00e7o de venda
-label.prodpriceselltax=Pre\u00e7o de venda + Impostos
-label.prodproperties=Propriedades
-label.prodref=Refer\u00eancia
-label.prodscale=Balan\u00e7a
-label.prodstock=Estoque
-label.prodstockcost=Custo de estoque por ano
-label.prodstockmax=N\u00edvel m\u00e1ximo
-label.prodstocksec=N\u00edvel de seguran\u00e7a
-label.prodstockvol=Volume de estoque
-label.prodtax=Imposto
-label.produnits=Unidades
-label.prodvaluebuy=Pre\u00e7o de compra
-label.prodvaluesell=Pre\u00e7o de venda
-label.prodvolume=Volume
-label.recorddeleted=(Registro eliminado)
-label.recordeof=(Nenhum registro)
-label.recordnew=(Registro novo)
-label.remainingcash=Restando
-label.resname=Recurso
-label.restaurantmove=Movendo mesa {0}. Selecione uma mesa vazia ou a mesa de origem.
-label.role=Regra
-label.sales=Vendas
-label.salestitle=Relat\u00f3rio de Vendas
-label.scale=Balan\u00e7a
-label.scanner=Leitor
-Label.StartDate=Data inicial
-label.stockdate=Data
-label.stockproduct=Produto
-label.stockreason=Motivo
-label.subtotalcash=Sub-total
-label.table=Mesa
-label.tax=Impostos
-label.taxcash=Impostos
-label.ticketid=Cupom
-Label.Tickets=Pagamentos
-Label.Ticketsbag=Cupons
-label.totalcash=Total
-label.units=Unidades
-label.user=Usu\u00e1rio
-label.value=Valor
-label.warehouse=Dep\u00f3sito
-Menu.Backoffice=Administra\u00e7\u00e3o
-Menu.Catalog=Cat\u00e1logo
-Menu.Categories=Categorias
-Menu.ChangePassword=Troca de senha
-Menu.ClosedProducts=Vendas de produtos
-Menu.CloseTPV=Fechar o caixa
-Menu.Closing=Caixa fechado
-Menu.Configuration=Configura\u00e7\u00e3o
-Menu.ERPOrders=Sincroniza\u00e7\u00e3o de Ordens
-Menu.ERPProducts=Sincroniza\u00e7\u00e3o de Produtos
-Menu.Exit=Sa\u00edda
-Menu.Floors=Pisos
-Menu.Inventory=Dep\u00f3sitos
-Menu.Inventory2=Invent\u00f3rio corrente
-Menu.InventoryBroken=Quebra do invnet\u00e1rio corrente
-Menu.InventoryDiff=Invent\u00e1rio di\u00e1rio
-Menu.Locations=Dep\u00f3sitos
-Menu.Main=Principal
-Menu.Maintenance=manuten\u00e7\u00e3o
-Menu.Maintenance.ERP=Chromis ERP
-Menu.Maintenance.POS=Ponto de venda
-Menu.Payments=Pagamentos
-Menu.Printer=impressora
-Menu.Products=Produtos
-Menu.StockChanges=Stock Changes
-Menu.StockChangesReport=Stock Changes Report
-Menu.Promotions=Promotions
-Menu.PromotionsReport=Promotions Report
-
-Menu.Reports=Relat\u00f3rios
-Menu.ReportTaxes=Impostos
-Menu.Resources=Recursos
-Menu.Roles=Regras
-Menu.SalesChart=Gr\u00e1fico de vendas
-Menu.SalesManagement=Vendas
-Menu.SalesManagement.Reports=Relat\u00f3rios
-Menu.StockDiary=Di\u00e1rio de estoque
-Menu.StockManagement=Estoque
-Menu.StockManagement.Edit=Manuten\u00e7\u00e3o
-Menu.StockManagement.Reports=Relat\u00f3rios
-Menu.StockMovement=Manuten\u00e7\u00e3o de estoque
-Menu.System=Sistema
-Menu.Tables=Tabelas
-Menu.Taxes=Impostos
-Menu.ThirdParties=Fornecedores
-Menu.ThirdPartiesManagement=Gerenciamento de Fornecedores
-Menu.Ticket=Vendas
-Menu.TicketEdit=Editar vendas
-Menu.TicketRefund=Estorno
-Menu.Users=Usu\u00e1rios
-Menu.UserSells=Caixa por usu\u00e1rio
-message.BadPassword=Senha inv\u00e1lida. Tente novamente.
-message.cannotchangepassword=Senha n\u00e3o alterada.
-message.cannotclosecash=N\u00e3o foi poss\u00edvel fechar o caixa.
-message.cannotdeleteconfig=Arquivo de configura\u00e7\u00e3o n\u00e3o pode ser deletado.
-message.cannotexecute=A\u00e7\u00e3o n\u00e3o pode ser executada.
-message.cannotfillchart=N\u00e3o foi poss\u00edvel preencher o gr\u00e1fico com dados.
-message.cannotfillreport=N\u00e3o foi poss\u00edvel completar o relat\u00f3rio de dados.
-message.cannotloadreport=N\u00e3o foi poss\u00edvel carregar o relat\u00f3rio.
-message.cannotloadreportdata=N\u00e3o foi poss\u00edvel carregar os dados do relat\u00f3rio.
-message.cannotloadresourcedata=N\u00e3o foi poss\u00edvel carregar recursos do relat\u00f3rio.
-message.CannotMove=N\u00e3o foi poss\u00edvel mover para outro registro.
-message.cannotprint=N\u00e3o foi poss\u00edvel imprimir o recibo.
-message.cannotprintline=N\u00e3o foi poss\u00edvel imprimir a linha.
-message.cannotprintticket=N\u00e3o foi poss\u00edvel imprimir a conta.
-message.cannotsaveconfig=N\u00e3o foi poss\u00edvel salvar o arquivo de configura\u00e7\u00e3o.
-message.changepassworddistinct=A senha deve ser igual a nova senha.
-message.closecashok=O caixa foi fechado com sucesso.
-message.configfactory=Valores de f\u00e1brica ser\u00e3o restaurados e os valores correntes ser\u00e3o perdidos. Deseja continuar?
-message.configrestore=Valores iniciais ser\u00e3o restaurados e as modifica\u00e7\u00f5es ser\u00e3o perdidas. Deseja continuar?
-message.createdatabase=O banco de dados de trabalho n\u00e3o pode ser detectado. Um banco de dados padr\u00e3o ser\u00e1 criado. Deseja continuar ?
-message.databaseconnectionerror=N\u00e3o \u00e9 poss\u00edvel conectar ao banco de dados. Banco de dados n\u00e3o dispon\u00edvel.
-message.databasedrivererror=N\u00e3o \u00e9 poss\u00edvel conectar ao banco de dados. Driver do banco de dados n\u00e3o encontrado
-message.databasenotsupported=Database "{0}" n\u00e3o suportado.
-message.nocardreader=Leitor de cart\u00e3o n\u00e3o definido.
-message.nopaymentgateway=Gateway de pagamento n\u00e3o definido.
-message.nosaveticket=N\u00e3o foi poss\u00edvel salvar o cupom .
-message.notactive=Um erro surgiu ao carregar o painel.
-message.notpermissions=Voc\u00ea n\u00e3o tem autoriza\u00e7\u00e3o para executar esta tarefa.
-message.paymentcashneg=Fa\u00e7a o estorno e pressione OK.
-message.paymenterror=Erro na transa\u00e7\u00e3o.
-message.paymenterrorunknown=Erro na transa\u00e7\u00e3o desconhecido.
-message.paymentexceptionremote=Exce\u00e7\u00e3o remota lan\u00e7ada (Remote).
-message.paymentexceptionservice=Exce\u00e7\u00e3o de servi\u00e7o lan\u00e7ada (Service).
-message.paymentfree=Cortesia.
-message.paymentgatewayext=Fa\u00e7a o pagamento com o cart\u00e3o e pressione OK.
-message.paymentgatewayextrefund=Fa\u00e7a o estorno do cart\u00e3o e pressione OK.
-message.paymentnotauthorised=Transa\u00e7\u00e3o n\u00e3o autorizada.
-message.paymentrefundsnotsupported=Estorno n\u00e3o suportados.
-message.preparescanner=Prepare o ScanPal para dar carga na lista de produtos e pressione OK.
-message.restartchanges=A configura\u00e7\u00e3o foi salva com sucesso. Modifica\u00e7\u00f5es ter\u00e3o efeito quando a aplica\u00e7\u00e3o reiniciar.
-message.scannerfail=Envio da lista de produto falhou.
-message.scannerfail2=Recebimento da lista de produto falhou.
-message.scannerok=A lista de produtos foi enviada com sucesso.
-message.title=Mensagem de registro de caixa
-message.updatedatabase=Um banco de dados de uma vers\u00e3o pr\u00e9via foi encontrado. O banco de dados foi atualizado automaticamente. DADOS PODEM SER PERDIDOS. CRIE PRIMEIRAMENTE UMA C\u00d2PIA DE SEGURAN\u00c7A. Deseja continuar?
-message.wannaclosecash=Voc\u00ea esta certo de que deseja fechar o caixa?
-message.wannadelete=Voc\u00ea tem certeza de que deseja eliminar o recebimento corrente?
-payment.title=Pagamento
-Printer.Null=Impressora n\u00e3o dispon\u00edvel
-Printer.Screen=Tela da impressora
-Printer.Serial=Impressora de Cupom
-resource.binary=Bin\u00e1rio
-resource.image=Imagem
-resource.text=Texto
-rest.label.chairs=Cadeiras
-rest.label.customer=Clientes
-rest.label.date=Data
-rest.label.notes=Notas
-stock.in.movement=(entrada) Movimento
-stock.in.purchase=(entrada) compra
-stock.in.refund=(entrada) estorno
-stock.out.break=(saida) quebra
-stock.out.crossing=Cruzando
-stock.out.movement=(saida) Movimento
-stock.out.refund=(saida) estorno
-stock.out.sale=(saida) venda
-stock.in.openpack=(In) Open Pack
-stock.out.openpack=(Out) Open Pack
-stock.in.stockchange=(In) Stock Change
-stock.out.stockchange=(Out) Stock Change
-
-tab.cash=Dinheiro
-tab.cashrefund=Estorno
-tab.cheque=Cheque
-tab.chequerefund=Cheque
-tab.free=Livre
-tab.magcard=Cart\u00e3o
-tab.paper=Nota
-tab.ticket=Cupom
-title.changepassword=Troca senha
-title.editor=Mensagem do editor
-transpayment.cash=Dinheiro
-transpayment.cashin=(entrada) Dinheiro
-transpayment.cashout=(saida) Dinheiro
-transpayment.cashrefund=Estorno
-transpayment.cheque=Cheque
-transpayment.chequerefund=Estorno Cheque
-transpayment.free=Cortesia
-transpayment.magcard=Cart\u00e3o
-transpayment.magcardrefund=Estorno cart\u00e3o
-transpayment.paperin=Nota entrada
-transpayment.paperout=Nota sa\u00edda
-transpayment.ticket=Cupom
-Visor.Title=Chromis POS
-message.paymentgatewayswipe=Passe o cart\u00e3o e pressione OK.
-message.paymentgatewaytype=Digite os detalhes do cart\u00e3o e pressione OK.
-label.placeid=ID
-message.noticket=O recebimento n\u00e3o existe mais.
-Menu.ProductsWarehouse=Produtos por dep\u00f3sito
-Menu.ProductPacks=Product Packs
-
-message.noproduct=N\u00e3o existe produto com este c\u00f3digo
-label.type=Tipo
-message.tableempty=A mesa agora est\u00e1 vazia.
-message.tablefull=A mesa agora est\u00e1 ocupada.
-label.locale=Local
-label.looknfeel=Apar\u00eancia
-button.scale=Balan\u00e7a
-label.integer=Inteiro
-label.double=Ponto flutuante
-label.currency=Moeda
-label.percent=Percentual
-label.time=Hora
-label.datetime=Data hora
-scale.notdefined=Balan\u00e7a n\u00e3o definida
-scale.invalidvalue=Balan\u00e7a n\u00e3o definida
-scale.weighitem=Weigh Item
-
-message.noweight=N\u00e3o foi poss\u00edvel obter o peso.
-label.scaleinput=Entre com o peso.
-message.cannotloadticket=N\u00e3o foi poss\u00edvel carregar o recebimento.
-message.notexiststicket=O recebimento n\u00e3o existe.
-label.catimage=Imagem
-message.noupdatescript=Um banco de dados de vers\u00e3o anterior foi encontrado e n\u00e3o \u00e9 poss\u00edvel atualiza-lo automaticamente. Chromis POS ser\u00e1 desativado agora.
-label.visible=Vis\u00edvel
-label.name=Nome
-label.address=Endere\u00e7o
-label.notes=Notas
-Menu.Customers=Clientes
-Menu.CustomersManagement=Clientes
-form.customertitle=Lista de clientes
-button.clean=Limpe
-button.Discount=Desconto
-button.discount=Desconto
-button.discountticket=Desconto
-button.ExecuteChart=Executar o gr\u00e1fico
-button.NewTicket=Novo
-button.linediscount=% Desconto
-button.pay=Pague conta
-Button.PrintCash=Imprimir
-button.refundit=Estornar
-button.sendorder=Cozinha
-button.setperson=Gar\u00e7om
-button.totaldiscount=Rabatt
-caption.split=Divida recibo
-database.ScriptError=N\u00e3o pode executar o manuscrito de cria\u00e7\u00e3o de base de dados.
-database.ScriptWarning=Manuscrito de cria\u00e7\u00e3o n\u00e3o correu com \u00eaxito.
diff --git a/locales/Croatian/Slike kuna/_vti_cnf/1000kn.jpg b/locales/Croatian/Slike kuna/_vti_cnf/1000kn.jpg
deleted file mode 100644
index a064caf7..00000000
--- a/locales/Croatian/Slike kuna/_vti_cnf/1000kn.jpg
+++ /dev/null
@@ -1,9 +0,0 @@
-vti_encoding:SR|utf8-nl
-vti_timelastmodified:TR|16 May 2012 05:25:04 -0000
-vti_extenderversion:SR|12.0.0.0
-vti_author:SR|OFFICE\\jack
-vti_modifiedby:SR|OFFICE\\jack
-vti_timecreated:TR|16 May 2012 05:25:04 -0000
-vti_cacheddtm:TX|16 May 2012 05:25:04 -0000
-vti_filesize:IR|6654
-vti_backlinkinfo:VX|
diff --git a/locales/Croatian/Slike kuna/_vti_cnf/100kn.jpg b/locales/Croatian/Slike kuna/_vti_cnf/100kn.jpg
deleted file mode 100644
index 9b24eec7..00000000
--- a/locales/Croatian/Slike kuna/_vti_cnf/100kn.jpg
+++ /dev/null
@@ -1,9 +0,0 @@
-vti_encoding:SR|utf8-nl
-vti_timelastmodified:TR|16 May 2012 05:25:04 -0000
-vti_extenderversion:SR|12.0.0.0
-vti_author:SR|OFFICE\\jack
-vti_modifiedby:SR|OFFICE\\jack
-vti_timecreated:TR|16 May 2012 05:25:04 -0000
-vti_cacheddtm:TX|16 May 2012 05:25:04 -0000
-vti_filesize:IR|10285
-vti_backlinkinfo:VX|
diff --git a/locales/Croatian/Slike kuna/_vti_cnf/10kn.jpg b/locales/Croatian/Slike kuna/_vti_cnf/10kn.jpg
deleted file mode 100644
index 01babc59..00000000
--- a/locales/Croatian/Slike kuna/_vti_cnf/10kn.jpg
+++ /dev/null
@@ -1,9 +0,0 @@
-vti_encoding:SR|utf8-nl
-vti_timelastmodified:TR|16 May 2012 05:25:04 -0000
-vti_extenderversion:SR|12.0.0.0
-vti_author:SR|OFFICE\\jack
-vti_modifiedby:SR|OFFICE\\jack
-vti_timecreated:TR|16 May 2012 05:25:04 -0000
-vti_cacheddtm:TX|16 May 2012 05:25:04 -0000
-vti_filesize:IR|9680
-vti_backlinkinfo:VX|
diff --git a/locales/Croatian/Slike kuna/_vti_cnf/10lipacoin.jpg b/locales/Croatian/Slike kuna/_vti_cnf/10lipacoin.jpg
deleted file mode 100644
index 18634f52..00000000
--- a/locales/Croatian/Slike kuna/_vti_cnf/10lipacoin.jpg
+++ /dev/null
@@ -1,9 +0,0 @@
-vti_encoding:SR|utf8-nl
-vti_timelastmodified:TR|16 May 2012 05:25:04 -0000
-vti_extenderversion:SR|12.0.0.0
-vti_author:SR|OFFICE\\jack
-vti_modifiedby:SR|OFFICE\\jack
-vti_timecreated:TR|16 May 2012 05:25:04 -0000
-vti_cacheddtm:TX|16 May 2012 05:25:04 -0000
-vti_filesize:IR|1324
-vti_backlinkinfo:VX|
diff --git a/locales/Croatian/Slike kuna/_vti_cnf/1kunacoin.jpg b/locales/Croatian/Slike kuna/_vti_cnf/1kunacoin.jpg
deleted file mode 100644
index 11d0a7cc..00000000
--- a/locales/Croatian/Slike kuna/_vti_cnf/1kunacoin.jpg
+++ /dev/null
@@ -1,9 +0,0 @@
-vti_encoding:SR|utf8-nl
-vti_timelastmodified:TR|16 May 2012 05:25:04 -0000
-vti_extenderversion:SR|12.0.0.0
-vti_author:SR|OFFICE\\jack
-vti_modifiedby:SR|OFFICE\\jack
-vti_timecreated:TR|16 May 2012 05:25:04 -0000
-vti_cacheddtm:TX|16 May 2012 05:25:04 -0000
-vti_filesize:IR|1403
-vti_backlinkinfo:VX|
diff --git a/locales/Croatian/Slike kuna/_vti_cnf/1lipacoin.jpg b/locales/Croatian/Slike kuna/_vti_cnf/1lipacoin.jpg
deleted file mode 100644
index 3d1d6090..00000000
--- a/locales/Croatian/Slike kuna/_vti_cnf/1lipacoin.jpg
+++ /dev/null
@@ -1,9 +0,0 @@
-vti_encoding:SR|utf8-nl
-vti_timelastmodified:TR|16 May 2012 05:25:04 -0000
-vti_extenderversion:SR|12.0.0.0
-vti_author:SR|OFFICE\\jack
-vti_modifiedby:SR|OFFICE\\jack
-vti_timecreated:TR|16 May 2012 05:25:04 -0000
-vti_cacheddtm:TX|16 May 2012 05:25:04 -0000
-vti_filesize:IR|877
-vti_backlinkinfo:VX|
diff --git a/locales/Croatian/Slike kuna/_vti_cnf/200kn.jpg b/locales/Croatian/Slike kuna/_vti_cnf/200kn.jpg
deleted file mode 100644
index 98dc5d99..00000000
--- a/locales/Croatian/Slike kuna/_vti_cnf/200kn.jpg
+++ /dev/null
@@ -1,9 +0,0 @@
-vti_encoding:SR|utf8-nl
-vti_timelastmodified:TR|16 May 2012 05:25:04 -0000
-vti_extenderversion:SR|12.0.0.0
-vti_author:SR|OFFICE\\jack
-vti_modifiedby:SR|OFFICE\\jack
-vti_timecreated:TR|16 May 2012 05:25:04 -0000
-vti_cacheddtm:TX|16 May 2012 05:25:04 -0000
-vti_filesize:IR|9353
-vti_backlinkinfo:VX|
diff --git a/locales/Croatian/Slike kuna/_vti_cnf/20kn.jpg b/locales/Croatian/Slike kuna/_vti_cnf/20kn.jpg
deleted file mode 100644
index e302afc5..00000000
--- a/locales/Croatian/Slike kuna/_vti_cnf/20kn.jpg
+++ /dev/null
@@ -1,9 +0,0 @@
-vti_encoding:SR|utf8-nl
-vti_timelastmodified:TR|16 May 2012 05:25:04 -0000
-vti_extenderversion:SR|12.0.0.0
-vti_author:SR|OFFICE\\jack
-vti_modifiedby:SR|OFFICE\\jack
-vti_timecreated:TR|16 May 2012 05:25:04 -0000
-vti_cacheddtm:TX|16 May 2012 05:25:04 -0000
-vti_filesize:IR|6242
-vti_backlinkinfo:VX|
diff --git a/locales/Croatian/Slike kuna/_vti_cnf/20lipacoin.jpg b/locales/Croatian/Slike kuna/_vti_cnf/20lipacoin.jpg
deleted file mode 100644
index f1d3f4a6..00000000
--- a/locales/Croatian/Slike kuna/_vti_cnf/20lipacoin.jpg
+++ /dev/null
@@ -1,9 +0,0 @@
-vti_encoding:SR|utf8-nl
-vti_timelastmodified:TR|16 May 2012 05:25:04 -0000
-vti_extenderversion:SR|12.0.0.0
-vti_author:SR|OFFICE\\jack
-vti_modifiedby:SR|OFFICE\\jack
-vti_timecreated:TR|16 May 2012 05:25:04 -0000
-vti_cacheddtm:TX|16 May 2012 05:25:04 -0000
-vti_filesize:IR|1058
-vti_backlinkinfo:VX|
diff --git a/locales/Croatian/Slike kuna/_vti_cnf/25kunacoin.jpg b/locales/Croatian/Slike kuna/_vti_cnf/25kunacoin.jpg
deleted file mode 100644
index 91a7a438..00000000
--- a/locales/Croatian/Slike kuna/_vti_cnf/25kunacoin.jpg
+++ /dev/null
@@ -1,9 +0,0 @@
-vti_encoding:SR|utf8-nl
-vti_timelastmodified:TR|16 May 2012 05:25:04 -0000
-vti_extenderversion:SR|12.0.0.0
-vti_author:SR|OFFICE\\jack
-vti_modifiedby:SR|OFFICE\\jack
-vti_timecreated:TR|16 May 2012 05:25:04 -0000
-vti_cacheddtm:TX|16 May 2012 05:25:04 -0000
-vti_filesize:IR|2226
-vti_backlinkinfo:VX|
diff --git a/locales/Croatian/Slike kuna/_vti_cnf/2kunacoin.jpg b/locales/Croatian/Slike kuna/_vti_cnf/2kunacoin.jpg
deleted file mode 100644
index 6534a9a6..00000000
--- a/locales/Croatian/Slike kuna/_vti_cnf/2kunacoin.jpg
+++ /dev/null
@@ -1,9 +0,0 @@
-vti_encoding:SR|utf8-nl
-vti_timelastmodified:TR|16 May 2012 05:25:04 -0000
-vti_extenderversion:SR|12.0.0.0
-vti_author:SR|OFFICE\\jack
-vti_modifiedby:SR|OFFICE\\jack
-vti_timecreated:TR|16 May 2012 05:25:04 -0000
-vti_cacheddtm:TX|16 May 2012 05:25:04 -0000
-vti_filesize:IR|1423
-vti_backlinkinfo:VX|
diff --git a/locales/Croatian/Slike kuna/_vti_cnf/2lipacoin.jpg b/locales/Croatian/Slike kuna/_vti_cnf/2lipacoin.jpg
deleted file mode 100644
index 5f8bbbaf..00000000
--- a/locales/Croatian/Slike kuna/_vti_cnf/2lipacoin.jpg
+++ /dev/null
@@ -1,9 +0,0 @@
-vti_encoding:SR|utf8-nl
-vti_timelastmodified:TR|16 May 2012 05:25:05 -0000
-vti_extenderversion:SR|12.0.0.0
-vti_author:SR|OFFICE\\jack
-vti_modifiedby:SR|OFFICE\\jack
-vti_timecreated:TR|16 May 2012 05:25:05 -0000
-vti_cacheddtm:TX|16 May 2012 05:25:05 -0000
-vti_filesize:IR|1156
-vti_backlinkinfo:VX|
diff --git a/locales/Croatian/Slike kuna/_vti_cnf/500kn.jpg b/locales/Croatian/Slike kuna/_vti_cnf/500kn.jpg
deleted file mode 100644
index 05b314e5..00000000
--- a/locales/Croatian/Slike kuna/_vti_cnf/500kn.jpg
+++ /dev/null
@@ -1,9 +0,0 @@
-vti_encoding:SR|utf8-nl
-vti_timelastmodified:TR|16 May 2012 05:25:05 -0000
-vti_extenderversion:SR|12.0.0.0
-vti_author:SR|OFFICE\\jack
-vti_modifiedby:SR|OFFICE\\jack
-vti_timecreated:TR|16 May 2012 05:25:05 -0000
-vti_cacheddtm:TX|16 May 2012 05:25:05 -0000
-vti_filesize:IR|5636
-vti_backlinkinfo:VX|
diff --git a/locales/Croatian/Slike kuna/_vti_cnf/50kn.jpg b/locales/Croatian/Slike kuna/_vti_cnf/50kn.jpg
deleted file mode 100644
index f3cb798e..00000000
--- a/locales/Croatian/Slike kuna/_vti_cnf/50kn.jpg
+++ /dev/null
@@ -1,9 +0,0 @@
-vti_encoding:SR|utf8-nl
-vti_timelastmodified:TR|16 May 2012 05:25:05 -0000
-vti_extenderversion:SR|12.0.0.0
-vti_author:SR|OFFICE\\jack
-vti_modifiedby:SR|OFFICE\\jack
-vti_timecreated:TR|16 May 2012 05:25:05 -0000
-vti_cacheddtm:TX|16 May 2012 05:25:05 -0000
-vti_filesize:IR|6109
-vti_backlinkinfo:VX|
diff --git a/locales/Croatian/Slike kuna/_vti_cnf/50lipacoin.jpg b/locales/Croatian/Slike kuna/_vti_cnf/50lipacoin.jpg
deleted file mode 100644
index e477857c..00000000
--- a/locales/Croatian/Slike kuna/_vti_cnf/50lipacoin.jpg
+++ /dev/null
@@ -1,9 +0,0 @@
-vti_encoding:SR|utf8-nl
-vti_timelastmodified:TR|16 May 2012 05:25:05 -0000
-vti_extenderversion:SR|12.0.0.0
-vti_author:SR|OFFICE\\jack
-vti_modifiedby:SR|OFFICE\\jack
-vti_timecreated:TR|16 May 2012 05:25:05 -0000
-vti_cacheddtm:TX|16 May 2012 05:25:05 -0000
-vti_filesize:IR|1174
-vti_backlinkinfo:VX|
diff --git a/locales/Croatian/Slike kuna/_vti_cnf/5kunacoin.jpg b/locales/Croatian/Slike kuna/_vti_cnf/5kunacoin.jpg
deleted file mode 100644
index 799a672e..00000000
--- a/locales/Croatian/Slike kuna/_vti_cnf/5kunacoin.jpg
+++ /dev/null
@@ -1,9 +0,0 @@
-vti_encoding:SR|utf8-nl
-vti_timelastmodified:TR|16 May 2012 05:25:05 -0000
-vti_extenderversion:SR|12.0.0.0
-vti_author:SR|OFFICE\\jack
-vti_modifiedby:SR|OFFICE\\jack
-vti_timecreated:TR|16 May 2012 05:25:05 -0000
-vti_cacheddtm:TX|16 May 2012 05:25:05 -0000
-vti_filesize:IR|1618
-vti_backlinkinfo:VX|
diff --git a/locales/Croatian/Slike kuna/_vti_cnf/5lipacoin.jpg b/locales/Croatian/Slike kuna/_vti_cnf/5lipacoin.jpg
deleted file mode 100644
index e672213d..00000000
--- a/locales/Croatian/Slike kuna/_vti_cnf/5lipacoin.jpg
+++ /dev/null
@@ -1,9 +0,0 @@
-vti_encoding:SR|utf8-nl
-vti_timelastmodified:TR|16 May 2012 05:25:05 -0000
-vti_extenderversion:SR|12.0.0.0
-vti_author:SR|OFFICE\\jack
-vti_modifiedby:SR|OFFICE\\jack
-vti_timecreated:TR|16 May 2012 05:25:05 -0000
-vti_cacheddtm:TX|16 May 2012 05:25:05 -0000
-vti_filesize:IR|1177
-vti_backlinkinfo:VX|
diff --git a/locales/Croatian/reports/uk/chromis/reports/cashflow_messages_hr.properties b/locales/Croatian/cashflow_messages_hr.properties
similarity index 93%
rename from locales/Croatian/reports/uk/chromis/reports/cashflow_messages_hr.properties
rename to locales/Croatian/cashflow_messages_hr.properties
index 94f1f925..d71d81a9 100644
--- a/locales/Croatian/reports/uk/chromis/reports/cashflow_messages_hr.properties
+++ b/locales/Croatian/cashflow_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/cashregisterlog_messages_hr.properties b/locales/Croatian/cashregisterlog_messages_hr.properties
similarity index 94%
rename from locales/Croatian/reports/uk/chromis/reports/cashregisterlog_messages_hr.properties
rename to locales/Croatian/cashregisterlog_messages_hr.properties
index 62ee7c7a..cd3cb540 100644
--- a/locales/Croatian/reports/uk/chromis/reports/cashregisterlog_messages_hr.properties
+++ b/locales/Croatian/cashregisterlog_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/categorysales_messages_hr.properties b/locales/Croatian/categorysales_messages_hr.properties
similarity index 91%
rename from locales/Croatian/reports/uk/chromis/reports/categorysales_messages_hr.properties
rename to locales/Croatian/categorysales_messages_hr.properties
index c4e64677..fa35f704 100644
--- a/locales/Croatian/reports/uk/chromis/reports/categorysales_messages_hr.properties
+++ b/locales/Croatian/categorysales_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/chartsales_messages_hr.properties b/locales/Croatian/chartsales_messages_hr.properties
similarity index 90%
rename from locales/Croatian/reports/uk/chromis/reports/chartsales_messages_hr.properties
rename to locales/Croatian/chartsales_messages_hr.properties
index 48340009..f3e89b6f 100644
--- a/locales/Croatian/reports/uk/chromis/reports/chartsales_messages_hr.properties
+++ b/locales/Croatian/chartsales_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/closedpos_messages_hr.properties b/locales/Croatian/closedpos_messages_hr.properties
similarity index 93%
rename from locales/Croatian/reports/uk/chromis/reports/closedpos_messages_hr.properties
rename to locales/Croatian/closedpos_messages_hr.properties
index e550e256..bf490abc 100644
--- a/locales/Croatian/reports/uk/chromis/reports/closedpos_messages_hr.properties
+++ b/locales/Croatian/closedpos_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -17,43 +17,25 @@
# along with Chromis POS. If not, see .
label.title=Zatvoreni ra\u010duni
-
label.closedate=Datumi zatvaranja
-
label.partialtotal=Ukupno
-
label.total=Ukupno
-
label.partialtax=Porez
-
label.partialsubtotal=Zbroj
-
label.tax=Porez
-
label.subtotal=Zbroj
-
+transpayment.bank=Banka
transpayment.cash=Gotovina
-
transpayment.magcard=Kartica
-
transpayment.cashrefund=Povrat
-
transpayment.magcardrefund=Povrat kartice
-
transpayment.cheque=\u010cek
-
transpayment.chequerefund=Povrat \u010deka
-
transpayment.cashin=(ulaz) gotovina
-
transpayment.cashout=(izlaz) gotovina
-
transpayment.free=Besplatno
-
transpayment.ticket=Ra\u010dun
-
transpayment.paperin=Bilje\u0161ka ulaza
-
transpayment.paperout=Bilje\u0161ka izlaza
transpayment.debt=Dug
transpayment.debtpaid=Dug pla\u0107en
diff --git a/locales/Croatian/reports/uk/chromis/reports/closedproducts_messages_hr.properties b/locales/Croatian/closedproducts_messages_hr.properties
similarity index 91%
rename from locales/Croatian/reports/uk/chromis/reports/closedproducts_messages_hr.properties
rename to locales/Croatian/closedproducts_messages_hr.properties
index a7da4d0d..e7607b1a 100644
--- a/locales/Croatian/reports/uk/chromis/reports/closedproducts_messages_hr.properties
+++ b/locales/Croatian/closedproducts_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/customers_messages_hr.properties b/locales/Croatian/customers_messages_hr.properties
similarity index 88%
rename from locales/Croatian/reports/uk/chromis/reports/customers_messages_hr.properties
rename to locales/Croatian/customers_messages_hr.properties
index 5cfaea49..c4c24e2a 100644
--- a/locales/Croatian/reports/uk/chromis/reports/customers_messages_hr.properties
+++ b/locales/Croatian/customers_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -23,3 +23,4 @@ label.curdebt=Trenutni dug
label.curdate=Datum duga
label.notes=Bilje\u009ake
label.taxid=Klijent
+label.discount=Discount
\ No newline at end of file
diff --git a/locales/Croatian/reports/uk/chromis/reports/customersdiary_messages_hr.properties b/locales/Croatian/customersdiary_messages_hr.properties
similarity index 90%
rename from locales/Croatian/reports/uk/chromis/reports/customersdiary_messages_hr.properties
rename to locales/Croatian/customersdiary_messages_hr.properties
index 5b2fdfee..1d141276 100644
--- a/locales/Croatian/reports/uk/chromis/reports/customersdiary_messages_hr.properties
+++ b/locales/Croatian/customersdiary_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/extendedcashregisterlog_messages_hr.properties b/locales/Croatian/extendedcashregisterlog_messages_hr.properties
similarity index 94%
rename from locales/Croatian/reports/uk/chromis/reports/extendedcashregisterlog_messages_hr.properties
rename to locales/Croatian/extendedcashregisterlog_messages_hr.properties
index bf28feea..4cadfa14 100644
--- a/locales/Croatian/reports/uk/chromis/reports/extendedcashregisterlog_messages_hr.properties
+++ b/locales/Croatian/extendedcashregisterlog_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/extproducts_messages_hr.properties b/locales/Croatian/extproducts_messages_hr.properties
similarity index 92%
rename from locales/Croatian/reports/uk/chromis/reports/extproducts_messages_hr.properties
rename to locales/Croatian/extproducts_messages_hr.properties
index 15328c1c..6adb34de 100644
--- a/locales/Croatian/reports/uk/chromis/reports/extproducts_messages_hr.properties
+++ b/locales/Croatian/extproducts_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/inventory_messages_hr.properties b/locales/Croatian/inventory_messages_hr.properties
similarity index 91%
rename from locales/Croatian/reports/uk/chromis/reports/inventory_messages_hr.properties
rename to locales/Croatian/inventory_messages_hr.properties
index 67ef74b7..0e551bc7 100644
--- a/locales/Croatian/reports/uk/chromis/reports/inventory_messages_hr.properties
+++ b/locales/Croatian/inventory_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/inventoryb_messages_hr.properties b/locales/Croatian/inventoryb_messages_hr.properties
similarity index 90%
rename from locales/Croatian/reports/uk/chromis/reports/inventoryb_messages_hr.properties
rename to locales/Croatian/inventoryb_messages_hr.properties
index 9f4c767d..29afb3b7 100644
--- a/locales/Croatian/reports/uk/chromis/reports/inventoryb_messages_hr.properties
+++ b/locales/Croatian/inventoryb_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/inventorydiff_messages_hr.properties b/locales/Croatian/inventorydiff_messages_hr.properties
similarity index 91%
rename from locales/Croatian/reports/uk/chromis/reports/inventorydiff_messages_hr.properties
rename to locales/Croatian/inventorydiff_messages_hr.properties
index c3823c10..f1b2e219 100644
--- a/locales/Croatian/reports/uk/chromis/reports/inventorydiff_messages_hr.properties
+++ b/locales/Croatian/inventorydiff_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/inventorydiffdetail_messages_hr.properties b/locales/Croatian/inventorydiffdetail_messages_hr.properties
similarity index 91%
rename from locales/Croatian/reports/uk/chromis/reports/inventorydiffdetail_messages_hr.properties
rename to locales/Croatian/inventorydiffdetail_messages_hr.properties
index f7123384..ec0baf22 100644
--- a/locales/Croatian/reports/uk/chromis/reports/inventorydiffdetail_messages_hr.properties
+++ b/locales/Croatian/inventorydiffdetail_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/inventorylistdetail_messages_hr.properties b/locales/Croatian/inventorylistdetail_messages_hr.properties
similarity index 90%
rename from locales/Croatian/reports/uk/chromis/reports/inventorylistdetail_messages_hr.properties
rename to locales/Croatian/inventorylistdetail_messages_hr.properties
index 6619e9bc..46b3df3e 100644
--- a/locales/Croatian/reports/uk/chromis/reports/inventorylistdetail_messages_hr.properties
+++ b/locales/Croatian/inventorylistdetail_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/paymentreport_messages_hr.properties b/locales/Croatian/paymentreport_messages_hr.properties
similarity index 91%
rename from locales/Croatian/reports/uk/chromis/reports/paymentreport_messages_hr.properties
rename to locales/Croatian/paymentreport_messages_hr.properties
index 53ccc3db..6009083a 100644
--- a/locales/Croatian/reports/uk/chromis/reports/paymentreport_messages_hr.properties
+++ b/locales/Croatian/paymentreport_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/people_messages_hr.properties b/locales/Croatian/people_messages_hr.properties
similarity index 89%
rename from locales/Croatian/reports/uk/chromis/reports/people_messages_hr.properties
rename to locales/Croatian/people_messages_hr.properties
index 8f267fff..19a613c7 100644
--- a/locales/Croatian/reports/uk/chromis/reports/people_messages_hr.properties
+++ b/locales/Croatian/people_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/piesalescat_message_hr.properties b/locales/Croatian/piesalescat_message_hr.properties
similarity index 91%
rename from locales/Croatian/reports/uk/chromis/reports/piesalescat_message_hr.properties
rename to locales/Croatian/piesalescat_message_hr.properties
index 10f2d421..89a52702 100644
--- a/locales/Croatian/reports/uk/chromis/reports/piesalescat_message_hr.properties
+++ b/locales/Croatian/piesalescat_message_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/piesalescat_messages_hr.properties b/locales/Croatian/piesalescat_messages_hr.properties
similarity index 91%
rename from locales/Croatian/reports/uk/chromis/reports/piesalescat_messages_hr.properties
rename to locales/Croatian/piesalescat_messages_hr.properties
index 10f2d421..89a52702 100644
--- a/locales/Croatian/reports/uk/chromis/reports/piesalescat_messages_hr.properties
+++ b/locales/Croatian/piesalescat_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/productlabels_messages_hr.properties b/locales/Croatian/productlabels_messages_hr.properties
similarity index 89%
rename from locales/Croatian/reports/uk/chromis/reports/productlabels_messages_hr.properties
rename to locales/Croatian/productlabels_messages_hr.properties
index eef88983..cb409dbf 100644
--- a/locales/Croatian/reports/uk/chromis/reports/productlabels_messages_hr.properties
+++ b/locales/Croatian/productlabels_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/products_messages_hr.properties b/locales/Croatian/products_messages_hr.properties
similarity index 91%
rename from locales/Croatian/reports/uk/chromis/reports/products_messages_hr.properties
rename to locales/Croatian/products_messages_hr.properties
index 3d89917a..21ac745c 100644
--- a/locales/Croatian/reports/uk/chromis/reports/products_messages_hr.properties
+++ b/locales/Croatian/products_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/productsales_messages_hr.properties b/locales/Croatian/productsales_messages_hr.properties
similarity index 90%
rename from locales/Croatian/reports/uk/chromis/reports/productsales_messages_hr.properties
rename to locales/Croatian/productsales_messages_hr.properties
index 4eb6e886..f59136ea 100644
--- a/locales/Croatian/reports/uk/chromis/reports/productsales_messages_hr.properties
+++ b/locales/Croatian/productsales_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/productsalesprofit_messages_hr.properties b/locales/Croatian/productsalesprofit_messages_hr.properties
similarity index 92%
rename from locales/Croatian/reports/uk/chromis/reports/productsalesprofit_messages_hr.properties
rename to locales/Croatian/productsalesprofit_messages_hr.properties
index 674ed27b..545cc3ae 100644
--- a/locales/Croatian/reports/uk/chromis/reports/productsalesprofit_messages_hr.properties
+++ b/locales/Croatian/productsalesprofit_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/productscatalog_messages_hr.properties b/locales/Croatian/productscatalog_messages_hr.properties
similarity index 91%
rename from locales/Croatian/reports/uk/chromis/reports/productscatalog_messages_hr.properties
rename to locales/Croatian/productscatalog_messages_hr.properties
index c70a1c1d..2562260a 100644
--- a/locales/Croatian/reports/uk/chromis/reports/productscatalog_messages_hr.properties
+++ b/locales/Croatian/productscatalog_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/salebycustomer_messages_hr.properties b/locales/Croatian/salebycustomer_messages_hr.properties
similarity index 91%
rename from locales/Croatian/reports/uk/chromis/reports/salebycustomer_messages_hr.properties
rename to locales/Croatian/salebycustomer_messages_hr.properties
index 7dd915b5..1f4adc73 100644
--- a/locales/Croatian/reports/uk/chromis/reports/salebycustomer_messages_hr.properties
+++ b/locales/Croatian/salebycustomer_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/salecatalog_messages_hr.properties b/locales/Croatian/salecatalog_messages_hr.properties
similarity index 89%
rename from locales/Croatian/reports/uk/chromis/reports/salecatalog_messages_hr.properties
rename to locales/Croatian/salecatalog_messages_hr.properties
index d397ea39..20c559d7 100644
--- a/locales/Croatian/reports/uk/chromis/reports/salecatalog_messages_hr.properties
+++ b/locales/Croatian/salecatalog_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/saletaxes_messages_hr.properties b/locales/Croatian/saletaxes_messages_hr.properties
similarity index 91%
rename from locales/Croatian/reports/uk/chromis/reports/saletaxes_messages_hr.properties
rename to locales/Croatian/saletaxes_messages_hr.properties
index eb36fe8d..c745d1bd 100644
--- a/locales/Croatian/reports/uk/chromis/reports/saletaxes_messages_hr.properties
+++ b/locales/Croatian/saletaxes_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/taxcatsales_message_hr.properties b/locales/Croatian/taxcatsales_message_hr.properties
similarity index 90%
rename from locales/Croatian/reports/uk/chromis/reports/taxcatsales_message_hr.properties
rename to locales/Croatian/taxcatsales_message_hr.properties
index 23e4ff22..2f80df10 100644
--- a/locales/Croatian/reports/uk/chromis/reports/taxcatsales_message_hr.properties
+++ b/locales/Croatian/taxcatsales_message_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/taxes_messages_hr.properties b/locales/Croatian/taxes_messages_hr.properties
similarity index 91%
rename from locales/Croatian/reports/uk/chromis/reports/taxes_messages_hr.properties
rename to locales/Croatian/taxes_messages_hr.properties
index f4cdf27c..e49a28a5 100644
--- a/locales/Croatian/reports/uk/chromis/reports/taxes_messages_hr.properties
+++ b/locales/Croatian/taxes_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/timeseriesproduct_messages_hr.properties b/locales/Croatian/timeseriesproduct_messages_hr.properties
similarity index 92%
rename from locales/Croatian/reports/uk/chromis/reports/timeseriesproduct_messages_hr.properties
rename to locales/Croatian/timeseriesproduct_messages_hr.properties
index baceb939..1fc42c0f 100644
--- a/locales/Croatian/reports/uk/chromis/reports/timeseriesproduct_messages_hr.properties
+++ b/locales/Croatian/timeseriesproduct_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/top10sales_messages_hr.properties b/locales/Croatian/top10sales_messages_hr.properties
similarity index 90%
rename from locales/Croatian/reports/uk/chromis/reports/top10sales_messages_hr.properties
rename to locales/Croatian/top10sales_messages_hr.properties
index ae7fb1cb..fafcf857 100644
--- a/locales/Croatian/reports/uk/chromis/reports/top10sales_messages_hr.properties
+++ b/locales/Croatian/top10sales_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Croatian/reports/uk/chromis/reports/usersales_messages_hr.properties b/locales/Croatian/usersales_messages_hr.properties
similarity index 91%
rename from locales/Croatian/reports/uk/chromis/reports/usersales_messages_hr.properties
rename to locales/Croatian/usersales_messages_hr.properties
index fd43b592..9bc7f380 100644
--- a/locales/Croatian/reports/uk/chromis/reports/usersales_messages_hr.properties
+++ b/locales/Croatian/usersales_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Dutch/reports/uk/chromis/reports/chartsales_messages_nl.properties b/locales/Dutch/chartsales_messages_nl.properties
similarity index 90%
rename from locales/Dutch/reports/uk/chromis/reports/chartsales_messages_nl.properties
rename to locales/Dutch/chartsales_messages_nl.properties
index d109e7b9..fa8de917 100644
--- a/locales/Dutch/reports/uk/chromis/reports/chartsales_messages_nl.properties
+++ b/locales/Dutch/chartsales_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Dutch/reports/uk/chromis/reports/closedpos_messages_nl.properties b/locales/Dutch/closedpos_messages_nl.properties
similarity index 93%
rename from locales/Dutch/reports/uk/chromis/reports/closedpos_messages_nl.properties
rename to locales/Dutch/closedpos_messages_nl.properties
index 800d69e5..cd6b1a41 100644
--- a/locales/Dutch/reports/uk/chromis/reports/closedpos_messages_nl.properties
+++ b/locales/Dutch/closedpos_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -18,41 +18,24 @@
label.title=Kassa gesloten
-
label.closedate=Datum gesloten
-
label.partialtotal=Totaal
-
label.total=Totaal
-
label.partialtax=BTW
-
label.partialsubtotal=Subtotaal
-
label.tax=BTW
-
label.subtotal=Subtotaal
-
+transpayment.bank=Bank
transpayment.cash=Contant
-
transpayment.magcard=PIN
-
transpayment.magcardrefund=Betaalkaart teruggaaf
-
transpayment.cheque=Cheque
-
transpayment.chequerefund=Cheque teruggaaf
-
transpayment.cashin=(In) Contant
-
transpayment.cashout=(Uit) Contant
-
transpayment.free=Gratis
-
transpayment.ticket=Kortingsbon
-
transpayment.paperin=(In) Waardebon
-
transpayment.paperout=(Uit) Waardebon
transpayment.cashrefund=Teruggave
transpayment.debt=Krediet
diff --git a/locales/Dutch/reports/uk/chromis/reports/closedproducts_messages_nl.properties b/locales/Dutch/closedproducts_messages_nl.properties
similarity index 91%
rename from locales/Dutch/reports/uk/chromis/reports/closedproducts_messages_nl.properties
rename to locales/Dutch/closedproducts_messages_nl.properties
index f005ec06..20184aa3 100644
--- a/locales/Dutch/reports/uk/chromis/reports/closedproducts_messages_nl.properties
+++ b/locales/Dutch/closedproducts_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Dutch/reports/uk/chromis/reports/customers_messages_nl.properties b/locales/Dutch/customers_messages_nl.properties
similarity index 89%
rename from locales/Dutch/reports/uk/chromis/reports/customers_messages_nl.properties
rename to locales/Dutch/customers_messages_nl.properties
index e9819c8f..db71cd2e 100644
--- a/locales/Dutch/reports/uk/chromis/reports/customers_messages_nl.properties
+++ b/locales/Dutch/customers_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -23,3 +23,4 @@ label.curdate=Datum krediet
label.notes=Nota
label.taxid=BTW ID
label.printed=Afgedrukte
+label.discount=Discount
\ No newline at end of file
diff --git a/locales/Dutch/reports/uk/chromis/reports/customersdiary_messages_nl.properties b/locales/Dutch/customersdiary_messages_nl.properties
similarity index 90%
rename from locales/Dutch/reports/uk/chromis/reports/customersdiary_messages_nl.properties
rename to locales/Dutch/customersdiary_messages_nl.properties
index 411fc8f9..96931e5d 100644
--- a/locales/Dutch/reports/uk/chromis/reports/customersdiary_messages_nl.properties
+++ b/locales/Dutch/customersdiary_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Dutch/reports/uk/chromis/reports/inventory_messages_nl.properties b/locales/Dutch/inventory_messages_nl.properties
similarity index 91%
rename from locales/Dutch/reports/uk/chromis/reports/inventory_messages_nl.properties
rename to locales/Dutch/inventory_messages_nl.properties
index bc3ceac5..cbaf00cf 100644
--- a/locales/Dutch/reports/uk/chromis/reports/inventory_messages_nl.properties
+++ b/locales/Dutch/inventory_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Dutch/reports/uk/chromis/reports/inventoryb_messages_nl.properties b/locales/Dutch/inventoryb_messages_nl.properties
similarity index 90%
rename from locales/Dutch/reports/uk/chromis/reports/inventoryb_messages_nl.properties
rename to locales/Dutch/inventoryb_messages_nl.properties
index ba11d4cb..a4fd0c2c 100644
--- a/locales/Dutch/reports/uk/chromis/reports/inventoryb_messages_nl.properties
+++ b/locales/Dutch/inventoryb_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Dutch/reports/uk/chromis/reports/inventorydiff_messages_nl.properties b/locales/Dutch/inventorydiff_messages_nl.properties
similarity index 91%
rename from locales/Dutch/reports/uk/chromis/reports/inventorydiff_messages_nl.properties
rename to locales/Dutch/inventorydiff_messages_nl.properties
index fb088a5e..98ddd077 100644
--- a/locales/Dutch/reports/uk/chromis/reports/inventorydiff_messages_nl.properties
+++ b/locales/Dutch/inventorydiff_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Dutch/reports/uk/chromis/reports/inventorydiffdetail_messages_nl.properties b/locales/Dutch/inventorydiffdetail_messages_nl.properties
similarity index 91%
rename from locales/Dutch/reports/uk/chromis/reports/inventorydiffdetail_messages_nl.properties
rename to locales/Dutch/inventorydiffdetail_messages_nl.properties
index 79b16472..27f4b7dd 100644
--- a/locales/Dutch/reports/uk/chromis/reports/inventorydiffdetail_messages_nl.properties
+++ b/locales/Dutch/inventorydiffdetail_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Dutch/reports/uk/chromis/reports/inventorylistdetail_messages_nl.properties b/locales/Dutch/inventorylistdetail_messages_nl.properties
similarity index 90%
rename from locales/Dutch/reports/uk/chromis/reports/inventorylistdetail_messages_nl.properties
rename to locales/Dutch/inventorylistdetail_messages_nl.properties
index 2533e214..51f728ed 100644
--- a/locales/Dutch/reports/uk/chromis/reports/inventorylistdetail_messages_nl.properties
+++ b/locales/Dutch/inventorylistdetail_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Dutch/locales/beans_messages_nl.properties b/locales/Dutch/locales/beans_messages_nl.properties
deleted file mode 100644
index a34ec785..00000000
--- a/locales/Dutch/locales/beans_messages_nl.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-
-Button.Today=Vandaag
-
-button.ok=OK
-
-button.cancel=Annuleren
-
-title.calendar=Selecteer een datum
-button.Today=Vandaag
\ No newline at end of file
diff --git a/locales/Dutch/locales/data_messages_nl.properties b/locales/Dutch/locales/data_messages_nl.properties
deleted file mode 100644
index 58981f07..00000000
--- a/locales/Dutch/locales/data_messages_nl.properties
+++ /dev/null
@@ -1,130 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-exception.noupdatecount=Update teller niet gedefinieerd.
-
-exception.nodataset=Data set niet gedefinieerd.
-
-exception.nonegativelimits=Negatieve limieten niet toegestaan.
-
-exception.outofbounds=Grens overschreden.
-
-exception.noreadfile=Kan bestand met zinnen niet lezen.
-
-exception.nofinishedfile=Bestand met zinnen niet afgesloten.
-
-exception.notnull=Deze waarde mag niet leeg zijn.
-
-exception.noparamtype=Parameter type is niet toegestaan.
-
-qbf.none=Geen
-
-qbf.null=Is leeg
-
-qbf.notnull=Is niet leeg
-
-qbf.equals=Is gelijk
-
-qbf.distinct=Verschild
-
-qbf.greater=Groter
-
-qbf.less=Kleiner
-
-qbf.greaterequals=Groter of gelijk
-
-qbf.lessequals=Kleiner of gelijk
-label.findwhat=Zoeken
-label.where=Waar
-label.match=Vergelijk
-label.casesensitive=Hoofdletter gevoelig
-button.ok=OK
-button.cancel=Annuleren
-
-title.find=Zoeken
-
-list.startfield=Begin van het veld
-
-list.wholefield=Volledig veld
-
-list.anypart=Elk deel van het veld
-
-list.re=Regelmatige expressie
-title.message=Database manager bericht
-button.information=Informatie
-
-message.norecord=Record niet gevonden.
-
-message.nolistdata=Kan niet gevonden worden in de datalijst.
-
-message.noreload=Kan datalijst niet herladen.
-
-message.nomove=Kan niet verplaatsen naar ander record.
-
-message.nosave=Record niet bewaard.
-
-message.nodelete=Kan record niet selecteren voor verwijdering.
-
-message.nonew=Kan geen nieuw record aanmaken.
-
-sgn.danger=Gevaar:
-
-sgn.warning=Waarschuwing:
-
-sgn.caution=Opgelet:
-
-sgn.notice=Bericht:
-
-sgn.important=Belangijk:
-
-sgn.success=Succes:
-
-sgn.unknown=Onbekend:
-
-exception.nocompare=Vergelijkingsvoorwaarde verwacht voor QBF.
-
-exception.nodelete=geen records verwijderd.
-
-exception.noupdate=Geen records bijgewerkt.
-
-exception.noinsert=Geen records aangemaakt.
-
-message.changeslost=De veranderingen zullen verloren gaan. Wilt u doorgaan?
-
-title.editor=Editor bericht
-
-message.wannasave=Wilt u de veranderingen bewaren alvorens af te sluiten?
-
-label.imagefiles=Afbeeldingen
-
-message.resizeimage=De gekozen afbeelding is groter dan de gestelde afmeting voor dit veld. Wilt u de afbeelding verkleinen?
-
-qbf.re=Regelmatige expressie
-
-label.sortby=Sorteren op
-
-label.andby=En op
-
-message.nosort=Ongeldige sorteervoorwaarde
-
-caption.sort=Sorteren
-
-exception.parserconfig= XML Analysatie fout. Neem contact op met de administrator.
-exception.xmlfile= Analysateie fout. Ongeldig XML bestand.
-exception.iofile= Fout tijdens het lezen van de bestand.
\ No newline at end of file
diff --git a/locales/Dutch/locales/erp_messages_nl.properties b/locales/Dutch/locales/erp_messages_nl.properties
deleted file mode 100644
index 2a08d194..00000000
--- a/locales/Dutch/locales/erp_messages_nl.properties
+++ /dev/null
@@ -1,57 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-
-label.configerp=ERP configuatie
-
-label.erpurl=URL service
-
-label.erpid=Identiteit code\t
-
-label.erporg=Organisatie code
-
-label.erppos=POS code
-
-label.erpuser=Gebruiker
-
-label.erppassword=Paswoord
-
-message.urlnotdefined=Synchronisatie URL service is niet gedefinieerd
-
-message.syncordersok=Syncronisatie van de orders is succesvol.
-
-message.syncordersinfo={0} orders gesyncroniseerd.
-
-message.syncproductsok=De data syncronisatie is succesvol.
-
-message.syncproductsinfo={0} producten gesyncroniseerd.\n{1} klanten gesyncroniseerd.
-
-message.remoteexception=Communicatiefout.
-
-message.serviceexception=Kan niet verbinden met de service.
-
-message.malformedurlexception=The URL service is fout.
-
-message.returnnull=De syncronisatieparameters zijn fout.
-
-message.zeroproducts=Er zijn geen gegevens om te syncroniseren.
-
-message.zeroorders=Er zijn geen orders om te syncroniseren.
-
-message.propsnotdefined=De bron van de syncronisatie eigenschappen "chromis.properties" is niet gedefineerd.
\ No newline at end of file
diff --git a/locales/Dutch/locales/pos_messages_nl.properties b/locales/Dutch/locales/pos_messages_nl.properties
deleted file mode 100644
index 1025266c..00000000
--- a/locales/Dutch/locales/pos_messages_nl.properties
+++ /dev/null
@@ -1,505 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-Button.Cancel=Cancel
-button.catalogadd=Add
-button.catalogdel=Remove
-button.clean=Reset
-Button.Close=Exit
-Button.CloseCash=Close Cash
-Button.DeleteTicket=Delete
-button.Discount=Discount
-button.edit=Edit
-button.ExecuteChart=Execute Chart
-button.executefilter=Run Filter
-Button.ExecuteReport=Run Report
-Button.Factory=Restore
-button.linediscount=Disc' %
-button.listtickets=List
-button.movetable=Move
-button.NewTicket=New
-Button.OK=OK
-button.opendrawer=Open kassa
-button.pay=Betaal rekening
-button.peoplepassword=Wachtwoord
-button.print=Afdrukken
-Button.PrintCash=Print
-button.receive=Ontvangen
-button.refund=Teruggaaf
-button.refundall=Alles terug geven
-button.refundline=Regel teruggeven
-button.refundone=Een artikel teruggeven
-button.reloadticket=Herlaad
-button.reservations=Reserveringen
-button.reset=Herstel
-Button.Restore=Herstellen
-Button.Save=Bewaren
-button.scale=Weegschaal
-button.sendorder=Kitchen
-button.tables=Tafels
-button.totaldiscount=Total Disc'
-
-caption.split=Bon Splitsen
-caption.tickets=Bonnen
-caption.upload=Producten lijst laden
-
-Database.ScriptError=Fout\: database kan niet worden aangemaakt. Het database installatiescript kan niet worden uitgevoerd.
-Database.ScriptWarning=Waarschuwing\: Het database installatiescript is niet succesvol be\u00ebindigd.
-
-Display.Null=Scherm niet beschikbaar
-Display.Screen=Scherm
-Display.Window=Scherm
-
-exception.unavailabledataset=Dataset niet beschikbaar
-exception.unavailablefield=Veld niet gedefinieerd\: {0}
-exception.unavailablefields=velden niet beschikbaar
-
-filter.dbdriverlib=Stuurprogramma archief (*.jar,*.zip)
-
-form.customertitle=Klantenlijst
-form.productslist=Producten lijst
-form.selectprintertitle=Kies printer
-form.tickettitle=Rekeningen lijst
-
-label.address=Adres (lijn 1)
-label.address2=Adres
-label.all=Alles
-label.attribute=Product attributen
-label.attributes=Eigenschappen
-label.attributeset=Attributen set
-label.bybarcode=Per barcode
-label.bycustomer=Per klant
-label.bydates=Per datum
-label.byform=Per fomulier
-label.byproduct=Op product
-label.byreason=Per reden
-label.bywarehouse=Per magazijn
-label.card=Kaart
-label.cardexpdate=Verval datum
-label.cardholder=Naam houder
-label.cardnumber=Kaart nummer
-label.cascade=Cascade(lijn 2)
-Label.Cash=Contant
-Label.CashMachine=Kassa
-label.catid=ID
-label.catimage=Afbeelding
-label.catname=Categorie
-label.certificatepath=Certificaat
-label.certificatepwd=Certificaat Wachtwoord
-Label.ChangeCash=Wisselgeld
-label.city=Gemeente
-label.commerceid=ID
-label.commercepwd=Wachtwoord
-label.commercesign=Commerce teken
-label.contact=Contact
-label.country=Land
-label.curdate=Datum krediet
-label.curdebt=Huidige krediet
-label.currency=Munteenheid
-label.customer=Klant
-label.custtaxcategory=Klant BTW groep
-Label.Database=Database
-label.date=Datum
-label.datestitle=Contant data
-label.datetime=Datum tijd
-Label.DbDriver=Stuurprogramma
-label.dbdriverlib=Stuurprogramma archief
-Label.DbPassword=Wachtwoord
-Label.DbURL=URL
-Label.DbUser=Gebruiker
-label.debt=Krediet
-label.double=Double
-label.dutyid=ID
-label.dutyname=BTW omschrijving
-label.dutyrate=Tarief
-label.editline=Bewerk regel
-label.email=E-mail
-Label.EndDate=Eind datum
-label.fax=Fax
-label.firstname=Voornaam
-label.floorid=ID
-label.floorname=Vloer
-label.image=Afbeelding
-Label.InputCash=Ontvangen
-label.integer=Integer
-label.item=Item
-label.javapos.drawer=Lade naam
-label.javapos.printer=Printer naam
-label.lastname=Achternaam
-label.lindediscount=Disc' %
-Label.LoadError=Er is een fout opgetreden tijdens het uitvoeren van deze functionaliteit.
-label.locale=Localisatie
-label.location=Locatie / Adres
-label.locationaddress=Adres
-label.locationid=ID
-label.locationname=Naam
-label.looknfeel=Skin
-Label.MachineDisplay=Klanten scherm
-label.machinedisplayconn=Mode
-label.machinedisplayport=Poort
-Label.MachineName=Naam
-Label.MachinePrinter=Printer
-Label.MachinePrinter2=Printer 2
-Label.MachinePrinter3=Printer 3
-label.machineprinterport=Poort
-Label.MachineScreen=Scherm
-label.magcardreader=Kaart lezer
-label.maxdebt=Max krediet
-label.maximum=Maximum
-label.merchantcode=Leveranciers code
-label.minimum=Minimum
-label.money=Totaal
-
-label.packsinstock=In stock
-label.packof= packs of
-label.packstosplit=Packs to split
-label.productinpack=Product in pack
-label.split=Split
-
-Label.Name=Naam
-label.name=Naam
-label.notes=Notities
-label.noticketstoclose=Geen rekeningen om af te sluiten
-label.nullcategory=(geen categorie)
-label.order=Bestelling
-Label.Password=Wachtwoord
-label.passwordnew=Nieuw wachtwoord
-label.passwordold=Oud wachtwoord
-label.passwordrepeat=Verifieer wachtwoord
-Label.Payment=Betaling
-label.paymentdate=Datum
-label.paymentgateway=Bet. Gateway
-label.paymentreason=Reden
-label.paymentstitle=Betalingen rapport
-label.paymenttestmode=Test instelling
-label.paymenttotal=Totaal
-label.peopleimage=Afbeelding
-label.peoplename=Naam
-label.peoplevisible=Zichtbaar
-label.percent=Percent
-label.phone=Telefoon
-label.phone2=2de telefoon
-label.placefloor=Vloer
-label.placeid=ID
-label.placename=Plaats
-label.placeposition=Positie
-label.postal=Postcode
-label.price=Prijs
-label.pricetax=Prijs + BTW
-label.printtokitchen=Print to Kitchen
-label.prodaux=Extern
-label.prodbarcode=Bar code
-label.prodcategory=Categorie
-label.prodcost=Kostprijs
-label.prodgeneral=Algemeen
-label.prodincatalog=In catalogus
-label.prodname=Naam
-label.prodorder=Order
-label.prodpricebuy=Inkoopprijs
-label.prodpricesell=Verkoopprijs
-label.prodpriceselltax=Verkoopprijs (incl. BTW)
-label.prodproperties=Eigenschappen
-label.prodref=Referentie
-label.prodscale=Weegschaal
-label.prodstock=Voorraad
-label.prodstockcost=Voorraadkosten per jaar
-label.prodstockmax=Maximum niveau
-label.prodstocksec=Beveiligingsniveau
-label.prodstockvol=Voorraad volume
-label.produnits=Stuks
-label.prodvaluebuy=Inkoop waarde
-label.prodvaluesell=Verkoop waarde
-label.prodvolume=Volume
-label.properties=Eigenschappen
-label.receiptprinter=Bon printer
-label.recorddeleted=(Record verwijderen)
-label.recordeof=(geen records)
-label.recordnew=(Nieuw Record)
-label.refunds=Teruggaaf
-label.region=Regio
-label.remainingcash=Restantbedrag
-label.reportsprinter=Rapporten printer
-label.resname=Bron
-label.restaurantcustomer=Ontvangen van klant {0}. Kies een lege tafel.
-label.restaurantmove=Verplaatsen tafel {0}. Kies een lege tafel of de oorspronkelijke tafel.
-label.role=Rol
-label.sales=Verkopen
-label.salestitle=Verkoop rapport
-label.scale=Weegschaal
-label.scaleinput=Geef het gewicht in
-label.scalewrongunit=Check instelling (gewicht in g)
-label.scaleweight=Gewicht (g)
-label.scanner=Scanner
-label.search=Zoeken
-label.searchkey=Zoekargument
-label.sequence=Vervolg
-label.sha=SHA
-Label.StartDate=Start datum
-label.stockdate=Datum
-label.stockproduct=Product
-label.stockreason=Reden
-label.storename=Bedrijfsnaam
-label.subtotalcash=Subtotaal
-label.table=Tafel
-label.tax=BTW
-label.taxcash=BTW
-label.taxcategory=BTW groep
-label.taxes=BTW
-label.taxid=Belastings ID
-label.taxparent=Hoofd BTW
-label.terminal=Terminal
-label.ticketid=Bon
-Label.Tickets=Betalingen
-Label.Ticketsbag=Rekeningen
-label.time=Tijd
-label.totalcash=Totaal
-label.totaldiscount=Total Disc'
-label.type=Type
-label.units=Aantal
-label.uploadingproducts=Producten uploaden... Een ogenblik geduld aub.
-label.user=Gebruiker\:
-label.value=Bedrag
-label.visible=Zichtbaar
-label.warehouse=Magazijn
-
-Menu.Attributes=Product attributen
-Menu.AttributeSets=Product attributen sets
-Menu.AttributeUse=Product attributen gebruik
-Menu.AttributeValues=Attributen waardes
-Menu.Auxiliar=Auxiliary products
-Menu.Backoffice=Onderhoud
-Menu.CashFlow=Cash-Flow
-Menu.CashRegisterLog=Transaction Log
-Menu.Catalog=Catalogus
-Menu.Categories=Categorie\u00ebn
-Menu.CategoryProductSalesChart=Category Sales Chart
-Menu.CategorySales=Category Sales
-Menu.ChangePassword=Wachtwoord wijzigen
-Menu.ClosedProducts=Product verkopen
-Menu.CloseTPV=Kassa sluiten
-Menu.Closing=Kassa gesloten
-Menu.Configuration=Configuratie
-Menu.Customers.Reports=Rapporten
-Menu.Customers=Klanten
-Menu.CustomersBReport=Achterstallige klanten
-Menu.CustomersDiary=Klanten agenda
-Menu.CustomersManagement=Klanten
-Menu.CustomersPayment=Klanten
-Menu.CustomersReport=Klanten
-Menu.ERPOrders=Bestelling synchronisatie
-Menu.ERPProducts=Producten synchronisatie
-Menu.Exit=Programma sluiten
-Menu.ExtendedByProducts=Extended Product Sales
-Menu.ExtendedCashRegisterLog=Extended Transaction Log
-Menu.ExtendedSales=Extended Sales
-Menu.Floors=Vloeren
-Menu.Inventory=Magazijnen
-Menu.Inventory2=Huidige inventaris
-Menu.InventoryBroken=Inventaris kapotte goederen
-Menu.InventoryDiff=Inventaris logboek
-Menu.InventoryDiffDetail=Inventaris dagboek
-Menu.InventoryListDetail=Huidige inventaris details
-Menu.InventoryReOrder=Inventory: Re-Order
-Menu.InventorySupplement=Voorraad aanvullijst
-Menu.Locations=Magazijnen
-Menu.Main=Algemeen
-Menu.Maintenance.ERP=Chromis ERP
-Menu.Maintenance.POS=Point of Sale
-Menu.Maintenance.Reports=Rapporten
-Menu.Maintenance=Onderhoud
-Menu.PaymentReport=Payments
-Menu.Payments=Betalingen
-Menu.Printer=Printer
-Menu.ProductLabels=Producten labels
-Menu.Products=Producten overzicht
-Menu.ProductPriceList=Prijslijst
-Menu.ProductSales=Product verkopen
-Menu.ProductsWarehouse=Producten per warenhuis
-Menu.ProductPacks=Product Packs
-Menu.StockChanges=Stock Changes
-Menu.StockChangesReport=Stock Changes Report
-Menu.Promotions=Promotions
-Menu.PromotionsReport=Promotions Report
-
-Menu.Reports=Rapporten
-Menu.ReportTaxes=Belastingen
-Menu.Resources=Bronnen
-Menu.Roles=Rollen
-Menu.SalesByCustomer=Sales By Customer
-Menu.SalesChart=Omzet grafiek
-Menu.SalesManagement.Reports=Rapporten
-Menu.SalesManagement=Verkopen
-Menu.SalesProfit=Product Sales Profit
-Menu.SaleTaxes=Sales Taxes
-Menu.StockDiary=Voorraad logboek
-Menu.StockManagement.Edit=Onderhoud
-Menu.StockManagement.Reports=Rapporten
-Menu.StockManagement=Voorraad
-Menu.StockMovement=Onderhoud voorraad
-Menu.System=Systeem
-Menu.Tables=Tafels
-Menu.TaxCategories=BTW groepen
-Menu.TaxCustCategories=BTW klanten groepen
-Menu.Taxes=BTW
-Menu.ThirdParties=Leveranciers
-Menu.ThirdPartiesManagement=Onderhoud leveranciers
-Menu.Ticket=Verkoop
-Menu.TicketEdit=Bewerken
-Menu.TicketRefund=Teruggaven
-Menu.Top10Sales=Top 10 Sales
-Menu.Users=Gebruikers
-Menu.UserSells=Omzet per gebruiker
-Menu.UsersReport=Gebruikers
-
-message.BadPassword=Wachtwoord ongeldig. Probeer opnieuw..
-message.cannotcalculatetaxes=Kan de BTW niet berekenen.\nDe BTW waarden van een of meerdere producten zijn niet gedefineerd.
-message.cannotchangepassword=Wachtwoord kan niet worden gewijzigd
-message.cannotclosecash=Kan kassa niet sluiten
-message.cannotdeleteconfig=Configuratiebestand kan niet worden verwijderd.
-message.cannotexecute=Kan actie niet uitvoeren.
-message.cannotfillchart=Grafiek kan niet worden voorzien van gegevens.
-message.cannotfillreport=Rapport kan niet worden voorzien van gegevens.
-message.cannotfindattributes=Deze product heeft geen attributen.
-message.cannotfindcustomer=Kan de klant niet vinden
-message.cannotloadlists=Kan de lijst niet laden.
-message.cannotloadreport=Rapport definitie kan niet worden geladen.
-message.cannotloadreportdata=Rapport gegevens kan niet worden geladen.
-message.cannotloadresourcedata=Kan brondata voor rapport niet laden.
-message.cannotloadticket=Kan de rekening niet laden.
-message.CannotMove=Kan niet verplaatsen naar ander record.
-message.cannotprint=Kan kassabon niet afdrukken.
-message.cannotprintline=Kan regel niet afdrukken.
-message.cannotprintticket=Kan faktuur niet afdrukken.
-message.cannotsaveconfig=Configuratiebestand kan niet worden weggeschreven.
-message.cannotsaveinventorydata=Kan inventaris niet opslaan.
-message.cardnew=De waarde van de kaart zal nu veranderen. Wilt U verdergaan?
-message.cardremove=De waarde van de kaart zal verwijderd worden. Wilt U verdergaan?
-message.changepassworddistinct=Beide wachtwoorden dienen overeen te komen
-message.closecashok=Deze kassa is nu afgesloten.
-message.configfactory=Standaard waarden zullen worden hersteld. Veranderingen zullen hierdoor verloren gaan. Wilt u verder gaan?
-message.configrestore=Initiele waarden zullen worden hersteld. Veranderingen zullen hierdoor verloren gaan. Wilt u verder gaan?
-message.createdatabase=Er kan geen bestaande database worden gevonden. Er wordt een standaard database gecre\u00ebrd. Wilt u verder gaan?
-message.customerdebtexceded=De klant zit boven toegestaan krediet.
-message.databaseconnectionerror=Fout\: kan niet verbinden met database. Database niet beschikbaar
-message.databasedrivererror=Fout\: kan niet verbinden met database. Database stuurprogramma niet gevonden.
-message.databasenotsupported=Database "{0}" niet ondersteund
-message.mergetable=Tafels samenvoegen
-message.mergetablequestion=Weet u zeker dat u de tafels wilt samenvoegen?
-message.nocard=Gebruikerskaart niet gevonden. Probeer opnieuw...
-message.nocardreader=Kaartlezer niet gedefinieerd.
-message.nocustomer=Er is geen klant met deze code.
-message.nocustomernodebt=Dit ticket is niet toegewezen aan een klant.\nHet kan niet worden betaald met krediet.
-message.nopaymentgateway=Bet. Gateway niet gedefinieerd.
-message.noprinters=Geen printers geinstalleerd op het systeem.
-message.noproduct=Er is geen product met de ingevoerde code.
-message.nosaveticket=Kan rekening niet bewaren.
-message.notactive=Fout opgetreden bij het laden van het scherm.
-message.notexiststicket=De rekening bestaat niet
-message.noticket=De rekening bestaat niet meer.
-message.notpermissions=U bent niet bevoegd om deze taak uit te voeren.
-message.noupdatescript=Er is een database van een vorige versie gedetecteerd maar het is niet mogelijk deze automatisch te updaten. Chromis POS zal nu afsluiten.
-message.noweight=Gewicht onmogelijk
-message.paymentcashneg=Geef het geld terug en druk op OK.
-message.paymenterror=Transactie fout.
-message.paymenterrorunknown=Transactiefout niet bekend.
-message.paymentexceptionremote=Remote exceptie.
-message.paymentexceptionservice=Service exceptie.
-message.paymentfree=Gratis.
-message.paymentgatewayext=Voer de PIN transactie uit en druk op OK.
-message.paymentgatewayextrefund=Voer de kaarttransactie terruggaaf uit en druk op OK.
-message.paymentgatewayswipe=Schuif de kaart door de lezer en druk OK.
-message.paymentgatewaytype=Geef kaartdetails in en druk OK.
-message.paymentnotauthorised=Transactie niet geauthoriseerd.
-message.paymentrefundsnotsupported=Teruggeven niet ondersteund.
-message.preparescanner=Bereid de scanner voor om de productlijst te verzenden en druk op OK.
-message.printererror=De rekening kan niet geprint worden
-message.productnotselected=Geen product geselcteerd.
-message.stockchangesactioned=Stock Changes Actioned
-
-message.restartchanges=De configuratie is weggeschreven.
-message.scannerfail=Het verzenden van de productlijst is mislukt.
-message.scannerfail2=U bent niet bevoegd om deze taak uit te voeren.
-message.scannerok=Het verzenden van de productlijst is gelukt.
-message.tableempty=De tafel is nu leeg.
-message.tablefull=De tafel is nu bezet.
-message.title=Kassa bericht
-message.updatedatabase=Een database van een eerdere versie werd gedetecteerd. De database zal opgewaardeed worden. ALLE GEGEVENS GAAN VERLOREN. MAAK EERST EEN BACKUP. Doorgaan?
-message.wannaclosecash=Weet u zeker dat u deze kassa wilt afsluiten?
-message.wannadelete=Weet u zeker dat deze kassabon verwijderd moet worden?
-message.wannasave=Wilt U de wijzigingen opslaan alvorens af te sluiten?
-
-payment.title=Betaling
-
-Printer.Null=Printer niet gereed
-Printer.Screen=Scherm printer
-Printer.Serial=Bon printer
-
-resource.binary=Binair
-resource.image=Afbeelding
-resource.text=Text
-
-rest.label.chairs=Stoelen
-rest.label.customer=Klant
-rest.label.date=Datum
-rest.label.notes=Waardebonnen
-
-scale.invalidvalue=Weegschaal niet gedefinieerd
-scale.notdefined=Weegschaal niet gedefinieerd
-scale.weighitem=Weigh Item
-
-stock.in.movement=(in) Verplaatsen
-stock.in.purchase=(in) Aankoop
-stock.in.refund=(in) Retour
-stock.out.break=(uit) Kapot
-stock.out.crossing=Overbrengen
-stock.out.movement=(uit) Verplaatsen
-stock.out.refund=(uit) Teruggave
-stock.out.sale=(uit) Verkoop
-stock.in.openpack=(In) Open Pack
-stock.out.openpack=(Out) Open Pack
-stock.in.stockchange=(In) Stock Change
-stock.out.stockchange=(Out) Stock Change
-
-tab.cash=Contant
-tab.cashrefund=Teruggave
-tab.cheque=Cheque
-tab.chequerefund=Cheque
-tab.debt=Krediet
-tab.free=Gratis
-tab.magcard=PIN
-tab.paper=Waardebon
-
-title.changepassword=Wachtwoord wijzigen
-title.editor=Editor bericht
-
-transpayment.cash=Contant
-transpayment.cashin=(in) Contant
-transpayment.cashout=(out) Contant
-transpayment.cashrefund=Teruggave
-transpayment.cheque=Cheque
-transpayment.chequerefund=Cheque teruggaaf
-transpayment.debt=Krediet
-transpayment.debtpaid=Krediet betaald
-transpayment.free=Gratis
-transpayment.magcard=PIN
-transpayment.magcardrefund=PIN teruggaaf
-transpayment.paperin=Waardebon invoer
-transpayment.paperout=Waardebon uitvoer
-
-Visor.Title=Chromis POS
\ No newline at end of file
diff --git a/locales/Dutch/reports/uk/chromis/reports/people_messages_nl.properties b/locales/Dutch/people_messages_nl.properties
similarity index 89%
rename from locales/Dutch/reports/uk/chromis/reports/people_messages_nl.properties
rename to locales/Dutch/people_messages_nl.properties
index 59996ea1..9efd42d7 100644
--- a/locales/Dutch/reports/uk/chromis/reports/people_messages_nl.properties
+++ b/locales/Dutch/people_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Dutch/reports/uk/chromis/reports/productlabels_messages_nl.properties b/locales/Dutch/productlabels_messages_nl.properties
similarity index 89%
rename from locales/Dutch/reports/uk/chromis/reports/productlabels_messages_nl.properties
rename to locales/Dutch/productlabels_messages_nl.properties
index b15eeb40..366e8426 100644
--- a/locales/Dutch/reports/uk/chromis/reports/productlabels_messages_nl.properties
+++ b/locales/Dutch/productlabels_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Dutch/reports/uk/chromis/reports/products_messages_nl.properties b/locales/Dutch/products_messages_nl.properties
similarity index 91%
rename from locales/Dutch/reports/uk/chromis/reports/products_messages_nl.properties
rename to locales/Dutch/products_messages_nl.properties
index 082f0e8b..bee16161 100644
--- a/locales/Dutch/reports/uk/chromis/reports/products_messages_nl.properties
+++ b/locales/Dutch/products_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Dutch/reports/uk/chromis/reports/productsales_messages_nl.properties b/locales/Dutch/productsales_messages_nl.properties
similarity index 90%
rename from locales/Dutch/reports/uk/chromis/reports/productsales_messages_nl.properties
rename to locales/Dutch/productsales_messages_nl.properties
index ffae4c43..98eb0b91 100644
--- a/locales/Dutch/reports/uk/chromis/reports/productsales_messages_nl.properties
+++ b/locales/Dutch/productsales_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Dutch/reports/uk/chromis/reports/productscatalog_messages_nl.properties b/locales/Dutch/productscatalog_messages_nl.properties
similarity index 91%
rename from locales/Dutch/reports/uk/chromis/reports/productscatalog_messages_nl.properties
rename to locales/Dutch/productscatalog_messages_nl.properties
index 96499d47..9a7bcd82 100644
--- a/locales/Dutch/reports/uk/chromis/reports/productscatalog_messages_nl.properties
+++ b/locales/Dutch/productscatalog_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Dutch/reports/uk/chromis/reports/taxes_messages_nl.properties b/locales/Dutch/taxes_messages_nl.properties
similarity index 91%
rename from locales/Dutch/reports/uk/chromis/reports/taxes_messages_nl.properties
rename to locales/Dutch/taxes_messages_nl.properties
index a250bf78..a94ca154 100644
--- a/locales/Dutch/reports/uk/chromis/reports/taxes_messages_nl.properties
+++ b/locales/Dutch/taxes_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Dutch/reports/uk/chromis/reports/usersales_messages_nl.properties b/locales/Dutch/usersales_messages_nl.properties
similarity index 91%
rename from locales/Dutch/reports/uk/chromis/reports/usersales_messages_nl.properties
rename to locales/Dutch/usersales_messages_nl.properties
index bdb504f2..ebcc3dcf 100644
--- a/locales/Dutch/reports/uk/chromis/reports/usersales_messages_nl.properties
+++ b/locales/Dutch/usersales_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/English/badprice_messages.properties b/locales/English/badprice_messages.properties
new file mode 100644
index 00000000..524d6c76
--- /dev/null
+++ b/locales/English/badprice_messages.properties
@@ -0,0 +1,25 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+
+
+label.title=New Products Added
+label.reference=Reference
+label.barcode=Barcode
+label.name=Name
+label.pricebuy=Buy Price
+label.pricesell=Sell Price
+
diff --git a/locales/English/barcodesheet_messages.properties b/locales/English/barcodesheet_messages.properties
new file mode 100644
index 00000000..6bc46b26
--- /dev/null
+++ b/locales/English/barcodesheet_messages.properties
@@ -0,0 +1,19 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Barcode Sheet
diff --git a/locales/English/cashflow_messages.properties b/locales/English/cashflow_messages.properties
new file mode 100644
index 00000000..cd28f512
--- /dev/null
+++ b/locales/English/cashflow_messages.properties
@@ -0,0 +1,42 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Cash-Flow
+label.noreference=
+label.noproduct=(no sales)
+label.printed=Printed
+label.period=Period:
+label.payment=Payment
+label.sum=Amount
+label.total=Grand Total
+
+transpayment.bank=Bank
+transpayment.cash=Cash
+transpayment.magcard=Card
+transpayment.cashrefund=Refund
+transpayment.magcardrefund=Card Refund
+transpayment.cheque=Cheque
+transpayment.chequerefund=Cheque Refund
+transpayment.cashin=(in) Cash
+transpayment.cashout=(out) Cash
+transpayment.free=Free
+transpayment.ticket=Ticket
+transpayment.paperin=Note Input
+transpayment.paperout=Note Output
+transpayment.debt=Debt
+transpayment.debtpaid=Debt Paid
\ No newline at end of file
diff --git a/locales/English/cashregisterlog_messages.properties b/locales/English/cashregisterlog_messages.properties
new file mode 100644
index 00000000..3b2bc08a
--- /dev/null
+++ b/locales/English/cashregisterlog_messages.properties
@@ -0,0 +1,45 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Transaction Log
+label.noreference=
+label.noproduct=(no sales)
+label.printed=Printed
+label.date=Date
+label.ticket=Ticket no
+label.sum=Sum
+label.customer=Customer
+label.payment=Payment
+label.period=Period:
+label.total=Grand Total
+
+transpayment.bank=Bank
+transpayment.cash=Cash
+transpayment.magcard=Card
+transpayment.cashrefund=Refund
+transpayment.magcardrefund=Card Refund
+transpayment.cheque=Cheque
+transpayment.chequerefund=Cheque Refund
+transpayment.cashin=(in) Cash
+transpayment.cashout=(out) Cash
+transpayment.free=Free
+transpayment.ticket=Ticket
+transpayment.paperin=Note Input
+transpayment.paperout=Note Output
+transpayment.debt=Debt
+transpayment.debtpaid=Debt Paid
\ No newline at end of file
diff --git a/locales/English/categorysales_messages.properties b/locales/English/categorysales_messages.properties
new file mode 100644
index 00000000..1c39111d
--- /dev/null
+++ b/locales/English/categorysales_messages.properties
@@ -0,0 +1,29 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.catprice=Net
+label.cattax=Tax
+label.cattotal=Total
+label.disc=Disc.
+label.gross=Gross
+label.name=Category
+label.printed=Printed
+label.period=Period:
+label.qty=Qty
+label.title=Category Sales
+label.total=Grand Total
diff --git a/locales/English/chartsales_messages.properties b/locales/English/chartsales_messages.properties
new file mode 100644
index 00000000..b7aec0c7
--- /dev/null
+++ b/locales/English/chartsales_messages.properties
@@ -0,0 +1,23 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Sales Chart
+label.printed=Printed
+label.period=Period:
+label.axisx=Sales
+label.axisy=Quantity
diff --git a/locales/English/closedpos_messages.properties b/locales/English/closedpos_messages.properties
new file mode 100644
index 00000000..1da210cf
--- /dev/null
+++ b/locales/English/closedpos_messages.properties
@@ -0,0 +1,45 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Cash Closed
+label.closedate=Period
+label.partialtotal=Sequence Total
+label.total=Grand Total
+label.partialtax=Taxes
+label.partialsubtotal=Subtotal
+label.tax=Taxes
+label.terminaltotal=Terminal Total
+label.subtotal=Subtotal
+label.period=Period:
+label.printed=Printed
+transpayment.bank=Bank
+transpayment.cash=Cash
+transpayment.magcard=Card
+transpayment.cashrefund=Refund
+transpayment.magcardrefund=Card Refund
+transpayment.cheque=Cheque
+transpayment.chequerefund=Cheque Refund
+transpayment.cashin=(in) Cash
+transpayment.cashout=(out) Cash
+transpayment.free=Free
+transpayment.ticket=Ticket
+transpayment.paperin=Note Input
+transpayment.paperout=Note Output
+transpayment.debt=Debt
+transpayment.debtpaid=Debt Paid
+label.sequence=Sequence
diff --git a/locales/English/closedproducts_messages.properties b/locales/English/closedproducts_messages.properties
new file mode 100644
index 00000000..5f05b70a
--- /dev/null
+++ b/locales/English/closedproducts_messages.properties
@@ -0,0 +1,29 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+
+label.title=Product Sales
+label.printed=Printed
+label.period=Period:
+label.noreference=(no Reference defined)
+label.noproduct=(no Product defined)
+label.host=Terminal
+label.closeddate=Date
+label.units=Units
+label.partialtotal=Total
+label.total=Total by Product
diff --git a/locales/English/customers_messages.properties b/locales/English/customers_messages.properties
new file mode 100644
index 00000000..ba5250cb
--- /dev/null
+++ b/locales/English/customers_messages.properties
@@ -0,0 +1,27 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+
+label.title=Customers
+label.printed=Printed
+label.maxdebt=Max Debt
+label.curdebt=Debt current
+label.curdate=Debt date
+label.notes=Notes
+label.taxid=Account ID
+label.discount=Discount
\ No newline at end of file
diff --git a/locales/English/customersdiary_messages.properties b/locales/English/customersdiary_messages.properties
new file mode 100644
index 00000000..4e53b7a3
--- /dev/null
+++ b/locales/English/customersdiary_messages.properties
@@ -0,0 +1,26 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Customers Diary
+
+label.date=Date
+label.period=Period:
+label.printed=Printed
+label.ticket=Ticket
+label.payment=Payment
+label.total=Total
diff --git a/locales/English/dailypresence_messages.properties b/locales/English/dailypresence_messages.properties
new file mode 100644
index 00000000..d8f27e41
--- /dev/null
+++ b/locales/English/dailypresence_messages.properties
@@ -0,0 +1,26 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+
+label.end=End Shift
+label.name=Name
+label.period=Period:
+label.printed=Printed
+label.start=Start Shift
+label.title=Daily Presence
+label.total=Total Hours
\ No newline at end of file
diff --git a/locales/English/dailyschedule_messages.properties b/locales/English/dailyschedule_messages.properties
new file mode 100644
index 00000000..8b312836
--- /dev/null
+++ b/locales/English/dailyschedule_messages.properties
@@ -0,0 +1,25 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.end=End Leave
+label.name=Name
+label.period=Period:
+label.printed=Printed
+label.start=Start Leave
+label.title=Daily Schedule
+label.total=Total Days
diff --git a/locales/English/extendedcashregisterlog_messages.properties b/locales/English/extendedcashregisterlog_messages.properties
new file mode 100644
index 00000000..05bc473c
--- /dev/null
+++ b/locales/English/extendedcashregisterlog_messages.properties
@@ -0,0 +1,45 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Transaction Log: Extended
+label.noreference=
+label.noproduct=(no sales)
+label.printed=Printed:
+label.period=Period:
+label.date=Date
+label.ticket=Ticket No.
+label.sum=Sum
+label.customer=Customer
+label.payment=Payment
+label.total=Grand Total
+
+transpayment.bank=Bank
+transpayment.cash=Cash
+transpayment.magcard=Card
+transpayment.cashrefund=Cash Refund
+transpayment.magcardrefund=Card Refund
+transpayment.cheque=Cheque
+transpayment.chequerefund=Cheque Refund
+transpayment.cashin=(in) Cash
+transpayment.cashout=(out) Cash
+transpayment.free=Free
+transpayment.ticket=Ticket
+transpayment.paperin=Note Input
+transpayment.paperout=Note Output
+transpayment.debt=Debt
+transpayment.debtpaid=Debt Paid
diff --git a/locales/English/extproducts_messages.properties b/locales/English/extproducts_messages.properties
new file mode 100644
index 00000000..8095e200
--- /dev/null
+++ b/locales/English/extproducts_messages.properties
@@ -0,0 +1,34 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.meanprice=Mean Price
+label.name=Category
+label.notaxid=
+label.nocustomer=(No Customer defined)
+label.nocategory=(No Category defined)
+label.noreferency=
+label.noproduct=(No Product defined)
+label.partialtotal=Total
+label.period=Period:
+label.printed=Printed
+label.productname=Product
+label.sumtotal=Total by Sales
+label.title=Product Sales: Customer
+label.total=Total by Customer
+label.units=Units
+
diff --git a/locales/English/invalidcategory_messages.properties b/locales/English/invalidcategory_messages.properties
new file mode 100644
index 00000000..b9a9b26f
--- /dev/null
+++ b/locales/English/invalidcategory_messages.properties
@@ -0,0 +1,27 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+
+label.title=Invalid Category Data
+label.reference=Reference
+label.barcode=Barcode
+label.name=Name
+label.category=Bad Category
+label.csverror=Error message
+label.row=Row in file
+
diff --git a/locales/English/invaliddata_messages.properties b/locales/English/invaliddata_messages.properties
new file mode 100644
index 00000000..cf032f7b
--- /dev/null
+++ b/locales/English/invaliddata_messages.properties
@@ -0,0 +1,25 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Invalid product data
+label.reference=Reference
+label.barcode=Barcode
+label.name=Name
+label.csverror=Error message
+label.row=Row in file
+
diff --git a/locales/English/inventory_messages.properties b/locales/English/inventory_messages.properties
new file mode 100644
index 00000000..c701a301
--- /dev/null
+++ b/locales/English/inventory_messages.properties
@@ -0,0 +1,31 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+
+label.title=Inventory: Location and Category
+label.printed=Printed
+label.ref=Ref.
+label.name=Name
+label.sec=Minimum
+label.units=Units
+label.valuebuy=Cost Value
+label.valuesell=Retail Value
+label.valuevolume=Volume
+label.valuecost=Cost
+label.max=Maximum
+label.location=Location :
diff --git a/locales/English/inventoryb_messages.properties b/locales/English/inventoryb_messages.properties
new file mode 100644
index 00000000..2db75003
--- /dev/null
+++ b/locales/English/inventoryb_messages.properties
@@ -0,0 +1,28 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+
+
+label.title=Inventory: Current
+label.titleb=Inventory: Broken
+label.ref=Ref.
+label.name=Name
+label.printed=Printed
+label.sec=Minimum
+label.units=Units
+label.max=Maximum
diff --git a/locales/English/inventorydiff_messages.properties b/locales/English/inventorydiff_messages.properties
new file mode 100644
index 00000000..f74aeb01
--- /dev/null
+++ b/locales/English/inventorydiff_messages.properties
@@ -0,0 +1,31 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+.
+
+
+label.title=Inventory: Difference
+label.printed=Printed
+label.period=Period:
+label.ref=Ref.
+label.name=Name
+label.in=In
+label.out=Out
+label.diff=Difference
+label.sumin=Total In
+label.sumout=Total Out
+label.sumdiff=Total Difference
diff --git a/locales/English/inventorydiffdetail_messages.properties b/locales/English/inventorydiffdetail_messages.properties
new file mode 100644
index 00000000..ba837ea8
--- /dev/null
+++ b/locales/English/inventorydiffdetail_messages.properties
@@ -0,0 +1,30 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+
+label.title=Inventory: Difference Detail
+label.printed=Printed
+label.period=Period
+label.ref=Ref.
+label.name=Name
+label.in=In
+label.out=Out
+label.diff=Difference
+label.sumin=Total In
+label.sumout=Total Out
+label.sumdiff=Total Difference
diff --git a/locales/English/inventorylistdetail_messages.properties b/locales/English/inventorylistdetail_messages.properties
new file mode 100644
index 00000000..6726dfca
--- /dev/null
+++ b/locales/English/inventorylistdetail_messages.properties
@@ -0,0 +1,27 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+
+
+label.title= Inventory: List Detail
+label.printed: Printed
+label.ref=Ref.
+label.name=Name
+label.sec=Minimum
+label.units=Units
+label.max=Maximum
diff --git a/locales/English/locales/beans_messages.properties b/locales/English/locales/beans_messages.properties
deleted file mode 100644
index ffef6905..00000000
--- a/locales/English/locales/beans_messages.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-button.cancel=Cancel
-button.ok=OK
-button.Today=Today
-title.calendar=Select a Date
-Button.Today=Today
diff --git a/locales/English/locales/data_messages.properties b/locales/English/locales/data_messages.properties
deleted file mode 100644
index ba8e0eb4..00000000
--- a/locales/English/locales/data_messages.properties
+++ /dev/null
@@ -1,90 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-button.cancel=Cancel
-button.information=Info
-button.ok=OK
-
-caption.sort=Sort
-
-exception.iofile=Error reading file.
-exception.nocompare=Expected comparator for QBF.
-exception.nodataset=Data set not defined.
-exception.nofinishedfile=Sentences file not finished.
-exception.nodelete=No records deleted.
-exception.noinsert=No records created.
-exception.nonegativelimits=Negative limits not allowed.
-exception.noparamtype=Parameter type not allowed.
-exception.noreadfile=Error reading sentences file.
-exception.notnull=The value must be not null.
-exception.noupdate=No records updated.
-exception.noupdatecount=Update count not defined.
-exception.outofbounds=Out of bounds.
-exception.parserconfig=XML analyzer error. Please contact the Administrator.
-exception.xmlfile=Analysis error. Invalid XML file.
-
-label.andby=And by
-label.casesensitive=Case sensitive
-label.findwhat=Find what
-label.imagefiles=Image files
-label.match=Match
-label.sortby=Sort by
-label.where=Where
-
-list.anypart=Any part of the field
-list.re=Regular expression
-list.startfield=Start field
-list.wholefield=Whole field
-
-qbf.none=None
-qbf.null=Is null
-qbf.notnull=Is not null
-qbf.equals=Equals
-qbf.distinct=Distinct
-qbf.greater=Greater
-qbf.less=Less
-qbf.greaterequals=Greater or equal
-qbf.lessequals=Less or equals
-qbf.re=Wildcards
-
-message.changeslost=The changes will be lost. Do you want to continue?
-message.nodelete=Cannot mark the record for deleting.
-message.nolistdata=Cannot find in data list.
-message.nomove=Cannot move to other record.
-message.nonew=Cannot create a new record.
-message.norecord=Record not found.
-message.noreload=Cannot reload data list.
-message.nosave=Record not saved.
-message.nosort=The sort condition defined is not valid
-message.resizeimage=The selected image is larger than the accurate size for this field. Do you want to resize the image?
-message.wannasave=Do you want to save the changes before exit?
-
-sgn.caution=Caution\:
-sgn.danger=Danger\:
-sgn.notice=Notice\:
-sgn.important=Important\:
-sgn.success=Success\:
-sgn.unknown=Unknown\:
-sgn.warning=Warning\:
-
-title.editor=Editor message
-title.find=Find
-title.message=Database manager message
-combo.year=Year
-combo.today=Today
-combo.month=Month
diff --git a/locales/English/locales/erp_messages.properties b/locales/English/locales/erp_messages.properties
deleted file mode 100644
index 2917646d..00000000
--- a/locales/English/locales/erp_messages.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.configerp=ERP configuration
-label.erpurl=Services URL
-label.erpid=Entity code
-label.erporg=Organization code
-label.erppos=POS code
-label.erpuser=User
-label.erppassword=Password
-message.urlnotdefined=Synchronization service URL has not been defined.
-message.syncordersok=The orders synchronization has been successful.
-message.syncordersinfo={0} orders synchronized.
-message.syncproductsok=The data synchronization has been successful.
-message.syncproductsinfo={0} products synchronized.\n{1} customers synchronized.
-message.remoteexception=Communication error.
-message.serviceexception=Cannot connect to the service.
-message.malformedurlexception=The service URL is wrong.
-message.returnnull=Synchronization parameters are wrong.
-message.zeroproducts=There are no data to synchronize.
-message.zeroorders=There are no orders to synchronize.
-message.propsnotdefined=The synchronization properties resource "chromis.properties" has not been defined.
\ No newline at end of file
diff --git a/locales/English/locales/pos_messages.properties b/locales/English/locales/pos_messages.properties
deleted file mode 100644
index 82a485ee..00000000
--- a/locales/English/locales/pos_messages.properties
+++ /dev/null
@@ -1,721 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-Button.Cancel=
-Button.Close=Exit
-Button.CloseCash=Close Cash
-Button.DeleteTicket=
-Button.ExecuteChart=Execute
-Button.ExecuteReport=Run Report
-Button.Exit=Exit
-Button.Factory=Restore
-Button.NewTicket=New Ticket\u000a
-Button.OK=OK
-Button.PrintCash=Print
-Button.Restore=Update db
-Button.Save=Save
-Button.Test=Test
-Button.newcustomer=Cancel
-Database.ScriptError=Script Error
-Database.ScriptWarning=Script Warning
-Display.Null=Display not available
-Display.Screen=Screen Display
-Display.Window=Display
-Label.Cash=Cash
-Label.CashMachine=Cash Register
-Label.ChangeCash=Change
-Label.Database=Database
-Label.DbDriver=Driver Class
-Label.DbPassword=Password
-Label.DbURL=URL
-Label.DbUser=User
-Label.EndDate=End Date
-Label.InputCash=Given
-Label.LoadError=Load Error
-Label.MachineDisplay=Customer Display
-Label.MachineName=Name
-Label.MachinePrinter=Printer
-Label.MachinePrinter2=Printer 2
-Label.MachinePrinter3=Printer 3
-Label.MachinePrinter4=Printer 4
-Label.MachinePrinter5=Printer 5
-Label.MachinePrinter6=Printer 6
-Label.MachineScreen=Screen
-Label.Name=Name
-Label.Password=Password
-Label.Payment=Payment
-Label.StartDate=Start Date
-Label.Tickets=Transactions
-Label.Ticketsbag=Tickets
-Label.ValidFrom=Valid From
-Label.ticketsetupexample=Example
-Label.ticketsetupnumber=Receipt number min' length
-Label.ticketsetupprefix=Receipt number prefix
-
-Menu.AttributeSets=Product Attribute Sets
-Menu.AttributeUse=Product Attribute use
-Menu.AttributeValues=Attribute values
-Menu.Attributes=Product Attributes
-Menu.Auxiliar=Auxiliary products
-Menu.Backoffice=Administration
-Menu.BarcodeSheet=Labels: Barcode
-Menu.Breaks=Breaks
-Menu.CSVImport=Import CSV File
-Menu.CSVReset=Clear Import Database Log
-Menu.CashFlow=Cash-Flow
-Menu.CashRegisterLog=Transaction Log
-Menu.Catalog=Catalogue
-Menu.Categories=Categories
-Menu.CategoryProductSalesChart=Category Sales
-Menu.CategorySales=Category Sales
-Menu.ChangePassword=Change Password
-Menu.CheckInCheckOut=Check In/Out
-Menu.CloseTPV=Close Cash
-Menu.ClosedProducts=Product Sales: Product
-Menu.ClosedProducts1=Product Sales: Product II
-Menu.Closing=Cash Closed
-Menu.Closing1=Cash Closed (Export)
-Menu.Closing2=Cash Closed (Export)
-Menu.Configuration=Configuration
-Menu.Customers=Customers
-Menu.CustomersDebtors=Customer Debtors
-Menu.Customers.Reports=Reports
-Menu.CustomersBReport=Debtors (Card Style)
-Menu.CustomersDiary=Customers Diary
-Menu.CustomersExport=Customers List (Export)
-Menu.CustomersList=Customers List
-Menu.CustomersManagement=Customers
-Menu.CustomersPayment=Customer Payment
-Menu.CustomersReport=Customers (Card Style)
-Menu.DailyPresenceReport=Daily Presence
-Menu.DailyScheduleReport=Daily Schedule
-Menu.ERPOrders=ERP Order Synchronisation
-Menu.ERPProducts=POS Synchronisation
-Menu.Employees.Reports=Reports
-Menu.Exit=Logout
-Menu.ExtendedByProducts=Product Sales: Customer
-Menu.ExtendedCashRegisterLog=Transaction Log: Extended
-Menu.ExtendedSales=Extended Sales
-Menu.Floors=Floors
-Menu.Import=Import
-Menu.Import.Reports=Import Reports
-Menu.InvalidData=Invalid or duplicate data found
-Menu.Inventory=Inventory
-Menu.Inventory2=Inventory: Current
-Menu.InventoryBroken=Inventory: Broken
-Menu.InventoryDiff=Inventory: Difference
-Menu.InventoryDiffDetail=Inventory: Difference Detail
-Menu.InventoryListDetail=Inventory: List Detail
-Menu.InventoryReOrder=Inventory: Re-Order
-Menu.Leaves=Leaves
-Menu.Locations=Locations
-Menu.Main=Register
-Menu.Maintenance=Maintenance
-Menu.Maintenance.ERP=Chromis ERP
-Menu.Maintenance.POS=Point Of Sale
-Menu.Maintenance.Reports=Reports
-Menu.MissingData=Missing Data or Bad Price in File
-Menu.NewProducts=New Products Added
-Menu.PaymentReport=Payments
-Menu.Payments=Payments
-Menu.PerformanceReport=Performance
-Menu.PresenceManagement=Presence Management
-Menu.Printer=Printers
-Menu.ProductCatalog=Product Catalogue (List)
-Menu.ProductLabels=Product Labels
-Menu.ProductSales=Product Sales
-Menu.ProductCategorySalesPieChart=Category Pie
-Menu.Products=Products
-Menu.ProductList=Product List
-Menu.ProductsWarehouse=Product Location
-Menu.ProductPacks=Product Packs
-Menu.StockChanges=Stock Changes
-Menu.StockChangesReport=Stock Changes Report
-Menu.Promotions=Promotions
-Menu.PromotionsReport=Promotions Report
-
-Menu.ReportTaxes=Tax: Summary
-Menu.Reports=Reports
-Menu.Resetpickup=Reset pickup Counter
-Menu.Resources=Resources
-Menu.Roles=Roles
-Menu.SaleCatalog=Product Catalogue (Image)
-Menu.SaleTaxes=Tax: Sales
-Menu.SalesByCustomer=Sales By Customer
-Menu.SalesChart=Sales
-Menu.SalesManagement=Sales
-Menu.SalesManagement.Reports=Reports
-Menu.SalesManagement.Charts=Charts
-Menu.SalesProfit=Product Sales: Profit
-Menu.ShelfEdgeLabels=Labels: Shelf-Edge Labels
-Menu.StockDiary=Stock Diary
-Menu.StockManagement=Stock
-Menu.StockManagement.Edit=Maintenance
-Menu.StockManagement.Reports=Reports
-Menu.StockMovement=Stock Movement
-Menu.System=System
-Menu.Tables=Tables
-Menu.TaxCategories=Tax Categories
-Menu.TaxCatSales=Tax: Category Sales
-Menu.TaxCustCategories=Customer Tax Categories
-Menu.Taxes=Taxes
-Menu.ThirdParties=Suppliers
-Menu.ThirdPartiesManagement=Supplier Management
-Menu.Ticket=Sales
-Menu.TicketEdit=Edit Sales
-Menu.TicketRefund=Refunds
-Menu.TimeSeriesProduct=Product Time Series
-Menu.Tools=Tools
-Menu.Top10Sales=Top 10 Sales
-Menu.Update= Manual Database Update
-Menu.UpdatedPrices= Price Changes
-Menu.UserSells=Sales by User
-Menu.Users=Users
-Menu.UsersReport=Users
-Menu.Utilities=Utilities
-Menu.UtilityOptions=Utilities Options
-Printer.Null=Printer Not Available
-Printer.Screen=Screen Printer
-Printer.Serial=Ticket Printer
-Visor.Title=Chromis POS
-
-button.Discount=Discount
-button.ExecuteChart=Execute Chart
-button.NewTicket=New
-button.catalogadd=Yes
-button.catalogdel=No
-button.clean=Reset
-button.edit=Edit
-button.executefilter=Execute
-button.htmltest=Display Text
-button.linediscount=Disc' %
-button.listtickets=List
-button.memberdiscount=Member Disc
-button.migrate=Migrate Database
-button.moorings=Moorings
-button.movetable=Move
-button.newcustomer=Customer Database
-button.opendrawer=Drawer
-button.pay=Pay
-button.peoplepassword=Password
-button.print=
-button.receive=Receive
-button.refund=Refund
-button.refundall=Refund All
-button.refundit=Refund Item
-button.refundline=Refund Line
-button.refundone=Refund One
-button.reloadticket=Reload
-button.reservations=Reservations
-button.reset=Reset
-button.scale=Scale
-button.sendorder=Send Order
-button.setperson=Waiter
-button.tables=Tables
-button.test=TEST
-button.totaldiscount=Total Disc'
-caption.split=Split Receipt
-caption.tickets=Tickets
-caption.upload=Upload Product List
-database.ScriptError=Cannot execute the database creation script.
-database.ScriptNotFound=Unable to find Updater.sql script.
-database.ScriptWarning=Creation Script did not run successfully.
-database.UnableToConnect=Unable to connect with database! Check database setting in configuration
-database.UpdaterWarning=Cannot execute the database updater script.
-datebase.ResetPickup=Cannot execute pickup reset
-exception.unavailabledataset=Dataset not available
-exception.unavailablefield=Field not defined: {0}
-exception.unavailablefields=Fields not available
-filter.dbdriverlib=Driver library (*.jar,*.zip)
-form.customertitle=Customer List
-form.productslist=Product List
-form.selectprintertitle=Select Printer
-form.tickettitle=Ticket List
-label.CatalogueNo=Excluded
-label.CatalogueStatus=In Catalogue?
-label.CatalogueStatusNo=Not In Catalogue
-label.CatalogueStatusYes=In Catalogue
-label.CatalogueYes=Included
-label.Closing1=Cash Closed: Export
-label.Infopanel=Hide Footer Status Bar
-label.LoadError=Error trying to show this functionality
-label.SCOnOff=Enable Service Charge
-label.SCRate=Service Charge Rate
-label.SCRestaurant=Restaurant mode only?
-label.SCZero=%
-label.SChargepanel=Service Charge
-label.Transactions=Transactions
-label.address=Address Line 1
-label.address2=Address Line 2
-label.addsplitpayment=Add Split Payment
-label.all=All
-label.attribute=Attribute
-label.attributes=Attributes
-label.attributeset=Attribute Set
-label.autoloffrestaurant=In Restaurant mode - return to tables
-label.autolofftime=Auto LogOff after inactive time
-label.autologoffpanel=Auto LogOff
-label.autologoffzero=seconds, 0 = No timed LogOff
-label.autologonoff=Auto LogOff after Sale
-label.btndisplay=Button Display Text
-label.bybarcode=By Barcode
-label.bycustomer=By Customer
-label.bydates=By Date
-label.byform=By Form
-label.byproduct=By Product
-label.byreason=By Reason
-label.bywarehouse=By Location
-label.card=Card
-label.cardexpdate=Expiry Date
-label.cardholder=Holder's Name
-label.cardnumber=Card Number
-label.cascade=Cascade
-label.catid=ID
-label.catimage=Image
-label.catname=Category
-label.certificatepath=Secret Key
-label.certificatepwd=Account ID
-label.city=Town/City
-label.closeoptions=Close Options
-label.commerceid=Commerce ID
-label.commercepwd=Commerce P/wd
-label.commercesign=Commerce Sign
-label.companyFax=Fax number
-label.companyaddr1=Street
-label.companyaddr2=Address line2
-label.companyaddr3=Town
-label.companyaddr4=PostCode
-label.companyemail=Email Address
-label.companyname=Company Name
-label.companytax=VAT number
-label.companytelephone=Phone 1
-label.companywww=Web site
-label.configreceipt=Receipt Setup
-label.contact=Contact
-label.country=Country
-label.csvbad=Bad Price
-label.csvclearlog=Clear Import Log
-label.csvdelimit=Separator
-label.csvenableclear=Enable Clear Import Button
-label.csvfile=File
-label.csvimpostbtn=Import CSV
-label.csvmissing=Missing Data
-label.csvnewproducts=New Products
-label.csvpriceupdated=Prices Updated
-label.csvread=Read Header
-label.csvrecordsfound=Records Found
-label.csvresetimport=Reset Import Data
-label.csvsellingintax=Sell Price includes Tax?
-label.curdate=Debt Date
-label.curdebt=Current Debt
-label.currency=Currency
-label.currencybutton=HidePayments text overlay
-label.customer=Customer
-label.customer_export=Customer Export List
-label.customer_list=Customer List
-label.custtaxcategory=Customer Tax Category
-label.cvsbadcats=Bad Categories
-label.cvsinvalid=Invalid Products
-label.cvsnotchanged=Not Changed
-label.date=Date
-label.datestitle=Dates
-label.datetime=Date Time
-label.dbdriverlib=Driver Library
-label.debt=Debt
-label.deletesplitpayment=Delete Split Payment
-label.display=Display
-label.double=Double
-label.dutyid=ID
-label.dutyname=Tax Name
-label.dutyrate=Rate
-label.editline=Edit Line
-label.email=email
-label.epm.employee=Employee
-label.epm.employee.id=Employee ID
-label.epm.enddate=End Date
-label.epm.notes=Notes
-label.epm.startdate=Start Date
-label.epm.visible=Visible
-label.fax=Fax
-label.firstname=First Name
-label.floorid=ID
-label.floorname=Floor
-label.fontcolour=Text Colour
-label.fontexample=Display TWO LINES ON YOUR BUTTON
-label.fontitalic=Italic Text
-label.fontsize=SMALL TEXT
-label.fontsizelarge=Large Text
-label.fontsizesmall=Font Size: small
-label.fontweight=Bold Text
-label.general=General
-label.grossprofit=Gross Profit
-label.image=Image
-label.inputamount=Input box above keypad
-label.integer=Integer
-label.item=Item
-label.item2=Description
-label.javapos.drawer=Drawer
-label.javapos.printer=Printer
-label.lastname=Last Name
-label.lindediscount=Disc' %
-label.locale=Locale
-label.location=Address
-label.locationaddress=Address
-label.locationid=ID
-label.locationname=Name
-label.looknfeel=Skin
-label.loyaltycardnumber=Card Number
-label.loyaltyproducts=Loyalty details
-label.machinedisplayconn=Mode
-label.machinedisplayport=Port
-label.machineprinterport=Port
-label.magcardreader=Mag Card Reader
-label.mandatory=Mandatory
-label.margin=Margin
-label.marine=Use Marina option
-label.maxdebt=Credit Limit
-label.maximum=Maximum
-label.merchantcode=Merchant Code
-label.minimum=Minimum
-label.money=Total
-
-label.packsinstock=In stock
-label.packof= packs of
-label.packstosplit=Packs to split
-label.productinpack=Product in pack
-label.split=Split
-
-label.mooringcreatebtn=Create Ticket
-label.mooringscreatefor=Create ticket for
-label.name=Name
-label.nocashsales=No Sale - Drawer Openings
-label.notes=Notes
-label.noticketstoclose=No Bills to Close
-label.nullcategory=(No Category)
-label.order=Order
-label.passwordnew=New Password
-label.passwordold=Old Password
-label.passwordrepeat=Repeat Password
-label.paymentdate=Date
-label.paymentgateway=Payment Gateway
-label.paymentnote=Notes
-label.paymentreason=Reason
-label.paymentstitle=Tickets Summary
-label.paymenttestmode=Test Mode
-label.paymenttotal=Amount
-label.peopleimage=Image
-label.peoplename=Name
-label.peoplevisible=Visible
-label.percent=Percent
-label.phone=Telephone
-label.phone2=Mobile Phone
-label.photo=Photo
-label.pickupcodesize=Length of Pickup Number
-label.placefloor=Floor
-label.placeid=ID
-label.placename=Place
-label.placeposition=Position
-label.postal=Zip/PostCode
-label.price=Price
-label.pricetax=Price + Taxes
-label.pricewith00=Use 00 keypad button
-label.printtokitchen=Print to Remote Printer
-label.prodaux=Auxiliary (Modifier)?
-label.prodbarcode=Barcode
-label.prodbuttonhtml=Sales screen Button HTML
-label.prodcategory=Category
-label.prodcost=Cost
-label.proddefaultcategory=Default Cat'
-label.prodgeneral=General
-label.prodincatalog=Include Catalogue?
-label.prodminmax=Minimum and Maximum product levels are maintained in Product \u000aLocation along with Units sold
-label.prodname=Name
-label.prodorder=Order in Catalogue
-label.prodpricebuy=Buy Price
-label.prodpricesell=Sell Price
-label.prodpriceselltax=Sell Price + Tax
-label.prodproperties=Properties
-label.prodref=Reference
-label.prodscale=Scale
-label.prodstock=Stock
-label.prodstockcost=Stock Cost by Year
-label.prodstockmax=Maximum Level
-label.prodstocksec=Minimum Level
-label.prodstockvol=Stock Volume
-label.prodtaxcode=Tax
-label.producthtmlguide=\u000a
You can customise the Sales screen Product buttons here. \u000aIf you have even a little HTML knowlege you're more than halfway there!
\u000a
Hover over the text to your right to see the HTML code for the effect you want on your Button
-label.productreceipt=Receipt Required for Warranty
-label.produnits=Units
-label.prodvaluebuy=Buy Value
-label.prodvaluesell=Sell Value
-label.prodvolume=Volume
-label.properties=Properties
-label.receiptprint=Receipt Print Off
-label.receiptprinter=Receipt Printer
-label.recorddeleted=(Record Deleted)
-label.recordeof=(No Records)
-label.recordnew=(New Record)
-label.refunds=Refunds
-label.region=State/County
-label.remainingcash=Remaining
-label.reportsprinter=Reports Printer
-label.resetpickup=Reset Pickup Counter
-label.resname=Resource
-label.restaurantcustomer=Receiving Customer {0}. Select an empty table.
-label.restaurantmove=Moving table {0}. Select another Table or the original Table
-label.role=Role
-label.roletabldescription=Desc
-label.roletableallowed=Allowed
-label.roletableclass=Class
-label.roletabledescription=Description
-label.sales=Sales
-label.salestitle=Sales
-label.scale=Scale
-label.scaleinput=Enter Weight
-label.scanner=Scanner
-label.search=Search
-label.searchkey=Search Key
-label.sequence=Sequence
-label.sha=SHA
-label.splitpayment=Split Payment
-label.startuplogo=Logo
-label.startuppanel=Start Up Screen
-label.startuptext=Text
-label.stockdate=Date
-label.stockproduct=Product
-label.stockreason=Reason
-label.stocktaker=Entered by
-label.stockunits=In Stock
-label.storename=URL
-label.subcategorytitle=Display name in panel
-label.subtotalcash=Subtotal
-label.table=Table
-label.tabledisplayoptions=Table Display
-label.tableshowcustomerdetails=Show Customer details on table
-label.tableshowwaiterdetails=Show Waiter detail on table
-label.tax=Taxes
-label.taxcash=Tax
-label.taxcategory=Tax Category
-label.taxes=Taxes
-label.taxid=Account ID
-label.taxincluded=Set Tax Included on startup
-label.taxparent=Parent Tax
-label.terminal=Terminal
-label.textclourtablename=Table Name text colour
-label.textcolourcustomer=Customer text colour
-label.textcolourwaiter=Waiter text colour
-label.texttip=Text Tip Message
-label.ticketid=Ticket #
-label.time=Time
-label.totalcash=Total
-label.totalnet=Net
-label.totaltax=Taxes
-label.totaldiscount=Total Disc'
-label.type=Type
-label.units=Units
-label.units2=Quantity
-label.uploadingproducts=Uploading Products. Please wait...
-label.user=User
-label.value=Value
-label.value2=Price
-label.variableprice=Variable Price Product
-label.visible=Visible
-label.warehouse=Location
-
-message.BadPassword=Invalid Password. Please Retry
-message.CannotMove=Unable to Move to Record
-message.DBDefault=
The Default database shipped with Chromis POS is Apache Derby Embedded. It is intended for stand-alone, single-user, low-volume transaction installs only.
If you need multiple terminals to connect to a central database then select from the Database dropdown list above.
If you have selected an alternative database then you must ensure it is installed and configured correctly before trying to connect Chromis POS
More information can be found on the Chromis web site
-message.at=at
-message.breakoverandcheckedin='s Break is over and Checked In at
-message.breakoverandcheckedout='s break is over and Checked Out at
-message.cannotcalculatetaxes=Unable to calculate Receipt taxes.\u000aOne or more Products Taxes is not configured properly
-message.cannotchangepassword=Cannot change Password
-message.cannotcheckin=Cannot Check In
-message.cannotcheckout=Cannot Check Out
-message.cannotclosecash=Cannot Close Cash
-message.cannotdeleteconfig=Config' file cannot be Deleted
-message.cannotexecute=Unable to execute action
-message.cannotfillchart=Unable to Load Chart Data
-message.cannotfillreport=Unable to load Report Data
-message.cannotfindattributes=Attributes for this Product have not been set
-message.cannotfindcustomer=Cannot find Customer data
-message.cannotfindemployee=Cannot find employee
-message.cannotloadlists=Cannot load list data
-message.cannotloadreport=Unable to Load Report Definition
-message.cannotloadreportdata=Unable to Load Report Data
-message.cannotloadresourcedata=Unable to Load Report Resources
-message.cannotloadticket=Unable to load the receipt
-message.cannotprint=Unable to Print
-message.cannotprintline=Unable to Print Line
-message.cannotprintticket=Unable to Print Receipt
-message.cannotsaveconfig=Unable to Save Config' file
-message.cannotsaveinventorydata=Unable to save Inventory data
-message.cardnew=Card value will change. Do you want to continue?
-message.cardremove=Card value will be removed. Do you want to continue?
-message.changepassworddistinct=Confirm Password
-message.changeserver=Change current Server is in Development
-message.checkedin=has Checked In at
-message.checkedout=has Checked Out at
-message.closecashok=Cash Closed OK
-message.configfactory=Are you sure you want to Restore Factory Values?
-message.configrestore=Are you sure you want to Undo Changes?
-message.createdatabase=A working database cannot be detected. A default database will be created. Do you want to continue?
-message.createdatabasejl=New database information needs to be created for John L changes. This will now be done. Do you want to continue? If not, you will be unable to use the system.
-message.customerdebtexceded=Customer Credit Limit exceeded
-
-message.customeradd=Add Customer to this Ticket?
-message.customeraddnew=Complete Customer detail and Save to add to this Ticket?
-message.customerassign=Assign Customer to this Ticket?
-message.customerchange=Change Customer for this Ticket?
-message.customerchangeyn=Are you sure you want to change Customer for this Ticket?
-message.customercheck=Some text in the Search Key field is required
-message.customerclear=Are you sure? Cancel will clear Customer from Ticket.
-
-message.databaseconnectionerror=Unable to connect to database: Database not available
-message.databasedrivererror=Unable to connect to database: Database driver not found
-message.databasenotsupported=Database "{0}" not supported
-message.databasesuccess=
You're Connected!
Restart Chromis POS to load your Database Connection
-message.databaseconnectsuccess=
You're Connected!
You're ready to migrate your existing Database
-message.invalidenddate=End Date cannot be set before System or Start Date
-message.invalidstartdate=Start Date cannot be before System Date
-message.leavecontrol=is on leave. To check In: contact your Manager to Cancel leave
-message.leavefor=left for
-message.mergetable=Merge Tables
-message.mergetablequestion=This will Merge tables. Are you sure you want to do this?
-message.migratenotsupported=Database Migration type not supported
-message.nigratemessage=Database Migration
-message.nocard=User Card not found. Please Retry
-message.nocardreader=Card Reader is not configured
-message.nocustomer=Customer code does not exist
-message.nocustomernodebt=The Sale is not assigned to a Customer Account.\u000aIt cannot be put on Account
-message.nopaymentgateway=Payment Gateway is not configured
-message.novprice=
Variable-price Product! Enter price then Select Product
-message.noprinters=No Printers installed
-message.noproduct=This Product Code does not exist
-message.nosaveticket=Unable to Save Sales Ticket
-message.noshift=has no previous shift
-message.notactive=Panel Load Error
-message.notexiststicket=Receipt does not exist
-message.notexiststickettitle=Receipt Message
-message.noticket=Receipt no longer exists
-message.notpermissions=You are not allowed to Execute this task
-message.noupdatescript=A database from another version has been detected. It is not possible to upgrade the database automatically. Chromis POS will exit now.
-message.noweight=Weighing has not been possible
-message.nullticket=You cannot create an empty ticket layaway! Please add something to this Sale
-message.paymentcashneg=Make the Refund. Then press OK
-message.paymenterror=Payment Transaction Error!
-message.paymenterrorunknown=Unknown Payment Transaction Error!
-message.paymentexceptionremote=Remote Payment Error!
-message.paymentexceptionservice=Payment Service exception Error!
-message.paymentfree=Free!
-message.paymentgatewayext=
Make the Card Payment. Then press OK
-message.paymentgatewayextrefund=
Make the Card Refund. Then press OK
-message.paymentgatewayswipe=Swipe the Card then press OK
-message.paymentgatewaytype=Enter Card details. Then press OK
-message.paymentnotauthorised=Transaction Not Authorised
-message.paymentrefundsnotsupported=Refunds not supported
-message.preparescanner=Prepare the ScanPal scanner to upload the Product List then press OK
-message.printererror=Unable to print Receipt
-message.probleminbreak=Error in break
-message.productnotselected=No Product selected
-message.stockchangesactioned=Stock Changes Actioned
-
-message.restartchanges=Configuration Saved successfully. Changes will be applied on next system Restart
-message.scannerfail=Product List Upload failed
-message.scannerfail2=Product List Download failed
-message.scannerok=Product List Upload successful
-message.startupText=Changing the content of the default Startup Text and not declaring that this is free software is in violation of the Free Software Foundation's GNU General Public License GPL
-message.systemclosecas=jCheckBox1
-message.systemclosecash=Move Close Cash buttons
-message.tableempty=Table is now empty
-message.tablefull=Table is now full
-message.title=Cash Register message
-message.updatedatabase=A database from a previous Chromis POS version has been detected. The database will be upgraded automatically. DATA MAY BE LOST. FIRST CREATE A BACKUP. Do you want to continue?
-message.updatedatabasejl=New database changes are required (John l changes). The database will be upgraded automatically. DATA MAY BE LOST. FIRST CREATE A BACKUP. Do you want to continue? If not, you will be unable to use the system.
-message.wannaclosecash=Are you sure you want to Close Cash?
-message.wannadelete=Are you sure you want to Delete the current Order?
-message.wannasave=Save changes before exit?
-migration.ScriptNotFound=Migration Script not Found
-migration.notvalidversion=The new database type is not supported
-migration.warning=Migration SQL Error
-migration.warningjl=Create JL features not found
-migration.warningnodefault=Create Database not found
-migration.warningnofk=Drop Foreign Key not found
-payment.title=Payment
-resource.binary=Binary
-resource.image=Image
-resource.text=Text
-rest.label.chairs=Chairs
-rest.label.customer=Customer
-rest.label.date=Booking
-rest.label.notes=Notes
-scale.invalidvalue=Scale invalid value
-scale.notdefined=Scale not Defined
-scale.weighitem=Weigh Item
-
-stock.in.movement=(In) Movement
-stock.in.purchase=(In) Purchase
-stock.in.refund=(In) Refund
-stock.out.break=(Out) Breakage
-stock.out.crossing=Crossing
-stock.out.movement=(Out) Movement
-stock.out.refund=(Out) Refund
-stock.out.sale=(Out) Sale
-stock.in.openpack=(In) Open Pack
-stock.out.openpack=(Out) Open Pack
-stock.in.stockchange=(In) Stock Change
-stock.out.stockchange=(Out) Stock Change
-
-tab.bank=Bank
-tab.cash=Cash
-tab.cashrefund=Refund
-tab.cheque=Cheque
-tab.chequerefund=Cheque
-tab.debt=Debt
-tab.free=Free
-tab.magcard=Card
-tab.paper=Voucher
-title.CSVImport=Status
-title.changepassword=Change Password
-title.editor=Info' message
-tooltip.fontbold=Bold
-tooltip.fontcolour=
-tooltip.fontexample=Display TWO LINES ON YOUR BUTTON
-tooltip.fontitalic=Italic Text
-tooltip.fontsize=small
-tooltip.fontsizelarge=Large
-tooltip.fontsizesmall=small
-transpayment.bank=Bank
-transpayment.cash=Cash
-transpayment.cashin=Cash (In)
-transpayment.cashout=Cash (Out)
-transpayment.cashrefund=Refund
-transpayment.cheque=Cheque
-transpayment.chequerefund=Cheque Refund
-transpayment.debt=Debt
-transpayment.debtpaid=Debt Paid
-transpayment.free=Free
-transpayment.magcard=Card
-transpayment.magcardrefund=Card Refund
-transpayment.paperin=Voucher - Redeemed
-transpayment.paperout=Voucher - Bought
-label.cash=Cash
-label.Money=Money
-label.total=Total
-label.customerTotalSales=Total Sales
diff --git a/locales/English/missingdata_messages.properties b/locales/English/missingdata_messages.properties
new file mode 100644
index 00000000..8b398379
--- /dev/null
+++ b/locales/English/missingdata_messages.properties
@@ -0,0 +1,26 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+
+label.title=Missing data or Invalid Price in file
+label.reference=Reference
+label.barcode=Barcode
+label.name=Name
+label.pricebuy=Buy Price
+label.pricesell=Sell Price
+label.row=Row in file
diff --git a/locales/English/newproducts_messages.properties b/locales/English/newproducts_messages.properties
new file mode 100644
index 00000000..de9adc10
--- /dev/null
+++ b/locales/English/newproducts_messages.properties
@@ -0,0 +1,27 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+
+label.title=New Products Added
+label.reference=Reference
+label.barcode=Barcode
+label.category=Category
+label.name=Name
+label.pricebuy=Buy Price
+label.pricesell=Sell Price
+
diff --git a/locales/English/paymentreport_messages.properties b/locales/English/paymentreport_messages.properties
new file mode 100644
index 00000000..04f6bd4b
--- /dev/null
+++ b/locales/English/paymentreport_messages.properties
@@ -0,0 +1,28 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Payments
+label.printed=Printed
+label.period=Period:
+label.taxname=Tax Type
+label.ticket=Invoice No.
+label.date=Date
+label.paymentnotes=Notes
+label.paymenttype=Pay Type
+label.partialtotal=Total
+label.total=Grand Total
diff --git a/locales/English/people_messages.properties b/locales/English/people_messages.properties
new file mode 100644
index 00000000..8d247e3a
--- /dev/null
+++ b/locales/English/people_messages.properties
@@ -0,0 +1,22 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+
+
+label.title=Users
+label.printed=Printed
diff --git a/locales/English/performancereport_messages.properties b/locales/English/performancereport_messages.properties
new file mode 100644
index 00000000..030a6cf2
--- /dev/null
+++ b/locales/English/performancereport_messages.properties
@@ -0,0 +1,26 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Performance Report
+label.printed=Printed
+label.period=Period
+label.user=User
+label.startdate=Start Date
+label.enddate=End Date
+label.cash=Cash Value
+label.total=Total:
diff --git a/locales/English/piesalescat_messages.properties b/locales/English/piesalescat_messages.properties
new file mode 100644
index 00000000..c2825430
--- /dev/null
+++ b/locales/English/piesalescat_messages.properties
@@ -0,0 +1,24 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Sales by Product Category
+label.printed=Printed
+label.period=Period:
+label.nocategory=(no Category defined)
+label.pietitleunit=Sales Qty Volume
+label.pietitlecost=Sales Cost Value
diff --git a/locales/English/productlabels_messages.properties b/locales/English/productlabels_messages.properties
new file mode 100644
index 00000000..c3edf851
--- /dev/null
+++ b/locales/English/productlabels_messages.properties
@@ -0,0 +1,21 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+
+label.title=Product Labels
+label.printed=Printed
\ No newline at end of file
diff --git a/locales/English/products_messages.properties b/locales/English/products_messages.properties
new file mode 100644
index 00000000..da5107fc
--- /dev/null
+++ b/locales/English/products_messages.properties
@@ -0,0 +1,28 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+
+label.title=Products
+label.printed=Printed
+label.ref=Ref.
+label.name=Name
+label.cost=Cost
+label.price=Price Nett
+label.taxname=Tax
+label.taxrate=Tax Rate
+label.pricetax=Price Gross
diff --git a/locales/English/productsales_messages.properties b/locales/English/productsales_messages.properties
new file mode 100644
index 00000000..c2296051
--- /dev/null
+++ b/locales/English/productsales_messages.properties
@@ -0,0 +1,24 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+
+label.title=Product Sales: Units
+label.printed=Printed
+label.period=Period:
+label.units=Units
+label.total=Total
diff --git a/locales/English/productsalesprofit_messages.properties b/locales/English/productsalesprofit_messages.properties
new file mode 100644
index 00000000..c8ed2b55
--- /dev/null
+++ b/locales/English/productsalesprofit_messages.properties
@@ -0,0 +1,33 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Product Sales: Profit
+label.printed=Printed
+label.period=Period
+label.reference=Reference
+label.ticket=Ticket No.
+label.date=Date
+label.name=Product Name
+label.pricebuy=Buy
+label.pricesell=Sell
+label.soldunits=Units
+label.costvalue=Cost Value
+label.expectedsalesvalue=Expected Sales Value
+label.actualsalesvalue=Actual Sales Value
+label.expectedprofit=Expected Profit
+label.actualprofit=Actual Profit
\ No newline at end of file
diff --git a/locales/English/productscatalog_messages.properties b/locales/English/productscatalog_messages.properties
new file mode 100644
index 00000000..69872dc9
--- /dev/null
+++ b/locales/English/productscatalog_messages.properties
@@ -0,0 +1,28 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+
+label.title=Product Catalogue
+label.printed=Printed
+label.ref=Ref.
+label.name=Name
+label.cost=Cost
+label.price=Price Nett
+label.taxname=Tax
+label.taxrate=(No Tax Rate found)
+label.pricetax=Price Gross
diff --git a/locales/English/reports/uk/chromis/reports/badprice_messages.properties b/locales/English/reports/uk/chromis/reports/badprice_messages.properties
deleted file mode 100644
index ac4e18b8..00000000
--- a/locales/English/reports/uk/chromis/reports/badprice_messages.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-
-
-label.title=New Products Added
-label.reference=Reference
-label.barcode=Barcode
-label.name=Name
-label.pricebuy=Buy Price
-label.pricesell=Sell Price
-
diff --git a/locales/English/reports/uk/chromis/reports/barcodesheet_messages.properties b/locales/English/reports/uk/chromis/reports/barcodesheet_messages.properties
deleted file mode 100644
index 0d2ff526..00000000
--- a/locales/English/reports/uk/chromis/reports/barcodesheet_messages.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Barcode Sheet
diff --git a/locales/English/reports/uk/chromis/reports/cashflow_messages.properties b/locales/English/reports/uk/chromis/reports/cashflow_messages.properties
deleted file mode 100644
index d04d2299..00000000
--- a/locales/English/reports/uk/chromis/reports/cashflow_messages.properties
+++ /dev/null
@@ -1,41 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Cash-Flow
-label.noreference=
-label.noproduct=(no sales)
-label.printed=Printed
-label.period=Period:
-label.payment=Payment
-label.sum=Amount
-label.total=Grand Total
-
-transpayment.cash=Cash
-transpayment.magcard=Card
-transpayment.cashrefund=Refund
-transpayment.magcardrefund=Card Refund
-transpayment.cheque=Cheque
-transpayment.chequerefund=Cheque Refund
-transpayment.cashin=(in) Cash
-transpayment.cashout=(out) Cash
-transpayment.free=Free
-transpayment.ticket=Ticket
-transpayment.paperin=Note Input
-transpayment.paperout=Note Output
-transpayment.debt=Debt
-transpayment.debtpaid=Debt Paid
\ No newline at end of file
diff --git a/locales/English/reports/uk/chromis/reports/cashregisterlog_messages.properties b/locales/English/reports/uk/chromis/reports/cashregisterlog_messages.properties
deleted file mode 100644
index 6ab7cf3a..00000000
--- a/locales/English/reports/uk/chromis/reports/cashregisterlog_messages.properties
+++ /dev/null
@@ -1,44 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Transaction Log
-label.noreference=
-label.noproduct=(no sales)
-label.printed=Printed
-label.date=Date
-label.ticket=Ticket no
-label.sum=Sum
-label.customer=Customer
-label.payment=Payment
-label.period=Period:
-label.total=Grand Total
-
-transpayment.cash=Cash
-transpayment.magcard=Card
-transpayment.cashrefund=Refund
-transpayment.magcardrefund=Card Refund
-transpayment.cheque=Cheque
-transpayment.chequerefund=Cheque Refund
-transpayment.cashin=(in) Cash
-transpayment.cashout=(out) Cash
-transpayment.free=Free
-transpayment.ticket=Ticket
-transpayment.paperin=Note Input
-transpayment.paperout=Note Output
-transpayment.debt=Debt
-transpayment.debtpaid=Debt Paid
\ No newline at end of file
diff --git a/locales/English/reports/uk/chromis/reports/categorysales_messages.properties b/locales/English/reports/uk/chromis/reports/categorysales_messages.properties
deleted file mode 100644
index 5cda9641..00000000
--- a/locales/English/reports/uk/chromis/reports/categorysales_messages.properties
+++ /dev/null
@@ -1,29 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.catprice=Net
-label.cattax=Tax
-label.cattotal=Total
-label.disc=Disc.
-label.gross=Gross
-label.name=Category
-label.printed=Printed
-label.period=Period:
-label.qty=Qty
-label.title=Category Sales
-label.total=Grand Total
diff --git a/locales/English/reports/uk/chromis/reports/chartsales_messages.properties b/locales/English/reports/uk/chromis/reports/chartsales_messages.properties
deleted file mode 100644
index 3fcf2347..00000000
--- a/locales/English/reports/uk/chromis/reports/chartsales_messages.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Sales Chart
-label.printed=Printed
-label.period=Period:
-label.axisx=Sales
-label.axisy=Quantity
diff --git a/locales/English/reports/uk/chromis/reports/closedpos_messages.properties b/locales/English/reports/uk/chromis/reports/closedpos_messages.properties
deleted file mode 100644
index 9be89297..00000000
--- a/locales/English/reports/uk/chromis/reports/closedpos_messages.properties
+++ /dev/null
@@ -1,44 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Cash Closed
-label.closedate=Period
-label.partialtotal=Sequence Total
-label.total=Grand Total
-label.partialtax=Taxes
-label.partialsubtotal=Subtotal
-label.tax=Taxes
-label.terminaltotal=Terminal Total
-label.subtotal=Subtotal
-label.period=Period:
-label.printed=Printed
-transpayment.cash=Cash
-transpayment.magcard=Card
-transpayment.cashrefund=Refund
-transpayment.magcardrefund=Card Refund
-transpayment.cheque=Cheque
-transpayment.chequerefund=Cheque Refund
-transpayment.cashin=(in) Cash
-transpayment.cashout=(out) Cash
-transpayment.free=Free
-transpayment.ticket=Ticket
-transpayment.paperin=Note Input
-transpayment.paperout=Note Output
-transpayment.debt=Debt
-transpayment.debtpaid=Debt Paid
-label.sequence=Sequence
diff --git a/locales/English/reports/uk/chromis/reports/closedproducts_messages.properties b/locales/English/reports/uk/chromis/reports/closedproducts_messages.properties
deleted file mode 100644
index d611b940..00000000
--- a/locales/English/reports/uk/chromis/reports/closedproducts_messages.properties
+++ /dev/null
@@ -1,29 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Product Sales
-label.printed=Printed
-label.period=Period:
-label.noreference=(no Reference defined)
-label.noproduct=(no Product defined)
-label.host=Terminal
-label.closeddate=Date
-label.units=Units
-label.partialtotal=Total
-label.total=Total by Product
diff --git a/locales/English/reports/uk/chromis/reports/customers_messages.properties b/locales/English/reports/uk/chromis/reports/customers_messages.properties
deleted file mode 100644
index 2b18cb1a..00000000
--- a/locales/English/reports/uk/chromis/reports/customers_messages.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Customers
-label.printed=Printed
-label.maxdebt=Max Debt
-label.curdebt=Debt current
-label.curdate=Debt date
-label.notes=Notes
-label.taxid=Account ID
diff --git a/locales/English/reports/uk/chromis/reports/customersdiary_messages.properties b/locales/English/reports/uk/chromis/reports/customersdiary_messages.properties
deleted file mode 100644
index 3c1881bc..00000000
--- a/locales/English/reports/uk/chromis/reports/customersdiary_messages.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Customers Diary
-
-label.date=Date
-label.period=Period:
-label.printed=Printed
-label.ticket=Ticket
-label.payment=Payment
-label.total=Total
diff --git a/locales/English/reports/uk/chromis/reports/dailypresence_messages.properties b/locales/English/reports/uk/chromis/reports/dailypresence_messages.properties
deleted file mode 100644
index 49681c15..00000000
--- a/locales/English/reports/uk/chromis/reports/dailypresence_messages.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.end=End Shift
-label.name=Name
-label.period=Period:
-label.printed=Printed
-label.start=Start Shift
-label.title=Daily Presence
-label.total=Total Hours
\ No newline at end of file
diff --git a/locales/English/reports/uk/chromis/reports/dailyschedule_messages.properties b/locales/English/reports/uk/chromis/reports/dailyschedule_messages.properties
deleted file mode 100644
index 154ce3d8..00000000
--- a/locales/English/reports/uk/chromis/reports/dailyschedule_messages.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.end=End Leave
-label.name=Name
-label.period=Period:
-label.printed=Printed
-label.start=Start Leave
-label.title=Daily Schedule
-label.total=Total Days
diff --git a/locales/English/reports/uk/chromis/reports/extendedcashregisterlog_messages.properties b/locales/English/reports/uk/chromis/reports/extendedcashregisterlog_messages.properties
deleted file mode 100644
index 89eb4d46..00000000
--- a/locales/English/reports/uk/chromis/reports/extendedcashregisterlog_messages.properties
+++ /dev/null
@@ -1,44 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Transaction Log: Extended
-label.noreference=
-label.noproduct=(no sales)
-label.printed=Printed:
-label.period=Period:
-label.date=Date
-label.ticket=Ticket No.
-label.sum=Sum
-label.customer=Customer
-label.payment=Payment
-label.total=Grand Total
-
-transpayment.cash=Cash
-transpayment.magcard=Card
-transpayment.cashrefund=Cash Refund
-transpayment.magcardrefund=Card Refund
-transpayment.cheque=Cheque
-transpayment.chequerefund=Cheque Refund
-transpayment.cashin=(in) Cash
-transpayment.cashout=(out) Cash
-transpayment.free=Free
-transpayment.ticket=Ticket
-transpayment.paperin=Note Input
-transpayment.paperout=Note Output
-transpayment.debt=Debt
-transpayment.debtpaid=Debt Paid
diff --git a/locales/English/reports/uk/chromis/reports/extproducts_messages.properties b/locales/English/reports/uk/chromis/reports/extproducts_messages.properties
deleted file mode 100644
index f58107b3..00000000
--- a/locales/English/reports/uk/chromis/reports/extproducts_messages.properties
+++ /dev/null
@@ -1,34 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.meanprice=Mean Price
-label.name=Category
-label.notaxid=
-label.nocustomer=(No Customer defined)
-label.nocategory=(No Category defined)
-label.noreferency=
-label.noproduct=(No Product defined)
-label.partialtotal=Total
-label.period=Period:
-label.printed=Printed
-label.productname=Product
-label.sumtotal=Total by Sales
-label.title=Product Sales: Customer
-label.total=Total by Customer
-label.units=Units
-
diff --git a/locales/English/reports/uk/chromis/reports/invalidcategory_messages.properties b/locales/English/reports/uk/chromis/reports/invalidcategory_messages.properties
deleted file mode 100644
index 8980782f..00000000
--- a/locales/English/reports/uk/chromis/reports/invalidcategory_messages.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Invalid Category Data
-label.reference=Reference
-label.barcode=Barcode
-label.name=Name
-label.category=Bad Category
-label.csverror=Error message
-label.row=Row in file
-
diff --git a/locales/English/reports/uk/chromis/reports/invaliddata_messages.properties b/locales/English/reports/uk/chromis/reports/invaliddata_messages.properties
deleted file mode 100644
index 06c25d28..00000000
--- a/locales/English/reports/uk/chromis/reports/invaliddata_messages.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Invalid product data
-label.reference=Reference
-label.barcode=Barcode
-label.name=Name
-label.csverror=Error message
-label.row=Row in file
-
diff --git a/locales/English/reports/uk/chromis/reports/inventory_messages.properties b/locales/English/reports/uk/chromis/reports/inventory_messages.properties
deleted file mode 100644
index 64483601..00000000
--- a/locales/English/reports/uk/chromis/reports/inventory_messages.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Inventory: Location and Category
-label.printed=Printed
-label.ref=Ref.
-label.name=Name
-label.sec=Minimum
-label.units=Units
-label.valuebuy=Cost Value
-label.valuesell=Retail Value
-label.valuevolume=Volume
-label.valuecost=Cost
-label.max=Maximum
-label.location=Location :
diff --git a/locales/English/reports/uk/chromis/reports/inventoryb_messages.properties b/locales/English/reports/uk/chromis/reports/inventoryb_messages.properties
deleted file mode 100644
index e566caa1..00000000
--- a/locales/English/reports/uk/chromis/reports/inventoryb_messages.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-
-label.title=Inventory: Current
-label.titleb=Inventory: Broken
-label.ref=Ref.
-label.name=Name
-label.printed=Printed
-label.sec=Minimum
-label.units=Units
-label.max=Maximum
diff --git a/locales/English/reports/uk/chromis/reports/inventorydiff_messages.properties b/locales/English/reports/uk/chromis/reports/inventorydiff_messages.properties
deleted file mode 100644
index 12a66ee3..00000000
--- a/locales/English/reports/uk/chromis/reports/inventorydiff_messages.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-.
-
-
-label.title=Inventory: Difference
-label.printed=Printed
-label.period=Period:
-label.ref=Ref.
-label.name=Name
-label.in=In
-label.out=Out
-label.diff=Difference
-label.sumin=Total In
-label.sumout=Total Out
-label.sumdiff=Total Difference
diff --git a/locales/English/reports/uk/chromis/reports/inventorydiffdetail_messages.properties b/locales/English/reports/uk/chromis/reports/inventorydiffdetail_messages.properties
deleted file mode 100644
index 6b9bf5cb..00000000
--- a/locales/English/reports/uk/chromis/reports/inventorydiffdetail_messages.properties
+++ /dev/null
@@ -1,30 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Inventory: Difference Detail
-label.printed=Printed
-label.period=Period
-label.ref=Ref.
-label.name=Name
-label.in=In
-label.out=Out
-label.diff=Difference
-label.sumin=Total In
-label.sumout=Total Out
-label.sumdiff=Total Difference
diff --git a/locales/English/reports/uk/chromis/reports/inventorylistdetail_messages.properties b/locales/English/reports/uk/chromis/reports/inventorylistdetail_messages.properties
deleted file mode 100644
index 410d81fa..00000000
--- a/locales/English/reports/uk/chromis/reports/inventorylistdetail_messages.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-
-label.title= Inventory: List Detail
-label.printed: Printed
-label.ref=Ref.
-label.name=Name
-label.sec=Minimum
-label.units=Units
-label.max=Maximum
diff --git a/locales/English/reports/uk/chromis/reports/missingdata_messages.properties b/locales/English/reports/uk/chromis/reports/missingdata_messages.properties
deleted file mode 100644
index 740806d6..00000000
--- a/locales/English/reports/uk/chromis/reports/missingdata_messages.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Missing data or Invalid Price in file
-label.reference=Reference
-label.barcode=Barcode
-label.name=Name
-label.pricebuy=Buy Price
-label.pricesell=Sell Price
-label.row=Row in file
diff --git a/locales/English/reports/uk/chromis/reports/newproducts_messages.properties b/locales/English/reports/uk/chromis/reports/newproducts_messages.properties
deleted file mode 100644
index c977e7a1..00000000
--- a/locales/English/reports/uk/chromis/reports/newproducts_messages.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=New Products Added
-label.reference=Reference
-label.barcode=Barcode
-label.category=Category
-label.name=Name
-label.pricebuy=Buy Price
-label.pricesell=Sell Price
-
diff --git a/locales/English/reports/uk/chromis/reports/paymentreport_messages.properties b/locales/English/reports/uk/chromis/reports/paymentreport_messages.properties
deleted file mode 100644
index 6945b14d..00000000
--- a/locales/English/reports/uk/chromis/reports/paymentreport_messages.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Payments
-label.printed=Printed
-label.period=Period:
-label.taxname=Tax Type
-label.ticket=Invoice No.
-label.date=Date
-label.paymentnotes=Notes
-label.paymenttype=Pay Type
-label.partialtotal=Total
-label.total=Grand Total
diff --git a/locales/English/reports/uk/chromis/reports/people_messages.properties b/locales/English/reports/uk/chromis/reports/people_messages.properties
deleted file mode 100644
index 893c544b..00000000
--- a/locales/English/reports/uk/chromis/reports/people_messages.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-
-label.title=Users
-label.printed=Printed
diff --git a/locales/English/reports/uk/chromis/reports/performancereport_messages.properties b/locales/English/reports/uk/chromis/reports/performancereport_messages.properties
deleted file mode 100644
index c9dc0bc8..00000000
--- a/locales/English/reports/uk/chromis/reports/performancereport_messages.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Performance Report
-label.printed=Printed
-label.period=Period
-label.user=User
-label.startdate=Start Date
-label.enddate=End Date
-label.cash=Cash Value
-label.total=Total:
diff --git a/locales/English/reports/uk/chromis/reports/piesalescat_messages.properties b/locales/English/reports/uk/chromis/reports/piesalescat_messages.properties
deleted file mode 100644
index 255e3389..00000000
--- a/locales/English/reports/uk/chromis/reports/piesalescat_messages.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Sales by Product Category
-label.printed=Printed
-label.period=Period:
-label.nocategory=(no Category defined)
-label.pietitleunit=Sales Qty Volume
-label.pietitlecost=Sales Cost Value
diff --git a/locales/English/reports/uk/chromis/reports/productlabels_messages.properties b/locales/English/reports/uk/chromis/reports/productlabels_messages.properties
deleted file mode 100644
index 98c34142..00000000
--- a/locales/English/reports/uk/chromis/reports/productlabels_messages.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Product Labels
-label.printed=Printed
\ No newline at end of file
diff --git a/locales/English/reports/uk/chromis/reports/products_messages.properties b/locales/English/reports/uk/chromis/reports/products_messages.properties
deleted file mode 100644
index 573d8193..00000000
--- a/locales/English/reports/uk/chromis/reports/products_messages.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Products
-label.printed=Printed
-label.ref=Ref.
-label.name=Name
-label.cost=Cost
-label.price=Price Nett
-label.taxname=Tax
-label.taxrate=Tax Rate
-label.pricetax=Price Gross
diff --git a/locales/English/reports/uk/chromis/reports/productsales_messages.properties b/locales/English/reports/uk/chromis/reports/productsales_messages.properties
deleted file mode 100644
index dcb1c70a..00000000
--- a/locales/English/reports/uk/chromis/reports/productsales_messages.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Product Sales: Units
-label.printed=Printed
-label.period=Period:
-label.units=Units
-label.total=Total
diff --git a/locales/English/reports/uk/chromis/reports/productsalesprofit_messages.properties b/locales/English/reports/uk/chromis/reports/productsalesprofit_messages.properties
deleted file mode 100644
index e9ac3083..00000000
--- a/locales/English/reports/uk/chromis/reports/productsalesprofit_messages.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Product Sales: Profit
-label.printed=Printed
-label.period=Period
-label.reference=Reference
-label.ticket=Ticket No.
-label.date=Date
-label.name=Product Name
-label.pricebuy=Buy
-label.pricesell=Sell
-label.soldunits=Units
-label.costvalue=Cost Value
-label.expectedsalesvalue=Expected Sales Value
-label.actualsalesvalue=Actual Sales Value
-label.expectedprofit=Expected Profit
-label.actualprofit=Actual Profit
\ No newline at end of file
diff --git a/locales/English/reports/uk/chromis/reports/productscatalog_messages.properties b/locales/English/reports/uk/chromis/reports/productscatalog_messages.properties
deleted file mode 100644
index 8c4b8d2d..00000000
--- a/locales/English/reports/uk/chromis/reports/productscatalog_messages.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Product Catalogue
-label.printed=Printed
-label.ref=Ref.
-label.name=Name
-label.cost=Cost
-label.price=Price Nett
-label.taxname=Tax
-label.taxrate=(No Tax Rate found)
-label.pricetax=Price Gross
diff --git a/locales/English/reports/uk/chromis/reports/salebycustomer_messages.properties b/locales/English/reports/uk/chromis/reports/salebycustomer_messages.properties
deleted file mode 100644
index 2a783fbe..00000000
--- a/locales/English/reports/uk/chromis/reports/salebycustomer_messages.properties
+++ /dev/null
@@ -1,30 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Sales by Customer
-label.printed=Printed
-label.period=Period
-label.customer=Customer
-label.date=Date
-label.ticket=Ticket No.
-label.product=Product
-label.sales=Sales
-label.units=Units
-label.ttype=Type
-label.partialtotal=Amount
-label.total=Grand Total
\ No newline at end of file
diff --git a/locales/English/reports/uk/chromis/reports/salecatalog_messages.properties b/locales/English/reports/uk/chromis/reports/salecatalog_messages.properties
deleted file mode 100644
index 1948bfd9..00000000
--- a/locales/English/reports/uk/chromis/reports/salecatalog_messages.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Product Catalogue
-label.printed=Printed
diff --git a/locales/English/reports/uk/chromis/reports/saletaxes_messages.properties b/locales/English/reports/uk/chromis/reports/saletaxes_messages.properties
deleted file mode 100644
index 087766da..00000000
--- a/locales/English/reports/uk/chromis/reports/saletaxes_messages.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Sales Taxes
-label.printed=Printed
-label.period=Period
-label.taxname=Tax Type
-label.ticket=Receipt No.
-label.date=Date
-label.paymenttype=Payment Type
-label.partialtotal=Total
-label.total=Grand Total
diff --git a/locales/English/reports/uk/chromis/reports/taxcatsales_message.properties b/locales/English/reports/uk/chromis/reports/taxcatsales_message.properties
deleted file mode 100644
index e9818608..00000000
--- a/locales/English/reports/uk/chromis/reports/taxcatsales_message.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Tax Category Sales
-label.name=Category
-label.qty=Qty
-label.catsales=Sales
-label.cattax=Tax
-label.cattotal=Total
-label.total=Grand Total
-label.printed=Printed
\ No newline at end of file
diff --git a/locales/English/reports/uk/chromis/reports/taxcatsales_messages.properties b/locales/English/reports/uk/chromis/reports/taxcatsales_messages.properties
deleted file mode 100644
index 1ce38be5..00000000
--- a/locales/English/reports/uk/chromis/reports/taxcatsales_messages.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Tax: Category Sales
-label.name=Category
-label.qty=Qty
-label.catsales=Sales
-label.cattax=Tax
-label.cattotal=Total
-label.total=Grand Total
\ No newline at end of file
diff --git a/locales/English/reports/uk/chromis/reports/taxes_messages.properties b/locales/English/reports/uk/chromis/reports/taxes_messages.properties
deleted file mode 100644
index bdaa6559..00000000
--- a/locales/English/reports/uk/chromis/reports/taxes_messages.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Tax Summary
-label.printed=Printed
-label.period=Period
-label.taxid=ID
-label.taxname=Name
-label.taxtotal=Total
-label.total=Total Tax
diff --git a/locales/English/reports/uk/chromis/reports/timeseriesproduct_messages.properties b/locales/English/reports/uk/chromis/reports/timeseriesproduct_messages.properties
deleted file mode 100644
index 0c390557..00000000
--- a/locales/English/reports/uk/chromis/reports/timeseriesproduct_messages.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Product Time Series
-label.printed=Printed
-label.period=Period:
-label.prodref=Reference
-label.prodpricebuy=Buy Price
-label.prodpricesell=Sell Price
-label.prodpriceselltax=Sell Price + Tax
-label.prodstockcost=Stock Cost by Year
-label.prodstockvol=Stock Volume
-label.taxcategory=Tax Category
-label.produnitsales=Unit Sales by Day
-label.margin=Margin
\ No newline at end of file
diff --git a/locales/English/reports/uk/chromis/reports/top10sales_messages.properties b/locales/English/reports/uk/chromis/reports/top10sales_messages.properties
deleted file mode 100644
index 917d91ba..00000000
--- a/locales/English/reports/uk/chromis/reports/top10sales_messages.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Top 10 Sales
-label.printed=Printed
-label.period=Period:
-label.units=Units
-label.subtotal=Nett
-label.taxes=Tax
-label.total=Total
-label.pricebuy=Buy
-label.pricesell=Sell
diff --git a/locales/English/reports/uk/chromis/reports/updatedprices_messages.properties b/locales/English/reports/uk/chromis/reports/updatedprices_messages.properties
deleted file mode 100644
index 7cc1393c..00000000
--- a/locales/English/reports/uk/chromis/reports/updatedprices_messages.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Price Updates
-label.printed=Printed
-label.reference=Reference
-label.barcode=Barcode
-label.name=Name
-label.pricebuy=New Buy Price
-label.pricesell=New Sell Price
-label.previousbuy=Old Buy Price
-label.previoussell=Old Sell Price
diff --git a/locales/English/reports/uk/chromis/reports/usersales_messages.properties b/locales/English/reports/uk/chromis/reports/usersales_messages.properties
deleted file mode 100644
index ede70d1d..00000000
--- a/locales/English/reports/uk/chromis/reports/usersales_messages.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=User Sales
-label.printed=Printed
-label.period=Period
-label.user=User
-label.startdate=Start Date
-label.enddate=End Date
-label.cash=Sales
-label.total=Total:
diff --git a/locales/English/salebycustomer_messages.properties b/locales/English/salebycustomer_messages.properties
new file mode 100644
index 00000000..10e41b7a
--- /dev/null
+++ b/locales/English/salebycustomer_messages.properties
@@ -0,0 +1,30 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Sales by Customer
+label.printed=Printed
+label.period=Period
+label.customer=Customer
+label.date=Date
+label.ticket=Ticket No.
+label.product=Product
+label.sales=Sales
+label.units=Units
+label.ttype=Type
+label.partialtotal=Amount
+label.total=Grand Total
\ No newline at end of file
diff --git a/locales/English/salecatalog_messages.properties b/locales/English/salecatalog_messages.properties
new file mode 100644
index 00000000..53b259dc
--- /dev/null
+++ b/locales/English/salecatalog_messages.properties
@@ -0,0 +1,20 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Product Catalogue
+label.printed=Printed
diff --git a/locales/English/saletaxes_messages.properties b/locales/English/saletaxes_messages.properties
new file mode 100644
index 00000000..72fd990e
--- /dev/null
+++ b/locales/English/saletaxes_messages.properties
@@ -0,0 +1,27 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Sales Taxes
+label.printed=Printed
+label.period=Period
+label.taxname=Tax Type
+label.ticket=Receipt No.
+label.date=Date
+label.paymenttype=Payment Type
+label.partialtotal=Total
+label.total=Grand Total
diff --git a/locales/English/taxcatsales_message.properties b/locales/English/taxcatsales_message.properties
new file mode 100644
index 00000000..de978158
--- /dev/null
+++ b/locales/English/taxcatsales_message.properties
@@ -0,0 +1,26 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Tax Category Sales
+label.name=Category
+label.qty=Qty
+label.catsales=Sales
+label.cattax=Tax
+label.cattotal=Total
+label.total=Grand Total
+label.printed=Printed
\ No newline at end of file
diff --git a/locales/English/taxcatsales_messages.properties b/locales/English/taxcatsales_messages.properties
new file mode 100644
index 00000000..6293baf3
--- /dev/null
+++ b/locales/English/taxcatsales_messages.properties
@@ -0,0 +1,25 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Tax: Category Sales
+label.name=Category
+label.qty=Qty
+label.catsales=Sales
+label.cattax=Tax
+label.cattotal=Total
+label.total=Grand Total
\ No newline at end of file
diff --git a/locales/English/taxes_messages.properties b/locales/English/taxes_messages.properties
new file mode 100644
index 00000000..01471e2c
--- /dev/null
+++ b/locales/English/taxes_messages.properties
@@ -0,0 +1,26 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+
+label.title=Tax Summary
+label.printed=Printed
+label.period=Period
+label.taxid=ID
+label.taxname=Name
+label.taxtotal=Total
+label.total=Total Tax
diff --git a/locales/English/timeseriesproduct_messages.properties b/locales/English/timeseriesproduct_messages.properties
new file mode 100644
index 00000000..670e88f2
--- /dev/null
+++ b/locales/English/timeseriesproduct_messages.properties
@@ -0,0 +1,31 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+
+label.title=Product Time Series
+label.printed=Printed
+label.period=Period:
+label.prodref=Reference
+label.prodpricebuy=Buy Price
+label.prodpricesell=Sell Price
+label.prodpriceselltax=Sell Price + Tax
+label.prodstockcost=Stock Cost by Year
+label.prodstockvol=Stock Volume
+label.taxcategory=Tax Category
+label.produnitsales=Unit Sales by Day
+label.margin=Margin
\ No newline at end of file
diff --git a/locales/English/top10sales_messages.properties b/locales/English/top10sales_messages.properties
new file mode 100644
index 00000000..07f75913
--- /dev/null
+++ b/locales/English/top10sales_messages.properties
@@ -0,0 +1,27 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Top 10 Sales
+label.printed=Printed
+label.period=Period:
+label.units=Units
+label.subtotal=Nett
+label.taxes=Tax
+label.total=Total
+label.pricebuy=Buy
+label.pricesell=Sell
diff --git a/locales/English/updatedprices_messages.properties b/locales/English/updatedprices_messages.properties
new file mode 100644
index 00000000..15cc2fc0
--- /dev/null
+++ b/locales/English/updatedprices_messages.properties
@@ -0,0 +1,27 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Price Updates
+label.printed=Printed
+label.reference=Reference
+label.barcode=Barcode
+label.name=Name
+label.pricebuy=New Buy Price
+label.pricesell=New Sell Price
+label.previousbuy=Old Buy Price
+label.previoussell=Old Sell Price
diff --git a/locales/English/usersales_messages.properties b/locales/English/usersales_messages.properties
new file mode 100644
index 00000000..bae1b4f3
--- /dev/null
+++ b/locales/English/usersales_messages.properties
@@ -0,0 +1,26 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=User Sales
+label.printed=Printed
+label.period=Period
+label.user=User
+label.startdate=Start Date
+label.enddate=End Date
+label.cash=Sales
+label.total=Total:
diff --git a/locales/Estonian/reports/uk/chromis/reports/cashflow_messages_et.properties b/locales/Estonian/cashflow_messages_et.properties
similarity index 93%
rename from locales/Estonian/reports/uk/chromis/reports/cashflow_messages_et.properties
rename to locales/Estonian/cashflow_messages_et.properties
index c32c4722..7c6d903a 100644
--- a/locales/Estonian/reports/uk/chromis/reports/cashflow_messages_et.properties
+++ b/locales/Estonian/cashflow_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/cashregisterlog_messages_et.properties b/locales/Estonian/cashregisterlog_messages_et.properties
similarity index 94%
rename from locales/Estonian/reports/uk/chromis/reports/cashregisterlog_messages_et.properties
rename to locales/Estonian/cashregisterlog_messages_et.properties
index c3b4d2f0..037f3f29 100644
--- a/locales/Estonian/reports/uk/chromis/reports/cashregisterlog_messages_et.properties
+++ b/locales/Estonian/cashregisterlog_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/categorysales_messages_et.properties b/locales/Estonian/categorysales_messages_et.properties
similarity index 91%
rename from locales/Estonian/reports/uk/chromis/reports/categorysales_messages_et.properties
rename to locales/Estonian/categorysales_messages_et.properties
index a6355bfb..e68339e6 100644
--- a/locales/Estonian/reports/uk/chromis/reports/categorysales_messages_et.properties
+++ b/locales/Estonian/categorysales_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/chartsales_messages_et.properties b/locales/Estonian/chartsales_messages_et.properties
similarity index 90%
rename from locales/Estonian/reports/uk/chromis/reports/chartsales_messages_et.properties
rename to locales/Estonian/chartsales_messages_et.properties
index 1cb5f45e..e62aa327 100644
--- a/locales/Estonian/reports/uk/chromis/reports/chartsales_messages_et.properties
+++ b/locales/Estonian/chartsales_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/closedpos_messages_et.properties b/locales/Estonian/closedpos_messages_et.properties
similarity index 93%
rename from locales/Estonian/reports/uk/chromis/reports/closedpos_messages_et.properties
rename to locales/Estonian/closedpos_messages_et.properties
index 74d43a04..e49cde39 100644
--- a/locales/Estonian/reports/uk/chromis/reports/closedpos_messages_et.properties
+++ b/locales/Estonian/closedpos_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -27,6 +27,7 @@ label.terminaltotal=Kassat\u00f6\u00f6koht kokku
label.subtotal=Maksustatav summa
label.period=Periood:
label.printed=Tr\u00fckitud
+transpayment.bank=Pank
transpayment.cash=Sularaha
transpayment.magcard=Kaardimakse
transpayment.cashrefund=Tagastus
diff --git a/locales/Estonian/reports/uk/chromis/reports/closedproducts_messages_et.properties b/locales/Estonian/closedproducts_messages_et.properties
similarity index 92%
rename from locales/Estonian/reports/uk/chromis/reports/closedproducts_messages_et.properties
rename to locales/Estonian/closedproducts_messages_et.properties
index e7b861dd..304ba134 100644
--- a/locales/Estonian/reports/uk/chromis/reports/closedproducts_messages_et.properties
+++ b/locales/Estonian/closedproducts_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/customers_messages_et.properties b/locales/Estonian/customers_messages_et.properties
similarity index 89%
rename from locales/Estonian/reports/uk/chromis/reports/customers_messages_et.properties
rename to locales/Estonian/customers_messages_et.properties
index 2e8a12a7..da4cdbc7 100644
--- a/locales/Estonian/reports/uk/chromis/reports/customers_messages_et.properties
+++ b/locales/Estonian/customers_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -23,3 +23,4 @@ label.curdebt=Hetke v\u00f5lg
label.curdate=V\u00f5la kuup\u00e4ev
label.notes=M\u00e4rkmed
label.taxid=Konto ID
+label.discount=Discount
\ No newline at end of file
diff --git a/locales/Estonian/reports/uk/chromis/reports/customersdiary_messages_et.properties b/locales/Estonian/customersdiary_messages_et.properties
similarity index 90%
rename from locales/Estonian/reports/uk/chromis/reports/customersdiary_messages_et.properties
rename to locales/Estonian/customersdiary_messages_et.properties
index f677a8b2..db3a57e0 100644
--- a/locales/Estonian/reports/uk/chromis/reports/customersdiary_messages_et.properties
+++ b/locales/Estonian/customersdiary_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/extendedcashregisterlog_messages_et.properties b/locales/Estonian/extendedcashregisterlog_messages_et.properties
similarity index 94%
rename from locales/Estonian/reports/uk/chromis/reports/extendedcashregisterlog_messages_et.properties
rename to locales/Estonian/extendedcashregisterlog_messages_et.properties
index 38825183..ad84740a 100644
--- a/locales/Estonian/reports/uk/chromis/reports/extendedcashregisterlog_messages_et.properties
+++ b/locales/Estonian/extendedcashregisterlog_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/extproducts_messages_et.properties b/locales/Estonian/extproducts_messages_et.properties
similarity index 93%
rename from locales/Estonian/reports/uk/chromis/reports/extproducts_messages_et.properties
rename to locales/Estonian/extproducts_messages_et.properties
index 05b70eb9..6deba4d1 100644
--- a/locales/Estonian/reports/uk/chromis/reports/extproducts_messages_et.properties
+++ b/locales/Estonian/extproducts_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/inventory_messages_et.properties b/locales/Estonian/inventory_messages_et.properties
similarity index 91%
rename from locales/Estonian/reports/uk/chromis/reports/inventory_messages_et.properties
rename to locales/Estonian/inventory_messages_et.properties
index abf97667..c644e4c8 100644
--- a/locales/Estonian/reports/uk/chromis/reports/inventory_messages_et.properties
+++ b/locales/Estonian/inventory_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/inventoryb_messages_et.properties b/locales/Estonian/inventoryb_messages_et.properties
similarity index 90%
rename from locales/Estonian/reports/uk/chromis/reports/inventoryb_messages_et.properties
rename to locales/Estonian/inventoryb_messages_et.properties
index 20c26779..db0350c5 100644
--- a/locales/Estonian/reports/uk/chromis/reports/inventoryb_messages_et.properties
+++ b/locales/Estonian/inventoryb_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/inventorydiff_messages_et.properties b/locales/Estonian/inventorydiff_messages_et.properties
similarity index 91%
rename from locales/Estonian/reports/uk/chromis/reports/inventorydiff_messages_et.properties
rename to locales/Estonian/inventorydiff_messages_et.properties
index c05d4d2c..e57f6bd7 100644
--- a/locales/Estonian/reports/uk/chromis/reports/inventorydiff_messages_et.properties
+++ b/locales/Estonian/inventorydiff_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/inventorydiffdetail_messages_et.properties b/locales/Estonian/inventorydiffdetail_messages_et.properties
similarity index 91%
rename from locales/Estonian/reports/uk/chromis/reports/inventorydiffdetail_messages_et.properties
rename to locales/Estonian/inventorydiffdetail_messages_et.properties
index a060f833..05729e3b 100644
--- a/locales/Estonian/reports/uk/chromis/reports/inventorydiffdetail_messages_et.properties
+++ b/locales/Estonian/inventorydiffdetail_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/inventorylistdetail_messages_et.properties b/locales/Estonian/inventorylistdetail_messages_et.properties
similarity index 91%
rename from locales/Estonian/reports/uk/chromis/reports/inventorylistdetail_messages_et.properties
rename to locales/Estonian/inventorylistdetail_messages_et.properties
index 72d4b4d5..87b56daa 100644
--- a/locales/Estonian/reports/uk/chromis/reports/inventorylistdetail_messages_et.properties
+++ b/locales/Estonian/inventorylistdetail_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/locales/beans_messages_et.properties b/locales/Estonian/locales/beans_messages_et.properties
deleted file mode 100644
index 324b63ea..00000000
--- a/locales/Estonian/locales/beans_messages_et.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-button.cancel=T\u00fchista
-button.ok=OK
-button.Today=N\u00fc\u00fcd!
-title.calendar=Vali kuup\u00e4ev
-Button.Today=N\u00fc\u00fcd!
diff --git a/locales/Estonian/locales/data_messages_et.properties b/locales/Estonian/locales/data_messages_et.properties
deleted file mode 100644
index a7301b7f..00000000
--- a/locales/Estonian/locales/data_messages_et.properties
+++ /dev/null
@@ -1,87 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-button.cancel=T\u00fchista
-button.information=Informatsioon
-button.ok=OK
-
-caption.sort=Sorteeri
-
-exception.iofile=Viga faili lugemisel.
-exception.nocompare=Oodatud QBF v\u00f5rdlus.
-exception.nodataset=Andmebaas on m\u00e4\u00e4ramata.
-exception.nofinishedfile=Lausete fail on l\u00f5petamata.
-exception.nodelete=\u00dchtki kannet ei kustutatud.
-exception.noinsert=\u00dchtki kannet ei loodud.
-exception.nonegativelimits=Negatiivsed m\u00e4\u00e4rad on keelatud.
-exception.noparamtype=Seda liiki parameetrid on keelatud.
-exception.noreadfile=Viga lausete faili lugemisel.
-exception.notnull=V\u00e4\u00e4rtus ei tohi olla null.
-exception.noupdate=\u00dchtki kannet ei uuendatud.
-exception.noupdatecount=Uuenduste loend m\u00e4\u00e4ramata.
-exception.outofbounds=V\u00e4ljub piiridest.
-exception.parserconfig=XML anal\u00fc\u00fcsija viga. Palun v\u00f5tke \u00fchendust administraatoriga.
-exception.xmlfile=Anal\u00fc\u00fcsi viga. Vigane XML fail.
-
-label.andby=ja alusel
-label.casesensitive=T\u00f5usutundlik
-label.findwhat=Mida leida
-label.imagefiles=pildifailid
-label.match=Sobivus
-label.sortby=Sortimisalus
-label.where=Kus
-
-list.anypart=Iga v\u00e4lja osa
-list.re=Tavav\u00e4ljend
-list.startfield=Esimene v\u00e4li
-list.wholefield=Terve v\u00e4li
-
-qbf.none=Mitte \u00fckski
-qbf.null=On null
-qbf.notnull=Ei ole null
-qbf.equals=V\u00f5rdub
-qbf.distinct=Iseloomulik
-qbf.greater=Suurem kui
-qbf.less=V\u00e4iksem kui
-qbf.greaterequals=\u00dauurem v\u00f5i v\u00f5rdne
-qbf.lessequals=V\u00e4iksem v\u00f5i v\u00f5rnde
-qbf.re=Jokker
-
-message.changeslost=Tehtud muudatused l\u00e4hevad kaotsi. Kas soovite j\u00e4tkata?
-message.nodelete=Ei saa m\u00e4rkida kannet kustutamiseks.
-message.nolistdata=Ei leia andmete loendit.
-message.nomove=Ei saa siirdada teisele kandele.
-message.nonew=Ei saa luua uut kannet.
-message.norecord=Ei leia kannet.
-message.noreload=Ei saa laadida andmete nimekirja.
-message.nosave=Kanne on salvestamata.
-message.nosort=Kirjutatud l\u00fchike tingimus on kehtetu.
-message.resizeimage=Valitud pilt on pildiv\u00e4ljast suurem. Kas muudame automaatselt pildi suurust?
-message.wannasave=Kas soovite salvestada muudatused enne v\u00e4ljumist? \u00dcldiselt oleks see m\u00f5istlik.
-
-sgn.caution=T\u00e4helepanu\:
-sgn.danger=Oht\:
-sgn.notice=M\u00e4rkus\:
-sgn.important=Oluline\:
-sgn.success=Edu\:
-sgn.unknown=Teadmatu\:
-sgn.warning=Hoiatus\:
-
-title.editor=Toimeti teade
-title.find=Otsi
-title.message=Andmebaasi halduri teade
\ No newline at end of file
diff --git a/locales/Estonian/locales/pos_messages_et.properties b/locales/Estonian/locales/pos_messages_et.properties
deleted file mode 100644
index 9bc4e5e8..00000000
--- a/locales/Estonian/locales/pos_messages_et.properties
+++ /dev/null
@@ -1,520 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-Button.Cancel=T\u00fchista
-button.catalogadd=Lisa
-button.catalogdel=Eemalda
-button.clean=T\u00fchjenda
-Button.Close=V\u00e4lju
-Button.CloseCash=L\u00f5peta p\u00e4ev!
-button.Discount=Allahindlus
-Button.DeleteTicket=Kustuta
-button.edit=Muuda
-button.ExecuteChart=K\u00e4ivita graafik
-button.executefilter=K\u00e4ivita filter
-Button.ExecuteReport=K\u00e4ivita aruanne
-Button.Factory=Taasta
-button.linediscount=Allahindlus %
-button.listtickets=Loend
-button.movetable=Siirda
-button.NewTicket=Uus
-Button.OK=OK
-button.opendrawer=Laegas
-button.pay=V\u00f5la tasumine
-button.peoplepassword=Salas\u00f5na
-button.print=Tr\u00fcki
-Button.PrintCash=Tr\u00fcki aruanne
-button.receive=V\u00f5ta vastu
-button.refund=Tagastus
-button.refundall=Tagasta k\u00f5ik
-button.refundline=Tagasta rida
-button.refundone=Tagasta \u00fcks
-button.reloadticket=Laadi uuesti
-button.reservations=Reserveeringud
-button.reset=Nulli
-Button.Restore=P\u00f6\u00f6ra tagasi
-Button.Save=Salvesta
-button.scale=Kaal
-button.sendorder=K\u00f6\u00f6ki
-button.tables=Lauad
-button.totaldiscount=Summa allahindlus
-
-caption.tickets=Arved
-caption.upload=Lae \u00fcles toodete nimekiri
-caption.split=Jaga arve
-
-database.ScriptError=Andmebaasi koostamise skripti k\u00e4ivitamine ei olnud v\u00f5imalik.
-database.ScriptWarning=Andmebaasi koostamise skript t\u00f6\u00f6tas vigadega.
-display.Null=Kliendiekraan pole k\u00e4ttesaadav
-display.Screen=Kliendiekraan ekraanil
-display.Window=Ekraan
-
-exception.unavailabledataset=Andmebaasile pole ligip\u00e4\u00e4su
-exception.unavailablefield=V\u00e4li pole m\u00e4\u00e4ratud\: {0}
-exception.unavailablefields=V\u00e4ljad pole ligip\u00e4\u00e4setavad
-
-filter.dbdriverlib=Ajurite teek (*.jar,*.zip)
-
-form.customertitle=Klientide loend
-form.productslist=Toodete loend
-form.selectprintertitle=Vali printer
-form.tickettitle=Arvete loend
-
-label.address=Aadressi rida 1
-label.address2=Aadressi rida 2
-label.all=K\u00f5ik
-label.attribute=Muutuja
-label.attributes=Muutujad
-label.attributeset=Muutujate valik
-
-label.bybarcode=V\u00f6\u00f6tkoodi j\u00e4rgi
-label.bydates=Kuup\u00e4eva j\u00e4rgi
-label.byform=Vormi j\u00e4rgi
-label.byreason=P\u00f5hjuse j\u00e4rgi
-label.bycustomer=Kliendi j\u00e4rgi
-label.byproduct=Toote j\u00e4rgi
-label.bywarehouse=Lao j\u00e4rgi
-
-label.card=Kaart
-label.cardexpdate=Aegumise t\u00e4htaeg
-label.cardholder=Kaardi kasutaja nimi
-label.cardnumber=Kaardi number
-Label.Cash=Raha
-label.cascade=Kaskaad
-Label.CashMachine=Kassaregister
-label.catid=ID
-label.catimage=Pilt
-label.catname=Kategooria
-label.certificatepwd=Sertifikaadi salas\u00f5na
-label.certificatepath=Sertifikaat
-Label.ChangeCash=Tagasi
-label.city=Linn
-label.commerceid=\u00c4ri ID
-label.commercepwd=\u00c4ri salas\u00f5na
-label.commercesign=\u00c4ri m\u00e4rk
-label.contact=Kontakt
-label.country=Riik
-label.curdebt=Hetke v\u00f5lg
-label.curdate=V\u00f5la kuup\u00e4ev
-label.currency=Valuuta
-label.customer=Klient
-label.custtaxcategory=Maksukategooria
-
-Label.Database=Andmebaas
-label.date=Kuup\u00e4ev
-label.datestitle=Raha p\u00e4evad
-label.datetime=Kuup\u00e4ev kell
-Label.DbDriver=Ajurite klass
-label.dbdriverlib=Ajurite teek
-Label.DbPassword=Salas\u00f5na
-Label.DbURL=URL
-Label.DbUser=Kasutaja
-label.debt=V\u00f5lg
-label.double=K\u00fcmnendkoht
-label.dutyid=ID
-label.dutyname=Maksu nimetus
-label.dutyrate=M\u00e4\u00e4r
-
-
-label.editline=Muuda rida
-label.email=e-post
-Label.EndDate=L\u00f5ppkuup\u00e4ev
-
-label.fax=Faks
-label.firstname=Esimene nimi
-label.floorid=ID
-label.floorname=Korrus
-
-label.image=Pilt
-Label.InputCash=Klient andis
-label.integer=Arv
-label.item=Ese
-
-label.javapos.drawer=Sahtli nimetus
-label.javapos.printer=Printeri nimetus
-
-label.lastname=Perekonnanimi
-label.lindediscount=Allahindlus %
-label.LoadError=Viga funktsionaalsuse rakendamisel
-label.locale=Lokaat
-label.location=Aadress
-label.locationaddress=Aadress
-label.locationid=ID
-label.locationname=Nimietus
-label.looknfeel=Nahk
-
-Label.MachineDisplay=Kliendiekraan
-label.machinedisplayconn=Re\u00feiim
-label.machinedisplayport=Port
-Label.MachineName=Nimetus
-Label.MachinePrinter=Printer
-Label.MachinePrinter2=Printer 2
-Label.MachinePrinter3=Printer 3
-label.machineprinterport=Port
-Label.MachineScreen=Ekraan
-label.magcardreader=Magnetkaardi lugeja
-label.maxdebt=Krediidipiir
-label.maximum=Maksimum
-label.merchantcode=Kaupmehe kood
-label.minimum=Miinimum
-label.money=Kokku
-
-label.packsinstock=In stock
-label.packof= packs of
-label.packstosplit=Packs to split
-label.productinpack=Product in pack
-label.split=Split
-
-label.name=Nimi
-Label.Name=Nimi
-label.notes=M\u00e4rkmed
-label.noticketstoclose=Sulgemiseks puuduvad arved
-label.nullcategory=(Pole tooter\u00fchma)
-
-label.order=J\u00e4rjestus
-
-Label.Password=Salas\u00f5na
-label.passwordnew=Uus salas\u00f5na
-label.passwordold=Vana salas\u00f5na
-label.passwordrepeat=Korda salas\u00f5na
-Label.Payment=Makse
-label.paymentdate=Kuup\u00e4ev
-label.paymentgateway=Maksel\u00fc\u00fcs
-label.paymentreason=P\u00f5hjus
-label.paymentstitle=Maksete aruanne
-label.paymenttestmode=Testre\u00feiim
-label.paymenttotal=Kokku
-label.peopleimage=Pilt
-label.peoplename=Nimi
-label.peoplevisible=N\u00e4htav
-label.percent=Protsent
-label.phone=Telefon
-label.phone2=Mobiiltelefon
-label.placefloor=Korrus
-label.placeid=ID
-label.placename=Koht
-label.placeposition=Ametikoht
-label.postal=Indeks
-label.price=Hind
-label.pricetax=Hind + KM
-label.printtokitchen=Saada k\u00f6\u00f6ki
-label.prodaux=Lisatoode
-label.prodbarcode=V\u00f6\u00f6tkood
-label.prodcategory=Pear\u00fchm
-label.prodcost=Kulu
-label.prodgeneral=\u00dcldine
-label.prodincatalog=Kataloogis
-label.prodname=Nimetus
-label.prodorder=J\u00e4rjestus
-label.prodpricebuy=Ostuhind
-label.prodpricesell=M\u00fc\u00fcgihind
-label.prodpriceselltax=M\u00fc\u00fcgihind + KM
-label.prodproperties=Omadused
-label.prodref=Viide
-label.prodscale=Kaal
-label.prodstock=Ladu
-label.prodstockcost=Lao kulu aastas
-label.prodstockmax=Maksimum tase
-label.prodstocksec=Miinimum tase
-label.prodstockvol=Lao maht
-label.produnits=\u00dchikud
-label.prodvaluebuy=Ostuv\u00e4\u00e4rtus
-label.prodvaluesell=M\u00fc\u00fcgiv\u00e4\u00e4rtus
-label.prodvolume=Maht
-label.properties=Omadused
-
-label.receiptprinter=T\u00f0ekiprinter
-label.recorddeleted=(Kanne kustutatud)
-label.recordeof=(Puuduvad kanded)
-label.recordnew=(uus kanne)
-label.refunds=Tagastused
-label.region=Piirkond / Riik
-label.remainingcash=Veel tasuda
-label.reportsprinter=Aruannete printer
-label.resname=Ressurss
-label.restaurantcustomer=V\u00f5tan vastu kliendi {0}. Vali t\u00fchi laud.
-label.restaurantmove=Siirdan laua {0}. Vali teine laud v\u00f5i esmane laud.
-label.role=Roll
-
-label.sales=M\u00fc\u00fck
-label.salestitle=M\u00fc\u00fcgiaruanne
-label.scale=Kaal
-label.scaleinput=Sisesta kaal
-label.scanner=Skanner
-label.search=Otsi
-label.searchkey=Otsingus\u00f5na
-label.sequence=Sagedus
-label.sha=SHA
-Label.StartDate=Esimene kuup\u00e4ev
-label.stockdate=Kuup\u00e4ev
-label.stockproduct=Toode
-label.stockreason=P\u00f5hjus
-label.storename=Kaupluse nimi
-label.subtotalcash=Vahesumma
-
-label.table=Laud
-label.tax=Maksud
-label.taxcash=Maksud
-label.taxcategory=Maksukategooria
-label.taxes=Maksud
-label.taxid=Konto ID
-label.taxparent=Peamine maks
-label.terminal=Terminal
-label.ticketid=Arve nr
-Label.Tickets=Maksed
-Label.Ticketsbag=Arved
-label.time=Aeg
-label.totalcash=Kokku
-label.totaldiscount=Summa allahindlus'
-label.type=Liik
-
-label.units=\u00dchikuid
-label.uploadingproducts=Laen tooteid. Palun oota...
-label.user=Kasutaja
-
-label.value=V\u00e4\u00e4rtus
-label.visible=N\u00e4htav
-
-label.warehouse=Toode
-
-Menu.Backoffice=Haldamine
-Menu.Catalog=Kataloog
-Menu.Categories=Tooter\u00fchmad
-Menu.ChangePassword=Muuda salas\u00f5na
-Menu.ClosedProducts=Toodete m\u00fc\u00fck
-Menu.CloseTPV=Vahetuse l\u00f5petamine
-Menu.Closing=Vahetus l\u00f5petatud
-Menu.Configuration=Seadistamine
-Menu.ERPOrders=ERP liikumiste \u00fchildamine
-Menu.ERPProducts=ERP toodete \u00fchildamine
-Menu.Exit=Lahku
-Menu.Floors=Korrused
-Menu.Inventory=Kaubad
-Menu.Inventory2=Hetke laoj\u00e4\u00e4k
-Menu.InventoryBroken=L\u00f5hutud kaubad
-Menu.InventoryDiff=Laoj\u00e4\u00e4k: vahed
-Menu.InventoryDiffDetail=Laoj\u00e4\u00e4k: vahed toodete \u00fcksikasjadega
-Menu.InventoryListDetail=Laoj\u00e4\u00e4k: \u00fcksikasjad
-Menu.InventoryReOrder=Inventory: Re-Order
-Menu.Locations=Laod
-Menu.Main=Peamine
-Menu.Maintenance=Hoooldus
-Menu.Maintenance.ERP=Chromis ERP
-Menu.Maintenance.POS=Kassat\u00f6\u00f6koht
-Menu.Payments=Sisse-&v\u00e4ljamaks
-Menu.Printer=Printerid
-Menu.Products=Tooted
-Menu.StockChanges=Stock Changes
-Menu.StockChangesReport=Stock Changes Report
-Menu.Promotions=Promotions
-Menu.PromotionsReport=Promotions Report
-
-Menu.Reports=Aruanded
-Menu.ReportTaxes=Maksude koond
-Menu.Resources=Ressursid
-Menu.Roles=Rollid
-Menu.SalesChart=M\u00fc\u00fcgigraafik
-Menu.SalesManagement=M\u00fc\u00fcgid
-Menu.SalesManagement.Reports=Aruanded
-Menu.StockDiary=Laop\u00e4evik
-Menu.StockManagement=Ladu
-Menu.StockManagement.Edit=Hooldus
-Menu.StockManagement.Reports=Aruanded
-Menu.StockMovement=Lao hooldus
-Menu.System=S\u00fcsteem
-Menu.Tables=Lauad
-Menu.ThirdParties=Hankijad
-Menu.Taxes=Maksud
-Menu.ThirdPartiesManagement=Hankijate haldamine
-Menu.Ticket=M\u00fc\u00fck
-Menu.TicketEdit=Muuda arvet
-Menu.TicketRefund=Tagastus
-Menu.Users=Kasutajad
-Menu.UserSells=M\u00fc\u00fck kasutaja alusel
-Menu.Customers=Kliendid
-Menu.CustomersManagement=Klientide haldus
-Menu.ProductsWarehouse=Toote laoinfo
-Menu.ProductPacks=Product Packs
-
-Menu.Customers.Reports=Aruanded
-Menu.CustomersReport=Kliendid
-Menu.CustomersBReport=Deebitorid
-Menu.Maintenance.Reports=Aruanded
-Menu.UsersReport=Kasutajad
-Menu.CustomersPayment=Laekumised
-Menu.ProductSales=Toodete m\u00fc\u00fck
-Menu.ProductLabels=Toodete etiketid
-Menu.CustomersDiary=Kliendi p\u00e4evik
-Menu.CashFlow=Rahavood
-Menu.CashRegisterLog=Tehingute logi
-Menu.CategorySales=M\u00fc\u00fck tooter\u00fchma j\u00e4rgi
-Menu.ExtendedByProducts=Laiendatud toodete m\u00fc\u00fck
-Menu.ExtendedSales=Laiendatud m\u00fc\u00fck
-Menu.ExtendedCashRegisterLog=Laiendatud tehingute logi
-Menu.PaymentReport=Maksed
-Menu.SalesProfit=Toodete m\u00fc\u00fcgi kasum
-Menu.SalesByCustomer=M\u00fc\u00fck kliendi alusel
-Menu.SaleTaxes=M\u00fc\u00fcgimaksud
-Menu.CategoryProductSalesChart=Tooter\u00fchmade m\u00fc\u00fcgigraafik
-Menu.Top10Sales=Top 10 m\u00fc\u00fck
-Menu.Auxiliar=T\u00e4iendavad tooted
-Menu.Attributes=Toote muutujad
-Menu.AttributeSets=Toote muutujate valik
-Menu.AttributeUse=Toote muutujate kasutamine
-Menu.TaxCustCategories=Kliendi maksukategooria
-Menu.TaxCategories=Maksukategooriad
-Menu.AttributeValues=Muutujate v\u00e4\u00e4rtused
-
-message.BadPassword=Vigane salas\u00f5na. Palun proovi uuesti.
-message.cannotchangepassword=Nii ei saa salas\u00f5na muuta
-message.cannotclosecash=Vahetuse l\u00f5petamine l\u00e4ks vett vedama.
-message.cannotdeleteconfig=Seadete faili ei saa \u00e4ra kustutada. Selleks on oma kindel p\u00f5hjus.
-message.cannotexecute=Tegevust ei saa k\u00e4ivitada
-message.cannotfillchart=Ei saa laadida graafiku andmeid
-message.cannotfillreport=Ei saa aruannet andmetega t\u00e4ita
-message.cannotloadreport=Ei saa laadida aruannete m\u00e4\u00e4rajaid
-message.cannotloadreportdata=Ei saa laadida aruannete andmeid
-message.cannotloadresourcedata=Ei saa laadida aruannete ressursse
-message.CannotMove=Kande siirdamine pole v\u00f5imalik.
-message.cannotprint=Tr\u00fckkimine ei ole v\u00f5imalil
-message.cannotprintline=Ei saa hakkama rea tr\u00fckkimisega
-message.cannotprintticket=Ei saa hakkama arve tr\u00fckkimisega
-message.cannotsaveconfig=Ei saa hakkama seadete salvestamisega
-message.changepassworddistinct=Kinnita salas\u00f5na
-message.closecashok=Vahetuse l\u00f5petamine \u00f5nnestus
-message.configfactory=Kas olete kindel, et algseadete taastamine on vajalik?
-message.configrestore=Kas tahate t\u00f5esti tagasi v\u00f5tta tehtud muudatused?
-message.createdatabase=Kahjuks ei \u00f5nnestunud leida t\u00f6\u00f6tamiseks vajalikku andmebaasi. Sellel p\u00f5hjusel alustab programm n\u00fc\u00fcd vaikeseadetega andmebaasi loomist. Kas lubate programmil seda tegevust j\u00e4tkata?
-message.databaseconnectionerror=Andmebaasiga ei \u00f5nnestunud \u00fchendust luua: Andmebaas pole ligip\u00e4\u00e4setav
-message.databasedrivererror=Andmebaasiga ei \u00f5nnestunud \u00fchendust luua: Andmebaaasi ajur on kuhugi kadunud
-message.databasenotsupported=Andmebaasi "{0}" ei toetata
-message.nocardreader=Kaardilugeja on seadistamata
-message.nopaymentgateway=Maksel\u00fc\u00fcs on seadistamata
-message.nosaveticket=Jooksva m\u00fc\u00fcgi arvet ei ole v\u00f5imalik salvestada.
-message.notactive=T\u00f6\u00f6laua laadimisel tekkis viga.
-message.notpermissions=Teie kasutaja\u00f5igused pole selle tegevuse k\u00e4ivitamiseks sobivad.
-message.paymentcashneg=Viige l\u00e4bi tagastus. Vajutage OK
-message.paymenterror=Viga arvlemisel!
-message.paymenterrorunknown=Tundmatu viga arvlemisel!
-message.paymentexceptionremote=Eemal juhtus arvlemise viga!
-message.paymentexceptionservice=Arvlemisteenuse viga!
-message.paymentfree=Tasuta
-message.paymentgatewayext=Teostage kaardimakse ja vajutage OK
-message.paymentgatewayextrefund=Teostage kaardimakse tagastus ja vajutage OK
-message.paymentnotauthorised=Tehingu autoriseerimisest keelduti
-message.paymentrefundsnotsupported=Tagastus pole toetatud funktsioon
-message.preparescanner=Valmistage ScanPal skanner toodete nimekirja \u00fcleslaadimiseks ja vajutage OK
-message.restartchanges=Seadete muudatuste salvestamine oli edukas. Muudatused j\u00f5ustatakse programmi j\u00e4rgmisel taask\u00e4ivitusel.
-message.scannerfail=Toodete nimekirja \u00fcleslaadimine ei l\u00e4inud korda
-message.scannerfail2=Toodete nimekirja allalaadimine ei l\u00e4inud korda
-message.scannerok=Toodete nimekirja \u00fcleslaadimine l\u00e4ks korda
-message.title=Teade kassaregistrilt
-message.updatedatabase=oPoS leidis varasema versiooni andmebaasi. Kl\u00f5psates OK algab katse andmebaasi automaatseks uuendamiseks. TEKIB OHT ANDMETE KAOTSIMINEKUKS. TEHKE ESMALT VARUKOOPIA. Kas soovite j\u00e4tkata uuendamisega n\u00fc\u00fcd ja kohe?
-message.wannaclosecash=Kas vahetuse l\u00f5petamiseks on t\u00f5esti \u00f5ige aeg?
-message.wannadelete=Kas Te soovite kindlasti kustutada jooksva tellimuse?
-message.paymentgatewayswipe=Loe kaart ja vajuta OK
-message.paymentgatewaytype=Sisesta kaardi andmed ja vajuta OK
-message.noticket=Seda arvet pole enam olemas...
-message.noproduct=Sellise koodiga toodet pole olemas...
-message.tableempty=Laud on n\u00fc\u00fcd t\u00fchi
-message.tablefull=Laud on n\u00fc\u00fcd h\u00f5ivatud
-message.noweight=Kaalumine polnud v\u00f5imalik
-message.cannotloadticket=Arve laadimine ei \u00f5nnestunud
-message.notexiststicket=Arvet pole olemas
-message.noupdatescript=A database from a previous version has been detected but it is not possible to upgrade the database automatically. Chromis POS will exit now.
-message.nocard=Kasutaja kaart ei seostu millegiga andmebaasis. Palun proovi uuesti!
-message.cardnew=Kaardi v\u00e4\u00e4rtus muutub. Kas soovite j\u00e4tkata?
-message.cardremove=Kaardi andmed kustutatakse. Kas soovite j\u00e4tkata?
-message.nocustomer=Sellise koodiga klienti pole olemas
-message.wannasave=Kas salvestame muudatused enne v\u00e4ljumist?
-message.nocustomernodebt=See arve pole kliendiga seotud.\nSeda ei saa kanda v\u00f5laraamatusse.\nSeda ei saa tr\u00fckkida ka \u00fclekandearvena.
-message.cannotfindcustomer=Klientide andemed kuhugi kadunud. Ei leia mitte...
-message.mergetable=\u00dchenda lauad
-message.mergetablequestion=Kas laudade \u00fchendamine on t\u00f5esti nii hea m\u00f5te?
-message.cannotloadlists=Ei saa laadida nimekirja andmeid
-message.cannotcalculatetaxes=Ei saa arvutada arvega seotud maksusummasid.\n\u00dcks v\u00f5i mitu toodetega seotud maksudest on korralikult h\u00e4\u00e4lestamata.
-message.cannotfindattributes=Selle tootega pole seotud \u00fchtki muutujat
-message.productnotselected=\u00dchtki toodet pole valitud
-message.printererror=T\u00f0eki tr\u00fckkimine ei \u00f5nnestunud
-message.noprinters=\u00dchtegi printerit pole seadistatud
-message.stockchangesactioned=Stock Changes Actioned
-
-message.cannotsaveinventorydata=Ei saanud salvestada kaupade andmeid
-message.customerdebtexceded=Kliendile lubatud krediidipiir on \u00fcletatud
-
-payment.title=Makse
-
-Printer.Null=Printer pole ligip\u00e4\u00e4setav
-Printer.Screen=Printer ekraanile
-Printer.Serial=Kassaprinter
-
-resource.binary=Binaarne
-resource.image=Pilt
-resource.text=Tekst
-
-rest.label.chairs=Toolid
-rest.label.customer=Klient
-rest.label.date=Broneerimine
-rest.label.notes=M\u00e4rkmed
-
-scale.notdefined=Kaal on m\u00e4\u00e4ramata
-scale.invalidvalue=Kaalu v\u00e4\u00e4rtus vale
-scale.weighitem=Weigh Item
-
-stock.in.movement=(Sisse) Liikumine
-stock.in.purchase=(Sisse) Soetused
-stock.in.refund=(Sisse) Tagastus
-stock.out.break=(V\u00e4lja) Breakage
-stock.out.crossing=Sisemine liikumine
-stock.out.movement=(V\u00e4lja) liikumine
-stock.out.refund=(V\u00e4lja) tagastus
-stock.out.sale=(V\u00e4lja) m\u00fc\u00fck
-stock.in.openpack=(In) Open Pack
-stock.out.openpack=(Out) Open Pack
-stock.in.stockchange=(In) Stock Change
-stock.out.stockchange=(Out) Stock Change
-
-tab.cash=Raha
-tab.cashrefund=Tagastus
-tab.cheque=T\u00f0ekk
-tab.chequerefund=T\u00f0ekk
-tab.free=Ettemaks
-tab.magcard=Kaart
-tab.paper=Kupong
-tab.debt=V\u00f5lg
-
-title.changepassword=Muuda salas\u00f5na
-title.editor=Toimeti teade
-
-transpayment.cash=Raha
-transpayment.cashin=(Sisse) raha
-transpayment.cashout=(V\u00e4lja) raha
-transpayment.cashrefund=Tagastus
-transpayment.cheque=T\u00f0ekk
-transpayment.chequerefund=T\u00f0eki tagastus
-transpayment.free=Ettemaks
-transpayment.magcard=Kaardimakse
-transpayment.magcardrefund=Kaardimakse tagastus
-transpayment.paperin=Kupongimakse
-transpayment.paperout=Kupong v\u00e4lja
-transpayment.debt=V\u00f5lg
-transpayment.debtpaid=V\u00f5lg tasutud
-
-Visor.Title=Chromis POS - proffessionaalne avatud l\u00e4htekoodiga tarkvara.
-Button.NewTicket=Uus
-Button.ExecuteChart=K\u00e4ivita graafik
diff --git a/locales/Estonian/reports/uk/chromis/reports/paymentreport_messages_et.properties b/locales/Estonian/paymentreport_messages_et.properties
similarity index 91%
rename from locales/Estonian/reports/uk/chromis/reports/paymentreport_messages_et.properties
rename to locales/Estonian/paymentreport_messages_et.properties
index f9f8d401..628103e6 100644
--- a/locales/Estonian/reports/uk/chromis/reports/paymentreport_messages_et.properties
+++ b/locales/Estonian/paymentreport_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/people_messages_et.properties b/locales/Estonian/people_messages_et.properties
similarity index 89%
rename from locales/Estonian/reports/uk/chromis/reports/people_messages_et.properties
rename to locales/Estonian/people_messages_et.properties
index 8554be53..cd698518 100644
--- a/locales/Estonian/reports/uk/chromis/reports/people_messages_et.properties
+++ b/locales/Estonian/people_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/piesalescat_messages_et.properties b/locales/Estonian/piesalescat_messages_et.properties
similarity index 91%
rename from locales/Estonian/reports/uk/chromis/reports/piesalescat_messages_et.properties
rename to locales/Estonian/piesalescat_messages_et.properties
index 3f602349..0248f591 100644
--- a/locales/Estonian/reports/uk/chromis/reports/piesalescat_messages_et.properties
+++ b/locales/Estonian/piesalescat_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/productlabels_messages_et.properties b/locales/Estonian/productlabels_messages_et.properties
similarity index 89%
rename from locales/Estonian/reports/uk/chromis/reports/productlabels_messages_et.properties
rename to locales/Estonian/productlabels_messages_et.properties
index daf4fdd0..64197dd5 100644
--- a/locales/Estonian/reports/uk/chromis/reports/productlabels_messages_et.properties
+++ b/locales/Estonian/productlabels_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/products_messages_et.properties b/locales/Estonian/products_messages_et.properties
similarity index 91%
rename from locales/Estonian/reports/uk/chromis/reports/products_messages_et.properties
rename to locales/Estonian/products_messages_et.properties
index 8c7adbf0..edc74adb 100644
--- a/locales/Estonian/reports/uk/chromis/reports/products_messages_et.properties
+++ b/locales/Estonian/products_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/productsales_messages_et.properties b/locales/Estonian/productsales_messages_et.properties
similarity index 90%
rename from locales/Estonian/reports/uk/chromis/reports/productsales_messages_et.properties
rename to locales/Estonian/productsales_messages_et.properties
index 936c826f..fe0fad96 100644
--- a/locales/Estonian/reports/uk/chromis/reports/productsales_messages_et.properties
+++ b/locales/Estonian/productsales_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/productsalesprofit_messages_et.properties b/locales/Estonian/productsalesprofit_messages_et.properties
similarity index 92%
rename from locales/Estonian/reports/uk/chromis/reports/productsalesprofit_messages_et.properties
rename to locales/Estonian/productsalesprofit_messages_et.properties
index 87f5f52b..b810e628 100644
--- a/locales/Estonian/reports/uk/chromis/reports/productsalesprofit_messages_et.properties
+++ b/locales/Estonian/productsalesprofit_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/productscatalog_messages_et.properties b/locales/Estonian/productscatalog_messages_et.properties
similarity index 91%
rename from locales/Estonian/reports/uk/chromis/reports/productscatalog_messages_et.properties
rename to locales/Estonian/productscatalog_messages_et.properties
index 5d5f6a05..1bd0debb 100644
--- a/locales/Estonian/reports/uk/chromis/reports/productscatalog_messages_et.properties
+++ b/locales/Estonian/productscatalog_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/salebycustomer_messages_et.properties b/locales/Estonian/salebycustomer_messages_et.properties
similarity index 92%
rename from locales/Estonian/reports/uk/chromis/reports/salebycustomer_messages_et.properties
rename to locales/Estonian/salebycustomer_messages_et.properties
index 36bf6ee3..1b90bdfb 100644
--- a/locales/Estonian/reports/uk/chromis/reports/salebycustomer_messages_et.properties
+++ b/locales/Estonian/salebycustomer_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/salecatalog_messages_et.properties b/locales/Estonian/salecatalog_messages_et.properties
similarity index 89%
rename from locales/Estonian/reports/uk/chromis/reports/salecatalog_messages_et.properties
rename to locales/Estonian/salecatalog_messages_et.properties
index e61a713e..44286294 100644
--- a/locales/Estonian/reports/uk/chromis/reports/salecatalog_messages_et.properties
+++ b/locales/Estonian/salecatalog_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/saletaxes_messages_et.properties b/locales/Estonian/saletaxes_messages_et.properties
similarity index 91%
rename from locales/Estonian/reports/uk/chromis/reports/saletaxes_messages_et.properties
rename to locales/Estonian/saletaxes_messages_et.properties
index 21855884..d8130e2e 100644
--- a/locales/Estonian/reports/uk/chromis/reports/saletaxes_messages_et.properties
+++ b/locales/Estonian/saletaxes_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/taxcatsales_message_et.properties b/locales/Estonian/taxcatsales_message_et.properties
similarity index 91%
rename from locales/Estonian/reports/uk/chromis/reports/taxcatsales_message_et.properties
rename to locales/Estonian/taxcatsales_message_et.properties
index 023cb842..1731167a 100644
--- a/locales/Estonian/reports/uk/chromis/reports/taxcatsales_message_et.properties
+++ b/locales/Estonian/taxcatsales_message_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/taxes_messages_et.properties b/locales/Estonian/taxes_messages_et.properties
similarity index 91%
rename from locales/Estonian/reports/uk/chromis/reports/taxes_messages_et.properties
rename to locales/Estonian/taxes_messages_et.properties
index a0c437ce..df05d44f 100644
--- a/locales/Estonian/reports/uk/chromis/reports/taxes_messages_et.properties
+++ b/locales/Estonian/taxes_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/timeseriesproduct_messages_et.properties b/locales/Estonian/timeseriesproduct_messages_et.properties
similarity index 92%
rename from locales/Estonian/reports/uk/chromis/reports/timeseriesproduct_messages_et.properties
rename to locales/Estonian/timeseriesproduct_messages_et.properties
index 8c13535d..a7faae2c 100644
--- a/locales/Estonian/reports/uk/chromis/reports/timeseriesproduct_messages_et.properties
+++ b/locales/Estonian/timeseriesproduct_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/top10sales_messages_et.properties b/locales/Estonian/top10sales_messages_et.properties
similarity index 90%
rename from locales/Estonian/reports/uk/chromis/reports/top10sales_messages_et.properties
rename to locales/Estonian/top10sales_messages_et.properties
index ab78ac48..d163a8b9 100644
--- a/locales/Estonian/reports/uk/chromis/reports/top10sales_messages_et.properties
+++ b/locales/Estonian/top10sales_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Estonian/reports/uk/chromis/reports/usersales_messages_et.properties b/locales/Estonian/usersales_messages_et.properties
similarity index 91%
rename from locales/Estonian/reports/uk/chromis/reports/usersales_messages_et.properties
rename to locales/Estonian/usersales_messages_et.properties
index fbb2c15c..654e01f6 100644
--- a/locales/Estonian/reports/uk/chromis/reports/usersales_messages_et.properties
+++ b/locales/Estonian/usersales_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/French/reports/uk/chromis/reports/chartsales_messages_fr.properties b/locales/French/chartsales_messages_fr.properties
similarity index 90%
rename from locales/French/reports/uk/chromis/reports/chartsales_messages_fr.properties
rename to locales/French/chartsales_messages_fr.properties
index e0472ade..1fe7653e 100644
--- a/locales/French/reports/uk/chromis/reports/chartsales_messages_fr.properties
+++ b/locales/French/chartsales_messages_fr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/French/reports/uk/chromis/reports/closedpos_messages_fr.properties b/locales/French/closedpos_messages_fr.properties
similarity index 93%
rename from locales/French/reports/uk/chromis/reports/closedpos_messages_fr.properties
rename to locales/French/closedpos_messages_fr.properties
index 3319a26f..fbfa164d 100644
--- a/locales/French/reports/uk/chromis/reports/closedpos_messages_fr.properties
+++ b/locales/French/closedpos_messages_fr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -17,43 +17,25 @@
# along with Chromis POS. If not, see .
label.title=Caisse cl\u00f4tur\u00e9e
-
label.closedate=Dates de cl\u00f4tures
-
label.partialtotal=Total
-
label.total=Total
-
label.partialtax=Taxes
-
label.partialsubtotal=Sous-total
-
label.tax=Taxes
-
label.subtotal=Sous-total
-
+transpayment.bank=Banque
transpayment.cash=Esp\u00e8ces
-
transpayment.magcard=Carte
-
transpayment.cashrefund=Remboursements
-
transpayment.magcardrefund=Carte remboursements
-
transpayment.cheque=Ch\u00e8que
-
transpayment.chequerefund=Ch\u00e8que remboursements
-
transpayment.cashin=(entr\u00e9e) Esp\u00e8ces
-
transpayment.cashout=(sortie) Esp\u00e8ces
-
transpayment.free=Gratuit
-
transpayment.ticket=Ticket
-
transpayment.paperin=Note entr\u00e9e
-
transpayment.paperout=Note sortie
transpayment.debt=Cr\u00e9dit
transpayment.debtpaid=Cr\u00e9dit pay\u00e9
diff --git a/locales/French/reports/uk/chromis/reports/closedproducts_messages_fr.properties b/locales/French/closedproducts_messages_fr.properties
similarity index 91%
rename from locales/French/reports/uk/chromis/reports/closedproducts_messages_fr.properties
rename to locales/French/closedproducts_messages_fr.properties
index 3ede2aef..5159d0d3 100644
--- a/locales/French/reports/uk/chromis/reports/closedproducts_messages_fr.properties
+++ b/locales/French/closedproducts_messages_fr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/French/reports/uk/chromis/reports/customers_messages_fr.properties b/locales/French/customers_messages_fr.properties
similarity index 89%
rename from locales/French/reports/uk/chromis/reports/customers_messages_fr.properties
rename to locales/French/customers_messages_fr.properties
index fd37c073..9438d7cc 100644
--- a/locales/French/reports/uk/chromis/reports/customers_messages_fr.properties
+++ b/locales/French/customers_messages_fr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -23,3 +23,4 @@ label.curdate=Date du cr\u00e9dit
label.notes=Notes
label.taxid=N\u00b0 client
label.printed=Imprim\u00e9
+label.discount=Discount
\ No newline at end of file
diff --git a/locales/French/reports/uk/chromis/reports/customersdiary_messages_fr.properties b/locales/French/customersdiary_messages_fr.properties
similarity index 90%
rename from locales/French/reports/uk/chromis/reports/customersdiary_messages_fr.properties
rename to locales/French/customersdiary_messages_fr.properties
index 90303ad1..d32278f1 100644
--- a/locales/French/reports/uk/chromis/reports/customersdiary_messages_fr.properties
+++ b/locales/French/customersdiary_messages_fr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/French/reports/uk/chromis/reports/inventory_messages_fr.properties b/locales/French/inventory_messages_fr.properties
similarity index 91%
rename from locales/French/reports/uk/chromis/reports/inventory_messages_fr.properties
rename to locales/French/inventory_messages_fr.properties
index aae4e35d..20f4a7c6 100644
--- a/locales/French/reports/uk/chromis/reports/inventory_messages_fr.properties
+++ b/locales/French/inventory_messages_fr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/French/reports/uk/chromis/reports/inventoryb_messages_fr.properties b/locales/French/inventoryb_messages_fr.properties
similarity index 91%
rename from locales/French/reports/uk/chromis/reports/inventoryb_messages_fr.properties
rename to locales/French/inventoryb_messages_fr.properties
index ce99cf3b..d759b395 100644
--- a/locales/French/reports/uk/chromis/reports/inventoryb_messages_fr.properties
+++ b/locales/French/inventoryb_messages_fr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/French/reports/uk/chromis/reports/inventorydiff_messages_fr.properties b/locales/French/inventorydiff_messages_fr.properties
similarity index 91%
rename from locales/French/reports/uk/chromis/reports/inventorydiff_messages_fr.properties
rename to locales/French/inventorydiff_messages_fr.properties
index fba91e78..49a18c06 100644
--- a/locales/French/reports/uk/chromis/reports/inventorydiff_messages_fr.properties
+++ b/locales/French/inventorydiff_messages_fr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/French/reports/uk/chromis/reports/inventorydiffdetail_messages_fr.properties b/locales/French/inventorydiffdetail_messages_fr.properties
similarity index 92%
rename from locales/French/reports/uk/chromis/reports/inventorydiffdetail_messages_fr.properties
rename to locales/French/inventorydiffdetail_messages_fr.properties
index 1f5e4a14..9c6e12d8 100644
--- a/locales/French/reports/uk/chromis/reports/inventorydiffdetail_messages_fr.properties
+++ b/locales/French/inventorydiffdetail_messages_fr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/French/reports/uk/chromis/reports/inventorylistdetail_messages_fr.properties b/locales/French/inventorylistdetail_messages_fr.properties
similarity index 91%
rename from locales/French/reports/uk/chromis/reports/inventorylistdetail_messages_fr.properties
rename to locales/French/inventorylistdetail_messages_fr.properties
index b39f6e96..ab2c2404 100644
--- a/locales/French/reports/uk/chromis/reports/inventorylistdetail_messages_fr.properties
+++ b/locales/French/inventorylistdetail_messages_fr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/French/locales/beans_messages_fr.properties b/locales/French/locales/beans_messages_fr.properties
deleted file mode 100644
index 8d537148..00000000
--- a/locales/French/locales/beans_messages_fr.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-Button.Today=Aujourd'hui
-
-button.ok=OK
-
-button.cancel=Annuler
-
-title.calendar=Choisir une date
-button.Today=Aujourd'hui
diff --git a/locales/French/locales/data_messages_fr.properties b/locales/French/locales/data_messages_fr.properties
deleted file mode 100644
index e40f7982..00000000
--- a/locales/French/locales/data_messages_fr.properties
+++ /dev/null
@@ -1,129 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-exception.noupdatecount=Mise \u00e0 jour du compte non d\u00e9finie.
-
-exception.nodataset=Ensemble de donn\u00e9es non d\u00e9finis
-
-exception.nonegativelimits=Limites n\u00e9gatives non autoris\u00e9es.
-
-exception.outofbounds=Hors limites.
-
-exception.noreadfile=Erreur de lecture du fichier.
-
-exception.nofinishedfile=Fichier non termin\u00e9.
-
-exception.notnull=La valeur doit \u00eatre non null.
-
-exception.noparamtype=Type de param\u00e8tre non autoris\u00e9
-
-qbf.none=Aucun
-
-qbf.null=Est null
-
-qbf.notnull=N'est pas null
-
-qbf.equals=Egal
-
-qbf.distinct=Distinct
-
-qbf.greater=Sup\u00e9rieur
-
-qbf.less=Inf\u00e9rieur
-
-qbf.greaterequals=Sup\u00e9rieur ou \u00e9gal
-
-qbf.lessequals=Inf\u00e9rieur ou \u00e9gal
-label.findwhat=Rechercher
-label.where=O\u00f9
-label.match=Correspond
-label.casesensitive=Respecter la casse
-button.ok=OK
-button.cancel=Annuler
-
-title.find=Chercher
-
-list.startfield=D\u00e9but du champ
-
-list.wholefield=Champ complet
-
-list.anypart=N'importe o\u00f9 dans le champ
-
-list.re=Expression reguli\u00e8re
-title.message=Message gestionnaire base de donn\u00e9e
-button.information=Information
-
-message.norecord=Enregistrement introuvable.
-
-message.nolistdata=Introuvable dans les donn\u00e9es selectionn\u00e9es.
-
-message.noreload=Impossible de recharger les donn\u00e9es.
-
-message.nomove=Impossible de passer \u00e0 l'autre enregistrement.
-
-message.nosave=Enregistrement non sauvegard\u00e9
-
-message.nodelete=Impossible de marquer l'enregistrement pour la suppression.
-
-message.nonew=Impossible de cr\u00e9er un nouvel enregistrement
-
-sgn.danger=Danger\:
-
-sgn.warning=Attention\:
-
-sgn.caution=Avertissement\:
-
-sgn.notice=Notification\:
-
-sgn.important=Important\:
-
-sgn.success=Succ\u00e9s:
-
-sgn.unknown=Inconnu\:
-
-exception.nocompare=Comparateur attendu pour QBF.
-
-exception.nodelete=Pas d'enregistrements supprim\u00e9
-
-exception.noupdate=Pas d'enregistrements mis \u00e0 jour.
-
-exception.noinsert=Pas d'enregistrements cr\u00e9es.
-
-message.changeslost=Les modifications seront perdues. Voulez-vous continuer ?
-
-title.editor=Message \u00e9diteur
-
-message.wannasave=Voulez-vous enregistrer les modifications avant de quitter ?
-
-label.imagefiles=Fichiers images
-
-message.resizeimage=L'image selectionn\u00e9e est plus grande que la taille du champ. Voulez-vous redimensionner l'image ?
-
-qbf.re=Expression reguli\u00e8re
-
-label.sortby=Trier par
-
-label.andby=Et par
-
-message.nosort=La condition de tri d\u00e9finie n'est pas valide
-
-caption.sort=Trier
-
-exception.parserconfig= Erreur de l'analyseur XML. Merci de contacter l'administrateur.
-exception.xmlfile= Erreur d'analyse. Fichier XML non valide.
-exception.iofile= Erreur lecture du fichier.
diff --git a/locales/French/locales/erp_messages_fr.properties b/locales/French/locales/erp_messages_fr.properties
deleted file mode 100644
index 5fd2dcd2..00000000
--- a/locales/French/locales/erp_messages_fr.properties
+++ /dev/null
@@ -1,55 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.configerp=Configuration ERP
-
-label.erpurl=Services URL
-
-label.erpid=Code entit\u00e9
-
-label.erporg=Code organisation
-
-label.erppos=Code PdV
-
-label.erpuser=Utilisateur
-
-label.erppassword=Mot de passe
-
-message.urlnotdefined=L'URL du service de synchronisation n'est pas d\u00e9finie.
-
-message.syncordersok=La synchronisation des commandes s'est bien deroul\u00e9e.
-
-message.syncordersinfo={0} commandes synchronis\u00e9es.
-
-message.syncproductsok=La synchronisation des produits s'est bien deroul\u00e9e.
-
-message.syncproductsinfo={0} produits synchronis\u00e9s.
-
-message.remoteexception=Erreur de transmission.
-
-message.serviceexception=Connexion au service impossible.
-
-message.malformedurlexception=L'URL du service est erron\u00e9e.
-
-message.returnnull=Les parametres de synchronisation sont erron\u00e9s.
-
-message.zeroproducts=Pas de produits \u00e0\u00a0synchroniser.
-
-message.zeroorders=Pas de commandes \u00e0\u00a0synchroniser.
-
-message.propsnotdefined=La ressource pour les propri\u00e9t\u00e9s de synchronisation "chromis.properties" n'est pas d\u00e9finie.
diff --git a/locales/French/locales/pos_messages_fr.properties b/locales/French/locales/pos_messages_fr.properties
deleted file mode 100644
index ef00c47c..00000000
--- a/locales/French/locales/pos_messages_fr.properties
+++ /dev/null
@@ -1,550 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-Button.Cancel=Annuler
-button.catalogadd=Ajouter au catalogue
-button.catalogdel=Retirer du catalogue
-Button.Close=Quitter
-Button.CloseCash=Cl\u00f4turer
-Button.DeleteTicket=Supprimer
-button.edit=Editer
-Button.ExecuteChart=Cr\u00e9er un graphique
-button.executefilter=Appliquer le filtre
-Button.ExecuteReport=Cr\u00e9er un rapport
-Button.Factory=Valeurs par d\u00e9faut
-button.listtickets=Lister
-button.movetable=D\u00e9placer
-Button.NewTicket=Nouveau
-Button.OK=OK
-button.opendrawer=Ouvrir tiroir
-button.peoplepassword=Mot de passe
-button.print=Imprimer
-button.receive=Re\u00e7u
-button.refund=Remboursement
-button.refundall=Rembourser tout
-button.refundline=Rembourser une ligne
-button.refundone=Rembourser un article
-button.reloadticket=Recharger
-button.reservations=R\u00e9servations
-button.reset=Remise \u00e0 zero
-Button.Restore=Restaurer
-Button.Save=Sauvegarder
-button.tables=Tables
-caption.tickets=Tickets
-caption.upload=T\u00e9l\u00e9charger la liste de produits
-Database.ScriptError=Execution impossible du script de cr\u00e9ation de la base de donn\u00e9es.
-Database.ScriptWarning=Le script de creation de la base de donn\u00e9es a rencontr\u00e9 une erreur.
-Display.Null=Affichage non disponible
-Display.Screen=Affichage \u00e0 l'\u00e9cran
-Display.Window=Afficheur
-exception.unavailabledataset=Ensemble de donn\u00e9es indisponible
-exception.unavailablefield=Champ non d\u00e9fini\: {0}
-exception.unavailablefields=Champs non disponibles
-filter.dbdriverlib=Biblioth\u00e8que de pilotes (*.jar, *.zip)
-form.productslist=Liste des produits
-label.bybarcode=Par code barres
-label.bydates=Par dates
-label.byform=Par formulaire
-label.byreason=Par d\u00e9nomination
-label.bywarehouse=Par entrep\u00f4t
-label.cardexpdate=Date d'expiration
-label.cardholder=Nom du porteur
-label.cardnumber=Num\u00e9ro de la carte
-Label.Cash=Esp\u00e8ces
-Label.CashMachine=Caisse enregistreuse
-label.catid=N\u00b0
-label.image=Image
-label.catname=Cat\u00e9gorie
-Label.ChangeCash=Monnaie
-label.commerceid=N\u00b0 Commerce
-label.commercepwd=Mot de passe
-Label.Database=Base de donn\u00e9es
-label.date=Date
-label.datestitle=Dates
-Label.DbDriver=Classe pilote
-label.dbdriverlib=Librairie pilote
-Label.DbPassword=Mot de passe
-Label.DbURL=URL
-Label.DbUser=Utilisateur
-label.dutyid=N\u00b0
-label.dutyname=Nom de la taxe
-label.dutyrate=Taux
-label.editline=Editer la ligne
-Label.EndDate=Date de fin
-label.floorid=N\u00b0
-label.floorname=Salle
-Label.InputCash=Re\u00e7u
-label.item=Article
-Label.LoadError=Une erreur s'est produite lors de l'execution de cette fonction.
-label.locationaddress=Adresse
-label.locationid=N\u00b0
-label.locationname=Nom
-Label.MachineDisplay=Afficheur client
-label.machinedisplayconn=Mode
-label.machinedisplayport=Port
-Label.MachineName=Nom
-Label.MachinePrinter=Imprimante
-Label.MachinePrinter2=Imprimante 2
-Label.MachinePrinter3=Imprimante 3
-label.machineprinterport=Port
-Label.MachineScreen=Ecran
-label.magcardreader=Lecteur de carte
-label.maximum=Maximum
-label.minimum=Minimum
-Label.Name=Nom
-label.noticketstoclose=Pas de factures \u00e0 fermer
-label.nullcategory=(Pas de cat\u00e9gorie)
-Label.Password=Mot de passe
-label.passwordnew=Nouveau mot de passe
-label.passwordold=Ancien mot de passe
-label.passwordrepeat=Verification mot de passe
-Label.Payment=Paiement
-label.paymentdate=Date
-label.paymentgateway=Passerelle de paiement
-label.paymentreason=Raison
-label.paymentstitle=Rapport de paiements
-label.paymenttestmode=Mode test
-label.paymenttotal=Total
-label.peopleimage=Image
-label.peoplename=Nom
-label.peoplevisible=Visible
-label.placefloor=Salle
-label.placename=Place
-label.placeposition=Position
-label.price=Prix
-label.pricetax=Prix + Taxes
-label.prodaux=Substitution
-label.prodbarcode=Code barre
-label.prodcategory=Cat\u00e9gorie
-label.prodcost=Co\u00fbt
-label.prodgeneral=G\u00e9neral
-label.prodincatalog=Figure au catalogue
-label.prodname=Nom
-label.prodorder=Ordre
-label.prodpricebuy=Prix d'achat
-label.prodpricesell=Prix de vente
-label.prodpriceselltax=Prix de vente + taxes
-label.prodproperties=Propri\u00e9t\u00e9s
-label.prodref=R\u00e9ference
-label.prodscale=Facturation au poids
-label.prodstock=Stock
-label.prodstockcost=Co\u00fbt annuel du stock
-label.prodstockmax=Niveau maximum
-label.prodstocksec=Niveau de r\u00e9serve
-label.prodstockvol=Volume
-label.produnits=En stock
-label.prodvaluebuy=Valeur d'achat
-label.prodvaluesell=Valeur de revente
-label.prodvolume=Volume
-label.recorddeleted=(Enregistrement supprim\u00e9)
-label.recordeof=(Pas d'enregistrements)
-label.recordnew=(Nouvel enregistrement)
-label.remainingcash=Restant
-label.resname=Ressource
-label.restaurantmove=D\u00e9placement table {0}. Choisissez une autre table libre ou la table d'origine.
-label.role=R\u00f4le
-label.sales=Ventes
-label.salestitle=Ventes
-label.scale=Balance
-label.scanner=Scanner
-Label.StartDate=Date de d\u00e9but
-label.stockdate=Date
-label.stockproduct=Produit
-label.stockreason=Raison
-label.subtotalcash=Sous-total
-label.table=Table
-label.tax=Taxes
-label.taxcash=Taxes
-label.ticketid=Ticket
-Label.Tickets=Paiements
-Label.Ticketsbag=Tickets
-label.totalcash=Total
-label.units=Unit\u00e9s
-label.user=Utilisateur
-label.value=Valeur
-label.warehouse=Entrep\u00f4t
-Menu.Backoffice=Administration
-Menu.Catalog=Catalogue
-Menu.Categories=Cat\u00e9gories
-Menu.ChangePassword=Changer le mot de passe
-Menu.ClosedProducts=Ventes par produits
-Menu.CloseTPV=Cl\u00f4turer la caisse
-Menu.Closing=Historique de caisse
-Menu.Configuration=Configuration
-Menu.ERPOrders=Synchronisation ventes
-Menu.ERPProducts=Synchro. produits & clients
-Menu.Exit=Quitter
-Menu.Floors=Salles
-Menu.Inventory=Entrep\u00f4ts
-Menu.Inventory2=Inventaire actuel
-Menu.InventoryBroken=Stock minimum atteint
-Menu.InventoryDiff=Journal d'inventaire
-Menu.Locations=Entrep\u00f4ts
-Menu.Main=Menu principal
-Menu.Maintenance=Maintenance
-Menu.Maintenance.ERP=ERP Chromis
-Menu.Maintenance.POS=Point de vente
-Menu.Payments=Mouvements caisse
-Menu.Printer=Imprimante
-Menu.Products=Produits
-Menu.StockChanges=Stock Changes
-Menu.StockChangesReport=Stock Changes Report
-Menu.Promotions=Promotions
-Menu.PromotionsReport=Promotions Report
-
-Menu.Reports=Rapports
-Menu.ReportTaxes=Taxes
-Menu.Resources=Ressources
-Menu.Roles=R\u00f4les
-Menu.SalesChart=Graphique des Ventes
-Menu.SalesManagement=Ventes
-Menu.SalesManagement.Reports=Rapports
-Menu.StockDiary=Gestion des produits
-Menu.StockManagement=Inventaire
-Menu.StockManagement.Edit=Maintenance
-Menu.StockManagement.Reports=Rapports
-Menu.StockMovement=Gestion du stock
-Menu.System=Syst\u00e8me
-Menu.Tables=Tables
-Menu.Taxes=Taxes
-Menu.ThirdParties=Fournisseurs
-Menu.ThirdPartiesManagement=Gestion des fournisseurs
-Menu.Ticket=Ventes
-Menu.TicketEdit=Edition des ventes
-Menu.TicketRefund=Remboursements
-Menu.Users=Utilisateurs
-Menu.UserSells=Ventes par Utilisateur
-message.BadPassword=Mot de passe erron\u00e9 Reessayez...
-message.cannotchangepassword=Impossible de changer le mot de passe.
-message.cannotclosecash=Impossible de cl\u00f4turer la caisse.
-message.cannotdeleteconfig=Impossible de supprimer le fichier de configuration.
-message.cannotexecute=Impossible d'executer l'action.
-message.cannotfillchart=Impossible de cr\u00e9er le graphique.
-message.cannotfillreport=Impossible de cr\u00e9er le rapport.
-message.cannotloadreport=Impossible de charger la d\u00e9finition du rapport.
-message.cannotloadreportdata=Impossible de charger les donn\u00e9es du rapport.
-message.cannotloadresourcedata=Impossible de charger les ressources pour le rapport.
-message.CannotMove=Impossible de passer \u00e0 l'autre enregistrement.
-message.cannotprint=Impossible d'imprimer le re\u00e7u.
-message.cannotprintline=Impossible d'imprimer la ligne.
-message.cannotprintticket=Impossible d'imprimer la facture.
-message.cannotsaveconfig=Impossible de sauvegarder la configuration.
-message.changepassworddistinct=La v\u00e9rification du mot de passe \u00e0 \u00e9chou\u00e9e
-message.closecashok=La caisse est ferm\u00e9e.
-message.configfactory=Les valeurs par d\u00e9faut seront restaur\u00e9es et les valeurs actuelles seront perdues. Voulez-vous continuer ?
-message.configrestore=Les valeurs initiale seront restaur\u00e9es et tous les changements seront perdus. Voulez-vous continuer ?
-message.createdatabase=Base de donnees non d\u00e9tect\u00e9e. Une base de donn\u00e9es par d\u00e9faut sera cr\u00e9e. Voulez-vous continuer ?
-message.databaseconnectionerror=Connexion impossible \u00e0 la base de donn\u00e9es. Base de donn\u00e9es non disponible.
-message.databasedrivererror=Connexion impossible \u00e0 la base de donn\u00e9es. Pilote de base de donn\u00e9es introuvable.
-message.databasenotsupported=Base de donnees "{0}" non support\u00e9e.
-message.nocardreader=Lecteur de carte non d\u00e9fini.
-message.nopaymentgateway=Passerelle de paiement non d\u00e9finie.
-message.nosaveticket=Sauvegarde du ticket impossible.
-message.notactive=Une erreur s'est produite lors du chargement du panneau.
-message.notpermissions=Vous n'\u00eates pas autoris\u00e9 a effectuer cette action.
-message.paymentcashneg=Proc\u00e9dez au remboursement et appuyez sur OK.
-message.paymenterror=Erreur pendant la transaction.
-message.paymenterrorunknown=Erreur de transaction inconnue.
-message.paymentexceptionremote=Erreur distante.
-message.paymentexceptionservice=Erreur de service.
-message.paymentfree=Gratuit
-message.paymentgatewayext=Proc\u00e9dez au paiement par carte et appuyez sur OK.
-message.paymentgatewayextrefund=Proc\u00e9dez au remboursement par carte et appuyez sur OK.
-message.paymentnotauthorised=Transaction non autoris\u00e9e.
-message.paymentrefundsnotsupported=Remboursements non support\u00e9.
-message.preparescanner=Pr\u00e9parez le ScanPal pour l'envoi de la liste des produits et appuyez sur OK.
-message.restartchanges=La configuration a \u00e9t\u00e9 sauvegard\u00e9. Les modifications prendront effet apr\u00e8s le red\u00e9marrage de l'application.
-message.scannerfail=L'envoi de la liste des produits a \u00e9chou\u00e9
-message.scannerfail2=Le t\u00e9l\u00e9chargement de la liste des produits a \u00e9chou\u00e9
-message.scannerok=La liste des produis a \u00e9t\u00e9 transmise avec succ\u00e9s.
-message.title=Messages de caisse
-message.updatedatabase=Une version ant\u00e9rieure de la base de donn\u00e9es a \u00e9t\u00e9 d\u00e9tect\u00e9. La base de donn\u00e9es va \u00eatre mise \u00e0 jour. ASSUREZ-VOUS DE DISPOSER D'UNE SAUVEGARDE DES DONNEES Voulez-vous continuer ?
-message.wannaclosecash=Etes-vous sur de vouloir cl\u00f4turer la caisse ?
-message.wannadelete=Etes-vous sur de vouloir supprimer le ticket en cours ?
-payment.title=Encaissement
-Printer.Null=Imprimante non disponible
-Printer.Screen=Imprimante \u00e9cran
-Printer.Serial=Imprimante tickets
-resource.binary=Binaire
-resource.image=Image
-resource.text=Texte
-rest.label.chairs=Personnes
-rest.label.customer=Client
-rest.label.date=Date
-rest.label.notes=Notes
-stock.in.movement=(entr\u00e9e) Mouvement
-stock.in.purchase=(entr\u00e9e) Achat
-stock.in.refund=(entr\u00e9e) Remboursement
-stock.out.break=(sortie) Retour Fournisseur
-stock.out.crossing=Transfert
-stock.out.movement=(sortie) Mouvement
-stock.out.refund=(sortie) Remboursement
-stock.out.sale=(sortie) Vente
-stock.in.openpack=(In) Open Pack
-stock.out.openpack=(Out) Open Pack
-tab.cash=Esp\u00e8ces
-tab.cashrefund=Remboursements
-tab.cheque=Ch\u00e8que
-tab.chequerefund=Ch\u00e8que
-tab.free=Gratuit
-tab.magcard=Carte
-tab.paper=Re\u00e7u
-tab.ticket=Ticket
-title.changepassword=Changer le mot de passe
-title.editor=Message de l'\u00e9diteur
-transpayment.cash=Esp\u00e8ces
-transpayment.cashin=(entr\u00e9e) Especes
-transpayment.cashout=(sortie) Especes
-transpayment.cashrefund=Remboursement
-transpayment.cheque=Ch\u00e8que
-transpayment.chequerefund=Ch\u00e8que remboursement
-transpayment.free=Gratuit
-transpayment.magcard=Carte
-transpayment.magcardrefund=Carte remboursement
-transpayment.paperin=(entr\u00e9e) Coupons
-transpayment.paperout=(sortie) Coupons
-transpayment.ticket=Ticket
-Visor.Title=Chromis POS
-
-message.paymentgatewayswipe=Glissez la carte et appuyez sur OK.
-
-message.paymentgatewaytype=Entrez les informations de la carte et appuyez sur OK.
-
-label.placeid=N\u00b0
-
-message.noticket=Le ticket n'existe plus.
-
-Menu.ProductsWarehouse=Produits par entrep\u00f4t
-Menu.ProductPacks=Product Packs
-
-message.noproduct=Aucun produit ne correspond au code saisi
-
-label.type=Type
-
-message.tableempty=La table est vide.
-
-message.tablefull=La table est pleine
-label.locale=Localisation
-
-label.looknfeel=Apparence
-
-button.scale=Balance
-label.integer=Entier
-
-label.double=Double
-
-label.currency=Mon\u00e9taire
-
-label.percent=Pourcent
-label.time=Heures
-
-label.datetime=Date Heures
-scale.notdefined=Balance non d\u00e9finie
-scale.invalidvalue=Valeur de balance incorrecte
-scale.weighitem=Weigh Item
-
-message.noweight=Le pesage n'a pas \u00e9t\u00e9 possible.
-label.scaleinput=Entrez un poids.
-message.cannotloadticket=Impossible de charger le re\u00e7u.
-message.notexiststicket=Le re\u00e7u n'existe pas.
-label.catimage=Image
-message.noupdatescript=Une base de donn\u00e9es d'une version ant\u00e9rieure a \u00e9t\u00e9 d\u00e9tect\u00e9 mais il est impossible de mettre \u00e0 jour la base de donn\u00e9es automatiquement. Chromis ERP va se terminer.
-label.visible=Visible
-label.name=Nom
-label.address=Adresse ligne 1
-label.notes=Notes
-Menu.Customers=Clients
-Menu.CustomersManagement=Gestion des clients
-form.customertitle=Liste des clients
-message.nocard=Carte utilisateur non trouv\u00e9e. R\u00e9essayez...
-label.card=Carte
-message.cardnew=La valeur de la carte va changer. Voulez vous continuer?
-message.cardremove=La valeur de la carte va \u00eatre retir\u00e9e. Voulez vous continuer?
-message.nocustomer=Un client avec le code entr\u00e9 n'existe pas
-label.maxdebt=Cr\u00e9dit maximum
-label.curdebt=Cr\u00e9dit actuel
-label.curdate=Date du cr\u00e9dit
-message.wannasave=Voulez vous sauvegarder les modifications avant de sortir?
-Menu.Customers.Reports=Rapports
-Menu.CustomersReport=Clients
-label.bycustomer=Par clients
-label.customer=Client
-Menu.CustomersBReport=Tous les clients
-Menu.Maintenance.Reports=Rapports
-Menu.UsersReport=Cartes utilisateurs
-label.restaurantcustomer=Acceuil client {0}. Choisissez une table vide.
-tab.debt=Cr\u00e9dit
-label.debt=Cr\u00e9dit
-transpayment.debt=Cr\u00e9dit
-message.nocustomernodebt=Ce re\u00e7u n'est pas allou\u00e9.\nIl ne peut \u00eatre sold\u00e9
-message.cannotfindcustomer=Donn\u00e9es client introuvables.
-button.pay=Paiement
-Menu.CustomersPayment=R\u00e8glements clients
-transpayment.debtpaid=Cr\u00e9dit pay\u00e9
-label.taxid=N\u00b0 client
-label.attributes=Attributs
-Menu.ProductSales=Ventes par produits
-Menu.ProductLabels=Etiquette produit
-Menu.InventoryListDetail=Inventaire actuel d\u00e9taill\u00e9
-Menu.InventoryReOrder=Inventory: Re-Order
-Menu.InventoryDiffDetail=Journal d'inventaire d\u00e9taill\u00e9
-caption.split=Fractionner le re\u00e7u
-label.searchkey=Mot-cl\u00e9
-label.contact=Contact
-label.location=Lieux / Adresse
-label.firstname=Pr\u00e9nom
-label.lastname=Nom
-label.email=E-mail
-label.phone=T\u00e9l\u00e9phone
-label.phone2=Autre T\u00e9l\u00e9phone
-label.fax=Fax
-label.address2=Adresse ligne 2
-label.postal=Code postale
-label.city=Ville
-label.region=D\u00e9partement
-label.country=Pays
-label.sequence=S\u00e9quence
-message.customerdebtexceded=Le client a d\u00e9pass\u00e9 le cr\u00e9dit allou\u00e9.
-label.custtaxcategory=Cat\u00e9gorie taxe client
-label.taxcategory=Cat\u00e9gorie taxe
-label.taxparent=Taxe parent
-label.cascade=Cascade
-label.reportsprinter=Rapports imprimante
-Menu.CustomersDiary=Journal clients
-Menu.TaxCustCategories=Cat\u00e9gories taxe client
-Menu.TaxCategories=Cat\u00e9gories taxe
-button.clean=R\u00e9initialiser
-label.taxes=Taxes
-label.order=Ordre
-message.mergetable=Fusion des tables
-message.mergetablequestion=Etes-vous s\u00fbr de vouloir fusionner les tables?
-message.cannotloadlists=Chargement des listes de donn\u00e9es impossible.
-label.javapos.printer=Nom de l'imprimante
-label.javapos.drawer=Nom du tiroir-caisse
-Menu.Auxiliar=Nomenclature des produits
-Menu.Attributes=Attributs des produit
-Menu.AttributeSets=Groupe d'attributs
-Menu.AttributeUse=Affectation des attributs
-message.cannotcalculatetaxes=Impossible de calculer les taxes du re\u00e7u.\nLes taxes d'un ou de plusieurs produits dans le re\u00e7u ne sont pas d\u00e9finies correctement.
-Button.PrintCash=Imprimer
-label.uploadingproducts=T\u00e9l\u00e9chargement des produits... Veuillez patienter
-label.attributeset=Groupe d'attributs
-label.attribute=Attribut du produit
-label.receiptprinter=Re\u00e7u imprimante
-label.merchantcode=Code commer\u00e7ant
-label.terminal=Terminal
-label.commercesign=Enseigne commer\u00e7ant
-label.sha=SHA
-label.storename=Nom boutique
-label.certificatepwd=Mot de passe certificat
-label.certificatepath=Certificat
-label.properties=Propri\u00e9t\u00e9s
-label.tickettype=Type de ticket
-label.refunds=Remboursement
-label.timeframe=Calendrier
-label.from=De
-label.to=A
-label.money=Montant
-
-label.packsinstock=In stock
-label.packof= packs of
-label.packstosplit=Packs to split
-label.productinpack=Product in pack
-label.split=Split
-
-label.timeperiod=P\u00e9riode
-label.search=Recherche
-message.cannotfindattributes=Ce produit n'a pas d'attributs.
-message.productnotselected=Aucun produit s\u00e9l\u00e9ctionn\u00e9.
-Menu.AttributeValues=Valeurs des attributs
-message.cannotsaveinventorydata=Impossible de sauvegarder les donn\u00e9es d'inventaire.
-form.tickettitle=Liste des tickets
-label.all=Tout
-button.Discount=Rabais
-button.discount=Rabais
-button.discountticket=Rabais
-button.ExecuteChart=Cr\u00e9er un graphique
-button.NewTicket=Nouveau
-button.linediscount=% Rabais
-button.refundit=Rembourser l'article
-button.sendorder=Cuisine
-button.setperson=Gar\u00e7on
-button.totaldiscount=Rabais
-database.ScriptWarning=Manuscrit de cr\u00e9ation n'a pas couru avec succ\u00e8s.
-database.ScriptError=Ne peut pas ex\u00e9cuter le manuscrit de donn\u00e9es de cr\u00e9ation.
-label.epm.notes=Remarques
-Menu.ExtendedSales=Ventes Plus
-Menu.DailyScheduleReport=Horaires Quotidien
-message.cannotcheckin=Pouvez pas Check In
-message.invalidenddate=La Date de Fin ne peut pas \u00eatre r\u00e9gl\u00e9e avant la Date de Syst\u00e8me ou D\u00e9but
-label.epm.visible=Visible
-message.leavecontrol=est en cong\u00e9. Se pour pr\u00e9senter \u00e0 l'enregistrement : contacter votre Directeur pour Annuler
-message.noshift=ne pas avoir de changement pr\u00e9c\u00e9dent
-message.checkedin=l'enregistrement \u00e0
-Label.ValidFrom=Valide De
-display.Screen=Affichage \u00e0 l'\u00e9cran
-Menu.SalesProfit=Product Sales Profit
-message.noprinters=Les imprimantes n'ont pas install\u00e9
-label.paymentnote=Remarques
-tab.bank=Banque
-label.byproduct=Par Produit
-display.Window=Visualiser
-message.probleminbreak=Erreur dans le temps de pause
-message.checkedout=Checked Out \u00e0
-Menu.PresenceManagement=Presence Management
-message.changeserver=Change current Server is in Development
-message.invalidstartdate=Date ne peut pas \u00eatre avant la Date de Syst\u00e8me
-Menu.Employees.Reports=Rapports
-Menu.CashFlow=Cash Flow
-Menu.SaleCatalog=Catalogue
-form.selectprintertitle=Choisir l'Imprimante
-message.cannotcheckout=Ne Peut pas Check Out
-label.LoadError=L'erreur qui essaie montrer ce caract\u00e8re fonctionnel
-label.epm.startdate=Commencer
-Menu.ExtendedCashRegisterLog=Journal Plus
-label.epm.employee=Employ\u00e9
-message.breakoverandcheckedin=est fini et Checked In
-Menu.SalesByCustomer=Ventes par Client\u00e8les
-label.totaldiscount=Rabais total
-message.cannotfindemployee=Ne peut pas trouver l'employ\u00e9
-message.at=\u00e0
-Menu.CustomersList=Liste client\u00e8le
-label.epm.employee.id=ID d'employ\u00e9
-message.leavefor=est parti
-label.epm.enddate=Terminer
-label.lindediscount=% Rabais
-label.printtokitchen=Imprimer A la Cuisine
-Menu.Breaks=Repos
-Menu.Top10Sales=Premier 10 Ventes
-Menu.ExtendedByProducts=Ventes Produit Plus
-Menu.CategorySales=Ventes de cat\u00e9gori
-Menu.CashRegisterLog=Journal de Transaction
-Menu.PaymentReport=Paiements
-Menu.CheckInCheckOut=Check In/Out
-Menu.Leaves=Repos
-Menu.SaleTaxes=Taxes par Ventes
-Menu.DailyPresenceReport=Pr\u00e9sence quotidienne
-Menu.CategoryProductSalesChart=Ventes de cat\u00e9gorie
-Menu.PerformanceReport=Performance
-message.printererror=Incapable d'imprimer le Re\u00e7u
-message.stockchangesactioned=Stock Changes Actioned
-
-label.prodtax=Taxe
-transpayment.bank=Banque
-message.breakoverandcheckedout=le repos est sur et Checkd Out \u00e0
-display.Null=pas disponible
diff --git a/locales/French/reports/uk/chromis/reports/people_messages_fr.properties b/locales/French/people_messages_fr.properties
similarity index 89%
rename from locales/French/reports/uk/chromis/reports/people_messages_fr.properties
rename to locales/French/people_messages_fr.properties
index d3613a35..59daebc8 100644
--- a/locales/French/reports/uk/chromis/reports/people_messages_fr.properties
+++ b/locales/French/people_messages_fr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/French/reports/uk/chromis/reports/productlabels_messages_fr.properties b/locales/French/productlabels_messages_fr.properties
similarity index 89%
rename from locales/French/reports/uk/chromis/reports/productlabels_messages_fr.properties
rename to locales/French/productlabels_messages_fr.properties
index 28a6f7b2..80c10827 100644
--- a/locales/French/reports/uk/chromis/reports/productlabels_messages_fr.properties
+++ b/locales/French/productlabels_messages_fr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/French/reports/uk/chromis/reports/products_messages_fr.properties b/locales/French/products_messages_fr.properties
similarity index 91%
rename from locales/French/reports/uk/chromis/reports/products_messages_fr.properties
rename to locales/French/products_messages_fr.properties
index e6dc4fcf..13e36b95 100644
--- a/locales/French/reports/uk/chromis/reports/products_messages_fr.properties
+++ b/locales/French/products_messages_fr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/French/reports/uk/chromis/reports/productsales_messages_fr.properties b/locales/French/productsales_messages_fr.properties
similarity index 90%
rename from locales/French/reports/uk/chromis/reports/productsales_messages_fr.properties
rename to locales/French/productsales_messages_fr.properties
index 20293feb..4f1e8f52 100644
--- a/locales/French/reports/uk/chromis/reports/productsales_messages_fr.properties
+++ b/locales/French/productsales_messages_fr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/French/reports/uk/chromis/reports/productscatalog_messages_fr.properties b/locales/French/productscatalog_messages_fr.properties
similarity index 91%
rename from locales/French/reports/uk/chromis/reports/productscatalog_messages_fr.properties
rename to locales/French/productscatalog_messages_fr.properties
index 064a631d..23fc7039 100644
--- a/locales/French/reports/uk/chromis/reports/productscatalog_messages_fr.properties
+++ b/locales/French/productscatalog_messages_fr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/French/reports/uk/chromis/reports/taxes_messages_fr.properties b/locales/French/taxes_messages_fr.properties
similarity index 91%
rename from locales/French/reports/uk/chromis/reports/taxes_messages_fr.properties
rename to locales/French/taxes_messages_fr.properties
index 5a0fdf63..a2e9708a 100644
--- a/locales/French/reports/uk/chromis/reports/taxes_messages_fr.properties
+++ b/locales/French/taxes_messages_fr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/French/reports/uk/chromis/reports/usersales_messages_fr.properties b/locales/French/usersales_messages_fr.properties
similarity index 91%
rename from locales/French/reports/uk/chromis/reports/usersales_messages_fr.properties
rename to locales/French/usersales_messages_fr.properties
index c70a516a..6d4e7cc5 100644
--- a/locales/French/reports/uk/chromis/reports/usersales_messages_fr.properties
+++ b/locales/French/usersales_messages_fr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/German/reports/uk/chromis/reports/chartsales_messages_de.properties b/locales/German/chartsales_messages_de.properties
similarity index 91%
rename from locales/German/reports/uk/chromis/reports/chartsales_messages_de.properties
rename to locales/German/chartsales_messages_de.properties
index 732fdaca..193023aa 100644
--- a/locales/German/reports/uk/chromis/reports/chartsales_messages_de.properties
+++ b/locales/German/chartsales_messages_de.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/German/reports/uk/chromis/reports/closedpos_messages_de.properties b/locales/German/closedpos_messages_de.properties
similarity index 93%
rename from locales/German/reports/uk/chromis/reports/closedpos_messages_de.properties
rename to locales/German/closedpos_messages_de.properties
index 6d55ad63..2a1457da 100644
--- a/locales/German/reports/uk/chromis/reports/closedpos_messages_de.properties
+++ b/locales/German/closedpos_messages_de.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -17,43 +17,25 @@
# along with Chromis POS. If not, see .
# Translations by Sebastian Muszytowski S.Muszytowski@googlemail.com
label.title=Kassenschluss
-
label.closedate=Geschlossene Dateien
-
label.partialtotal=Total
-
label.total=Total
-
label.partialtax=Steuern
-
label.partialsubtotal=Zwischensumme
-
label.tax=Steuern
-
label.subtotal=Zwischensumme
-
+transpayment.bank=Bank
transpayment.cash=Bargeld
-
transpayment.magcard=Karte
-
transpayment.cashrefund=R\u00fcckgeld
-
transpayment.magcardrefund=Karten R\u00fcckerstattung
-
transpayment.cheque=Scheck
-
transpayment.chequerefund=Scheck R\u00fcckerstattung
-
transpayment.cashin=Geldeingang
-
transpayment.cashout=Geldausgang
-
transpayment.free=Frei
-
transpayment.ticket=Rechnung
-
transpayment.paperin=Gutschein Eingabe
-
transpayment.paperout=Gutschein Ausgabe
transpayment.debt=Forderung
transpayment.debtpaid=Forderung bezahlt
diff --git a/locales/German/reports/uk/chromis/reports/closedproducts_messages_de.properties b/locales/German/closedproducts_messages_de.properties
similarity index 92%
rename from locales/German/reports/uk/chromis/reports/closedproducts_messages_de.properties
rename to locales/German/closedproducts_messages_de.properties
index ba96d1d9..5e18e689 100644
--- a/locales/German/reports/uk/chromis/reports/closedproducts_messages_de.properties
+++ b/locales/German/closedproducts_messages_de.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/German/reports/uk/chromis/reports/customers_messages_de.properties b/locales/German/customers_messages_de.properties
similarity index 89%
rename from locales/German/reports/uk/chromis/reports/customers_messages_de.properties
rename to locales/German/customers_messages_de.properties
index 8bb6120d..731929cd 100644
--- a/locales/German/reports/uk/chromis/reports/customers_messages_de.properties
+++ b/locales/German/customers_messages_de.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -25,3 +25,4 @@ label.curdate=Forderung Datum
label.notes=Gutscheine
label.taxid=Steuer ID
label.printed=Gedruckt
+label.discount=Discount
\ No newline at end of file
diff --git a/locales/German/reports/uk/chromis/reports/customersdiary_messages_de.properties b/locales/German/customersdiary_messages_de.properties
similarity index 90%
rename from locales/German/reports/uk/chromis/reports/customersdiary_messages_de.properties
rename to locales/German/customersdiary_messages_de.properties
index 4da46e4c..ca52a9e1 100644
--- a/locales/German/reports/uk/chromis/reports/customersdiary_messages_de.properties
+++ b/locales/German/customersdiary_messages_de.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/German/reports/uk/chromis/reports/inventory_messages_de.properties b/locales/German/inventory_messages_de.properties
similarity index 92%
rename from locales/German/reports/uk/chromis/reports/inventory_messages_de.properties
rename to locales/German/inventory_messages_de.properties
index 35c1c3e1..2afcff01 100644
--- a/locales/German/reports/uk/chromis/reports/inventory_messages_de.properties
+++ b/locales/German/inventory_messages_de.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/German/reports/uk/chromis/reports/inventoryb_messages_de.properties b/locales/German/inventoryb_messages_de.properties
similarity index 91%
rename from locales/German/reports/uk/chromis/reports/inventoryb_messages_de.properties
rename to locales/German/inventoryb_messages_de.properties
index 364cadff..faee14c3 100644
--- a/locales/German/reports/uk/chromis/reports/inventoryb_messages_de.properties
+++ b/locales/German/inventoryb_messages_de.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/German/reports/uk/chromis/reports/inventorydiff_messages_de.properties b/locales/German/inventorydiff_messages_de.properties
similarity index 92%
rename from locales/German/reports/uk/chromis/reports/inventorydiff_messages_de.properties
rename to locales/German/inventorydiff_messages_de.properties
index d44dbae4..2eecaa66 100644
--- a/locales/German/reports/uk/chromis/reports/inventorydiff_messages_de.properties
+++ b/locales/German/inventorydiff_messages_de.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/German/reports/uk/chromis/reports/inventorydiffdetail_messages_de.properties b/locales/German/inventorydiffdetail_messages_de.properties
similarity index 91%
rename from locales/German/reports/uk/chromis/reports/inventorydiffdetail_messages_de.properties
rename to locales/German/inventorydiffdetail_messages_de.properties
index c5b75aaf..3c8b7557 100644
--- a/locales/German/reports/uk/chromis/reports/inventorydiffdetail_messages_de.properties
+++ b/locales/German/inventorydiffdetail_messages_de.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/German/reports/uk/chromis/reports/inventorylistdetail_messages_de.properties b/locales/German/inventorylistdetail_messages_de.properties
similarity index 90%
rename from locales/German/reports/uk/chromis/reports/inventorylistdetail_messages_de.properties
rename to locales/German/inventorylistdetail_messages_de.properties
index 759ab815..542e31bf 100644
--- a/locales/German/reports/uk/chromis/reports/inventorylistdetail_messages_de.properties
+++ b/locales/German/inventorylistdetail_messages_de.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/German/locales/beans_messages_de.properties b/locales/German/locales/beans_messages_de.properties
deleted file mode 100644
index 8c56b770..00000000
--- a/locales/German/locales/beans_messages_de.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-# Translations by Sebastian Muszytowski S.Muszytowski@googlemail.com
-
-
-Button.Today=Heute
-
-button.ok=Ok
-
-button.cancel=Abbrechen
-
-title.calendar=W\u00e4hle einen Datum
-button.Today=Heute
diff --git a/locales/German/locales/data_messages_de.properties b/locales/German/locales/data_messages_de.properties
deleted file mode 100644
index bf84e711..00000000
--- a/locales/German/locales/data_messages_de.properties
+++ /dev/null
@@ -1,131 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-# Translations by Sebastian Muszytowski S.Muszytowski@googlemail.com
-
-exception.noupdatecount=Update Z\u00e4hler ist nicht definiert.
-
-exception.nodataset=Datensatz ist undefiniert
-
-exception.nonegativelimits=Negative Zahlen sind nicht m\u00f6glich
-
-exception.outofbounds=Ausserhalb Bereich
-
-exception.noreadfile=Fehler beim Lesen der Datei
-
-exception.nofinishedfile=Datei wurde nicht beendet
-
-exception.notnull=Die Summe ist nicht null.
-
-exception.noparamtype=Parametertyp ist ung\u00fcltig.
-
-qbf.none=Nicht
-
-qbf.null=Ist Null
-
-qbf.notnull=Ist nicht Null
-
-qbf.equals=Gleich
-
-qbf.distinct=Eindeutig
-
-qbf.greater=Gr\u00f6\u00dfer
-
-qbf.less=Kleiner
-
-qbf.greaterequals=Gr\u00f6\u00dfer oder Gleich
-
-qbf.lessequals=Weniger oder Gleich
-label.findwhat=Finde was
-label.where=Wo
-label.match=\u00dcbereinstimmung
-label.casesensitive=Gro\u00df und Kleinschreibung
-button.ok=OK
-button.cancel=Abbrechen
-
-title.find=Finden
-
-list.startfield=Start Feld
-
-list.wholefield=Gesammte Feld
-
-list.anypart=Irgendein ein Teil des Feldes
-
-list.re=Regul\u00e4rer Ausdruck
-
-title.message=Datenbank Manager Nachricht
-
-button.information=Information
-
-message.norecord=Datensatz nicht gefunden.
-
-message.nolistdata=In Datenliste nicht gefunden.
-
-message.noreload=Neuladen der Datenliste nicht m\u00f6glich.
-
-message.nomove=Kann nicht zur anderen Datensatz wechseln.
-
-message.nosave=Datensatz nicht gespeichert.
-
-message.nodelete=Kann Datensatz nicht zum l\u00f6schen Kennzeichnen.
-
-message.nonew=Kann keine neue Datensatz erstellen.
-
-sgn.danger=Gefahr\:
-
-sgn.warning=Warnung\:
-
-sgn.caution=Achtung\:
-
-sgn.notice=Notiz:
-
-sgn.important=Wichtig\:
-
-sgn.success=Erfolg\:
-
-sgn.unknown=Unbekannt\:
-
-exception.nocompare=Erwarte Vergleich f\u00fcr QBF.
-
-exception.nodelete=Keine Datensatz gel\u00f6scht.
-
-exception.noupdate=Keine Datensatz erneuert.
-
-exception.noinsert=Keine Satensatz eingef\u00fcgt.
-
-message.changeslost=\u00c4nderungen gehen Verloren,trotzdem fortfahren?
-
-title.editor=Nachricht des Editors
-
-message.wannasave=\u00c4nderungen vorm Verlassen Sichern?
-
-label.imagefiles=Bild Dateien
-
-message.resizeimage=Das ausgew\u00e4hlte Bild ist zu gro\u00df. Soll es angepasst werden?
-
-qbf.re=Regul\u00e4rer Ausdruck
-
-label.sortby=Sortiert auf
-
-label.andby=und auf
-
-message.nosort=Die Sortierkriterien sind Ung\u00fcltig!
-
-caption.sort=Sortieren
-exception.iofile=Fehler beim lesen Datei
-exception.xmlfile=Analyse Fehler, XML Datei ung\u00fcltig
-exception.parserconfig=XML Analisierer Fehler, Bitte dministrator kontaktieren
diff --git a/locales/German/locales/erp_messages_de.properties b/locales/German/locales/erp_messages_de.properties
deleted file mode 100644
index 7ffa2186..00000000
--- a/locales/German/locales/erp_messages_de.properties
+++ /dev/null
@@ -1,55 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.configerp=ERP Konfiguration
-
-label.erpurl=Services URL
-
-label.erpid=Datensatz Nummer
-
-label.erporg=Benutzername
-
-label.erppos=POS Nummer
-
-label.erpuser=Benutzer
-
-label.erppassword=Password
-
-message.urlnotdefined=Synchronistation URL nicht definiert.
-
-message.syncordersok=Die Synchronisation der Bestelldaten war erfolgreich.
-
-message.syncordersinfo={0} Bestellung(en) Synchronisiert
-
-message.syncproductsok=Die Produktsynchronisation war erfolgreich.
-
-message.syncproductsinfo={0} Produkte synchronisiert.
-
-message.remoteexception=Kommunikations Error.
-
-message.serviceexception=Kann nicht verbinden.
-
-message.malformedurlexception=Die URL ist falsch.
-
-message.returnnull=Die Synchronisationsparameter sind Falsch.
-
-message.zeroproducts=Es gibt keine Produkte zum Synchronisieren.
-
-message.zeroorders=Es gibt keine Bestellungen zum Synchronisieren.
-
-message.propsnotdefined=Die Synchronisationsquelle "chromis.properties" ist undefiniert.
diff --git a/locales/German/locales/pos_messages_de.properties b/locales/German/locales/pos_messages_de.properties
deleted file mode 100644
index d67c0522..00000000
--- a/locales/German/locales/pos_messages_de.properties
+++ /dev/null
@@ -1,503 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-# Translations by Sebastian Muszytowski S.Muszytowski@googlemail.com
-# Translations edited by Dennis Lorek dennis.lorek@cashregisterstore.de
-
-Button.Cancel=Abbrechen
-button.catalogadd=Zum Katalog hinzuf\u00fcgen
-button.catalogdel=Aus dem Katalog herausnehmen
-Button.Close=Schlie\u00dfen
-Button.CloseCash=Kassenabschluss
-Button.DeleteTicket=L\u00f6schen
-button.edit=Bearbeiten
-Button.ExecuteChart=Grafik ausf\u00fchren
-button.executefilter=Filter ausf\u00fchren
-Button.ExecuteReport=Bericht ausf\u00fchren
-Button.Factory=Standardeinstellungen
-button.listtickets=Liste
-button.movetable=Umbuchen
-Button.NewTicket=Neu
-Button.OK=OK
-button.opendrawer=Lade \u00f6ffnen
-button.linediscount=% Zeile
-button.discount=% Rechn.
-button.peoplepassword=Kennwort
-button.print=Drucken
-button.receive=Empfangen
-button.refund=R\u00fcckgabe
-button.refundall=R\u00fcckgabe alles
-button.refundline=R\u00fcckgabe Zeile
-button.refundone=R\u00fcckgabe eins
-button.reloadticket=Aktualisieren
-button.reservations=Reservierungen
-button.reset=Zur\u00fccksetzen
-Button.Restore=Ersetzen
-Button.Save=Speichern
-button.tables=Tische
-caption.tickets=Rechnungen
-caption.upload=Produktliste Hochladen
-Database.ScriptError=Kann Script zum anlegen der Datenbank nicht ausf\u00fchren.
-Database.ScriptWarning=Das neue Script hat nicht funktioniert!
-Display.Null=Zeiger ist nicht verf\u00fcgbar
-Display.Screen=Bildschirm zeigen
-Display.Window=Zeiger
-exception.unavailabledataset=Datensatz ist nicht verf\u00fcgbar
-exception.unavailablefield=Feld ist undefiniert\: {0}
-exception.unavailablefields=Feld ist nicht verf\u00fcgbar
-filter.dbdriverlib=Treiber Verzeichniss (*.jar,*.zip)
-form.productslist=Produkt Liste
-label.bybarcode=Nach Strichkode
-label.bydates=Nach Datum
-label.byform=Nach Formular
-label.byreason=Nach Grund
-label.bywarehouse=Nach Lagerort
-label.cardexpdate=Ablauf Datum
-label.cardholder=Karten Name
-label.cardnumber=Karten Nummer
-Label.Cash=Bargeld
-Label.CashMachine=Kassenegister
-label.catid=ID
-label.image=Bild
-label.catname=Warengruppe
-Label.ChangeCash=Wechselgeld
-label.commerceid=Handelsregister Nummer
-label.commercepwd=Kennwort
-Label.Database=Datenbank
-label.date=Datum
-label.datestitle=Barzahlung Daten
-Label.DbDriver=Treiber Klasse
-label.dbdriverlib=Treiber Bibliothek
-Label.DbPassword=Kennwort
-Label.DbURL=URL
-Label.DbUser=Benutzer
-label.dutyid=ID
-label.dutyname=Steuer Name
-label.dutyrate=Steuersatz
-label.editline=Zeile bearbeiten
-Label.EndDate=Enddatum
-label.floorid=Raum ID
-label.floorname=Raum Name
-Label.InputCash=Gegeben
-label.item=Produkt
-Label.LoadError=Fehler beim Zeigen dieser Funktion.
-label.locationaddress=Adresse
-label.locationid=ID
-label.locationname=Name
-Label.MachineDisplay=Kunden Display
-label.machinedisplayconn=Modus
-label.machinedisplayport=Port
-Label.MachineName=Name
-Label.MachinePrinter=Drucker 1
-Label.MachinePrinter2=Drucker 2
-Label.MachinePrinter3=Drucker 3
-label.machineprinterport=Port
-Label.MachineScreen=Bildschirm
-label.magcardreader=Magnetkartenleser
-label.maximum=Maximum
-label.minimum=Minimum
-Label.Name=Name
-label.noticketstoclose=Keine Rechnung zum Schlie\u00dfen
-label.nullcategory=(Keine Warengruppe)
-Label.Password=Kennwort
-label.passwordnew=Neues Kennwort
-label.passwordold=Altes Kennwort
-label.passwordrepeat=Kennwort wiederholen
-Label.Payment=Bezahlung
-label.paymentdate=Datum der Bezahlung
-label.paymentgateway=Zahlart
-label.paymentreason=Anlass
-label.paymentstitle=Bericht
-label.paymenttestmode=Test Modus
-label.paymenttotal=Total
-label.peopleimage=Bild
-label.peoplename=Name
-label.peoplevisible=Sichtbar
-label.placefloor=Stelle in Raum
-label.placename=Platz
-label.placeposition=Position
-label.price=VK-Preis
-label.pricetax=Preis inkl.
-label.prodaux=Erg\u00e4nzend
-label.prodbarcode=Strichkode
-label.prodcategory=Warengruppe
-label.prodcost=EK-Preis
-label.prodgeneral=Allgemein
-label.prodincatalog=Im Katalog
-label.prodname=Name
-label.prodorder=Anordnung
-label.prodpricebuy=Einkaufspreis
-label.prodpricesell=Verkaufspreis
-label.prodpriceselltax=Verkaufspreis inkl.
-label.prodproperties=Eigenschaften
-label.prodref=Referenzwert
-label.prodscale=Menge
-label.prodstock=Bestand
-label.prodstockcost=Bestandskosten/Jahr
-label.prodstockmax=H\u00f6chstbestand
-label.prodstocksec=Sicherheit Stufe
-label.prodstockvol=Bestandsvolumen
-label.prodtax=Steuer
-label.produnits=St\u00fcckzahl
-label.prodvaluebuy=Eingkaufswert
-label.prodvaluesell=Verkaufswert
-label.prodvolume=Anzahl
-label.recorddeleted=(Aufzeichnung gel\u00f6scht)
-label.recordeof=(Keine Aufzeichnung vorhanden)
-label.recordnew=(Neue Aufzeichnung)
-label.remainingcash=Verbleibend
-label.resname=Quelle
-label.restaurantmove=Verschiebe Tisch {0}. Versetzen Sie den Aktuellen Tisch oder den Haupttisch.
-label.role=Rolle
-label.sales=Verk\u00e4ufe
-label.salestitle=Verkaufs Bericht
-label.scale=Menge
-label.scanner=Scanner
-Label.StartDate=Start Datum
-label.stockdate=Datum
-label.stockproduct=Produkt
-label.stockreason=Anlass
-label.subtotalcash=Zwischensumme
-label.table=Tisch
-label.tax=Steuern
-label.taxcash=Steuern
-label.ticketid=Rechnung
-Label.Tickets=Bezahlungen
-Label.Ticketsbag=Rechnungen
-label.totalcash=Total
-label.units=Einheiten
-label.user=Benutzer\:
-label.value=Betrag
-label.warehouse=Lager
-Menu.Backoffice=Administration
-Menu.Catalog=Katalog
-Menu.Categories=Warengruppen
-Menu.ChangePassword=Kennwort \u00e4ndern
-Menu.ClosedProducts=Produkt Verk\u00e4ufe
-Menu.CloseTPV=Kassenabschluss
-Menu.Closing=Kassenabschl\u00fcsse
-Menu.Configuration=Konfiguration
-Menu.ERPOrders=Bestellungen Synchronisieren
-Menu.ERPProducts=Produkte Synchronisieren
-Menu.Exit=Beenden
-Menu.Floors=Raumpl\u00e4ne
-Menu.Inventory=Lagerhaus
-Menu.Inventory2=Aktueller Vorrat
-Menu.InventoryBroken=Minimaler Vorrat
-Menu.InventoryDiff=Bestandsaufnahme
-Menu.Locations=Lagerh\u00e4user
-Menu.Main=Hauptmen\u00fc
-Menu.Maintenance=Einstellungen
-Menu.Maintenance.ERP=Openbravo ERP
-Menu.Maintenance.POS=Kassensystem
-Menu.Payments=Ein-/Auszahlungen
-Menu.Printer=Drucker
-Menu.Products=Produkte
-Menu.StockChanges=Stock Changes
-Menu.StockChangesReport=Stock Changes Report
-Menu.Promotions=Promotions
-Menu.PromotionsReport=Promotions Report
-
-Menu.Reports=Berichte
-Menu.ReportTaxes=Steuern
-Menu.Resources=Quellkode
-Menu.Roles=Rollen
-Menu.SalesChart=Verkaufs Grafik
-Menu.SalesManagement=Verk\u00e4ufe
-Menu.SalesManagement.Reports=Berichte
-Menu.StockDiary=Bestandsbewegungen
-Menu.StockManagement=Produkte
-Menu.StockManagement.Edit=Einstellungen
-Menu.StockManagement.Reports=Berichte
-Menu.StockMovement=Bestandsverwaltung
-Menu.System=System
-Menu.Tables=Tische
-Menu.Taxes=Steuern
-Menu.ThirdParties=Lieferanten
-Menu.ThirdPartiesManagement=Lieferanten Management
-Menu.Ticket=Verk\u00e4ufe
-Menu.TicketEdit=Bonjournal
-Menu.TicketRefund=R\u00fcckerstattungen
-Menu.Users=Nutzer
-Menu.UserSells=Verk\u00e4ufe nach Nutzer
-message.BadPassword=Falsches Kennwort, bitte nochmals versuchen.
-message.cannotchangepassword=Kann Kennwort nicht \u00e4ndern.
-message.cannotclosecash=Kann keinen Kassenschluss machen.
-message.cannotdeleteconfig=Konfigurationsdatei kann nicht gel\u00f6scht werden.
-message.cannotexecute=Kann Aktion nicht ausf\u00fchren.
-message.cannotfillchart=Kann der Grafik nicht mit Daten f\u00fcllen.
-message.cannotfillreport=Kann die Belegdaten nicht schreiben.
-message.cannotloadreport=Kann die Belegsdefinition nicht laden.
-message.cannotloadreportdata=Kann die Belegsdaten nicht laden.
-message.cannotloadresourcedata=Kann die Belegsquellen nicht laden.
-message.CannotMove=Kann nicht zur andere Zeile springen.
-message.cannotprint=Kann Rechnung nicht drucken.
-message.cannotprintline=Kann Zeile nicht drucken.
-message.cannotprintticket=Kann Rechnung nicht drucken.
-message.cannotsaveconfig=Konfigurationsdatei kann nicht gespeichert werden.
-message.changepassworddistinct=Das Kennwort stimmt nicht mit vorherigen Kennwort \u00fcberein. Bitte geben Sie es erneut ein!
-message.closecashok=Die Kasse wurde geschlossen.
-message.configfactory=Zur\u00fcck zu den Standardeinstellungen. Aktuelle Einstellungen werden gel\u00f6scht. Fortsetzen?
-message.configrestore=Ver\u00e4nderte Einstellungen werden zur\u00fcckgesetzt. Fortsetzen?
-message.createdatabase=Datenbank nicht gefunden. Eine neue wurde erstellt. Fortsetzen?
-message.databaseconnectionerror=Datenbank ist nicht verf\u00fcgbar. Verbinden nicht m\u00f6glich.
-message.databasedrivererror=Verbinden zur Datenbank nicht m\u00f6glich. Treiber fehlt!
-message.databasenotsupported=Datenbank "{0}" wird nicht unterst\u00fctzt.
-message.nocardreader=Kartenleser nicht definiert.
-message.nopaymentgateway=Zahlart ist nicht definiert.
-message.nosaveticket=Kann Rechnung nicht speichern.
-message.notactive=Beim Laden des Eingabefeldes ist ein Fehler aufgetreten.
-message.notpermissions=Sie haben keine ausreichenden Rechte.
-message.paymentcashneg=R\u00fcckzahlung erfolgt. Bitte OK dr\u00fccken!
-message.paymenterror=Bezahlung schlug Fehl.
-message.paymenterrorunknown=Der Bezahlungsfehler ist Unbekannt.
-message.paymentexceptionremote=Ausnahme wurde gew\u00e4hlt.
-message.paymentexceptionservice=Service Ausnahme.
-message.paymentfree=Kostenfrei
-message.paymentgatewayext=Machen Sie die EC-Karten Zahlung und dr\u00fccken sie OK.
-message.paymentgatewayextrefund=Machen Sie die Karten R\u00fcckerstattung un dr\u00fccken sie OK.
-message.paymentnotauthorised=Sie sind zu diese Zahlung nicht befugt.
-message.paymentrefundsnotsupported=R\u00fcckerstattungen werden nicht unterst\u00fctzt.
-message.preparescanner=Bereiten Sie den Strichkode Scanner vor und dr\u00fccken Sie OK.
-message.restartchanges=Die neue Konfiguration wurde gespeichert. Beim n\u00e4chsten Start wird die neue geladen.
-message.scannerfail=Der Produktscan schlug fehl.
-message.scannerfail2=Der Produktdownload schlug fehl.
-message.scannerok=Der Produktdownload war erfolgreich.
-message.title=Kassenregister Meldung
-message.updatedatabase=Eine alte Datenbankversion wurde entdeckt.Die Datenbank wird Automatisch konvertiert. Die Daten gehen aber m\u00f6glicherweise verloren.Bitte machen Sie vorher ein Backup. M\u00f6chten Sie diesen Vorgang fortsetzen?
-message.wannaclosecash=Sind Sie sich sicher, dass sie die Kasse schlie\u00dfen wollen?
-message.wannadelete=M\u00f6chten sie den Beleg wirklich l\u00f6schen?
-payment.title=Bezahlung
-Printer.Null=Kein Drucker verf\u00fcgbar
-Printer.Screen=Bildschirm Drucker
-Printer.Serial=Bondrucker
-resource.binary=Binair Datei
-resource.image=Bild
-resource.text=Text
-rest.label.chairs=Sitze
-rest.label.customer=Kunde
-rest.label.date=Datum
-rest.label.notes=Trinkgeld
-stock.in.movement=In Buchung
-stock.in.purchase=In Kauf
-stock.in.refund=In Erstattung
-stock.out.break=Aus Gebrochen
-stock.out.crossing=\u00dcbertragung
-stock.out.movement=Aus Buchung
-stock.out.refund=Aus Erstattung
-stock.out.sale=Aus Verkauf
-stock.in.openpack=(In) Open Pack
-stock.out.openpack=(Out) Open Pack
-stock.in.stockchange=(In) Stock Change
-stock.out.stockchange=(Out) Stock Change
-
-tab.cash=Bar
-tab.cashrefund=R\u00fcckerstattung
-tab.cheque=Scheck
-tab.chequerefund=Scheck R\u00fcckerstattung
-tab.free=Frei
-tab.magcard=Karte
-tab.paper=Gutschein
-tab.ticket=Belegnummer
-title.changepassword=Kennwort \u00e4ndern
-title.editor=Editor Meldung
-transpayment.cash=Bar
-transpayment.cashin=Bar Einzahlung
-transpayment.cashout=Bar Auszahlung
-transpayment.cashrefund=R\u00fcckerstattung
-transpayment.cheque=Scheck
-transpayment.chequerefund=Scheck Erstattung
-transpayment.free=Kostenfrei
-transpayment.magcard=Karte
-transpayment.magcardrefund=Karten R\u00fcckerstattung
-transpayment.paperin=Gutschein Eingabe
-transpayment.paperout=Gutschein Ausgabe
-transpayment.ticket=Rechnung
-Visor.Title=Chromis POS
-
-message.paymentgatewayswipe=Bitte Karte einf\u00fchren und auf OK dr\u00fccken.
-
-message.paymentgatewaytype=Kartendetails hinzuf\u00fcgen und dann best\u00e4tigen mit OK.
-
-label.placeid=ID
-
-message.noticket=Der Beleg existiert nicht mehr.
-
-Menu.ProductsWarehouse=Produkte nach Lagerort
-Menu.ProductPacks=Product Packs
-
-message.noproduct=Ein Produkt mit diesem Produktcode existiert nicht!
-
-label.type=Typ
-
-message.tableempty=Die Tabelle ist nun leer
-
-message.tablefull=Die Tabelle ist nun voll
-label.locale=Lokalisierung
-
-label.looknfeel=Aussehen
-
-button.scale=Anzahl
-label.integer=Ganzzahl
-
-label.double=Dezimal
-
-label.currency=W\u00e4hrung
-
-label.percent=Prozent
-label.time=Zeit
-
-label.datetime=Datum/Zeit
-scale.notdefined=Menge ist undefiniert
-scale.invalidvalue=Menge ung\u00fcltiger Wert
-scale.weighitem=Weigh Item
-
-message.noweight=Die Bedeutung ist nicht m\u00f6glich.
-label.scaleinput=Menge einf\u00fchren.
-message.cannotloadticket=Kann Rechnung nicht laden.
-message.notexiststicket=Der Beleg existiert nicht.
-label.catimage=Bild
-message.noupdatescript=Eine \u00e4ltere Datenbankversion wurde entdeckt. Ein Konvertieren ist jedoch nicht m\u00f6glich! Chromis POS schlie\u00dft nun.
-label.visible=Sichtbar
-label.name=Name
-label.address=Adress Zeille 1
-label.notes=Notiz
-Menu.Customers=Kunden
-Menu.CustomersManagement=Kunden
-form.customertitle=Kunden Liste
-message.nocard=Kundenkarte nicht gefunden. Neuer Versuch...
-label.card=Karte
-message.cardnew=Der Wert der Kate wird \u00e4ndern. Weiter machen?
-message.cardremove=Der Wert der Karte wird entfernt. Weiter machen?
-message.nocustomer=Eine Kunde mit dieser Kode existiert nicht
-label.maxdebt=Forderung Maximum
-label.curdebt=Forderung Momentan
-label.curdate=Forderung Datum
-message.wannasave=\u00c4nderungen speichern vor Abschliesen?
-Menu.Customers.Reports=\u00dcbersichten
-Menu.CustomersReport=Kunden
-label.bycustomer=Nach Kunde
-label.customer=Kunde
-Menu.CustomersBReport=Kunden standard
-Menu.Maintenance.Reports=\u00c3\u009cbersichten
-Menu.UsersReport=Nutzer
-label.restaurantcustomer=Empfange Kunde {0}. Selektiere ein lere Tisch.
-tab.debt=Abrechnung
-label.debt=Abrechnung
-transpayment.debt=Abrechnung
-message.nocustomernodebt=Dieses Beleg ist nicht zugeordnet.\nEs kann nicht bezahlt werden.
-message.cannotfindcustomer=Kann Kundendata nicht finden.
-button.pay=Kundezahlung
-Menu.CustomersReport=Kunden
-label.bycustomer=Nach Kunden
-transpayment.debtpaid=Bezahlte Rechnung
-label.taxid=Steuer ID
-label.attributes=Kennzeichen
-Menu.ProductSales=Artikel Verk\u00e4ufe
-Menu.ProductLabels=Artikel Labels
-caption.split=Beleg aufteilen
-label.searchkey=Suchbegriff
-label.contact=Kontakt
-label.location=Ort / Adresse
-label.firstname=Vorname
-label.lastname=Familien Name
-label.email=E-Mail
-label.phone=Telefon
-label.phone2=Alt. Telefon
-label.fax=Fax
-label.address2=Adres Zeile 2
-label.postal=Postleitzahl
-label.city=Stadt
-label.region=Bezirk
-label.country=Land
-label.sequence=Folgenummer
-message.customerdebtexceded=Kunde hat erlaubte Forderung \u00dcberschritten
-label.custtaxcategory=Kunde Steuer Kategorie
-label.taxcategory=Steuer Kategorie
-label.taxparent=Parent Steuer
-label.cascade=Gestaffelt
-label.reportsprinter=Beleg Drucker
-Menu.CustomersDiary=Kunden Journal
-Menu.TaxCustCategories=Steuer Kunden Kategorien
-Menu.TaxCategories=Steuer Kategorien
-button.clean=Zur\u00fcck setzen
-label.taxes=Steuer
-label.order=Bestellung
-label.customer=Kunden
-Menu.CustomersPayment=Kundenkontenzahlung
-Menu.CustomersBReport=S\u00e4umige Kunden
-Menu.Maintenance.Reports=Berichte
-Menu.UsersReport=Nutzer
-Menu.InventoryListDetail=Lager Details
-Menu.InventoryReOrder=Inventory: Re-Order
-Menu.InventoryDiffDetail=Lager Details
-message.mergetable=Tabellen zusammenf\u00fcgen
-message.mergetablequestion=Sind Sie sicher bei Tabellen zusammenf\u00fcgen?
-message.cannotloadlists=Kann Liste nicht laden
-label.javapos.printer=Drucker Name
-label.javapos.drawer=Laden Name
-Menu.Attributes=Produkt Kennzeichnen
-Menu.AttributeSets=Produkt Kennzeichensatz
-Menu.AttributeUse=Produkt Kennzeichen einsatz
-message.cannotcalculatetaxes=Kann steuer f\u00fcr Recnung nicht berechnen,\nSteuer f\u00fcr ein oder mehrere Produkte dieser Rechnung sind nicht gut definiert\n.
-Button.PrintCash=Drucken
-label.uploadingproducts=Produkte hochladen . . . Bitte warten
-label.attributeset=Kennzeichensatz
-label.attribute=Produkt Kennzeichen
-label.receiptprinter=Rechnungdrucker
-label.terminal=Terminal
-label.storename=Name Gesch\u00e4ft
-label.certificatepwd=Kennwort Zertifikat
-label.certificatepath=Zertifikat
-label.properties=Eigenschaften
-label.refunds=R\u00fcckerstattung
-label.money=Total
-
-label.packsinstock=In stock
-label.packof= packs of
-label.packstosplit=Packs to split
-label.productinpack=Product in pack
-label.split=Split
-
-label.search=Suchen
-label.merchantcode=Kode merchant
-label.sha=SHA
-label.commercesign=Commerce sign
-message.cannotfindattributes=Dieses Produkt hat keine Kennzeichnen
-message.productnotselected=Kein Produkt selektiert
-Menu.AttributeValues=Kennzeichen Wert
-message.cannotsaveinventorydata=Kann Lager Daten nicht speichern
-label.all=Alle
-form.tickettitle=Rechnung Liste
-form.selectprintertitle=W\u00e4hle Drucker
-message.printererror=Der Rechnung kan nicht gedruckt werden
-message.stockchangesactioned=Stock Changes Actioned
-
-message.noprinters=Keine Drucker definiert
-label.byproduct=Auf Produkt
-Menu.Auxiliar=Zus\u00e4tzliche Produkte
-button.Discount=Rabatt
-button.discountticket=Rabatt
-button.ExecuteChart=Cr\u00e9er un graphique
-button.NewTicket=Neu
-button.refundit=R\u00fcckgabe Zeile
-button.sendorder=K\u00fcche
-button.setperson=Kellner
-button.totaldiscount=Rabatt
-database.ScriptWarning=Sch\u00f6pfung Schriftart ist nicht erfolgreich gelaufen.
-database.ScriptError=Kann die Datenbanksch\u00f6pfungsschriftart nicht durchf\u00fchren.
-message.probleminbreak=label.lindediscount
diff --git a/locales/German/reports/uk/chromis/reports/people_messages_de.properties b/locales/German/people_messages_de.properties
similarity index 90%
rename from locales/German/reports/uk/chromis/reports/people_messages_de.properties
rename to locales/German/people_messages_de.properties
index 5019f25e..3f693e07 100644
--- a/locales/German/reports/uk/chromis/reports/people_messages_de.properties
+++ b/locales/German/people_messages_de.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/German/reports/uk/chromis/reports/productlabels_messages_de.properties b/locales/German/productlabels_messages_de.properties
similarity index 90%
rename from locales/German/reports/uk/chromis/reports/productlabels_messages_de.properties
rename to locales/German/productlabels_messages_de.properties
index d89526f5..fe6d2f2b 100644
--- a/locales/German/reports/uk/chromis/reports/productlabels_messages_de.properties
+++ b/locales/German/productlabels_messages_de.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/German/reports/uk/chromis/reports/products_messages_de.properties b/locales/German/products_messages_de.properties
similarity index 91%
rename from locales/German/reports/uk/chromis/reports/products_messages_de.properties
rename to locales/German/products_messages_de.properties
index 670b030c..29232574 100644
--- a/locales/German/reports/uk/chromis/reports/products_messages_de.properties
+++ b/locales/German/products_messages_de.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/German/reports/uk/chromis/reports/productsales_messages_de.properties b/locales/German/productsales_messages_de.properties
similarity index 91%
rename from locales/German/reports/uk/chromis/reports/productsales_messages_de.properties
rename to locales/German/productsales_messages_de.properties
index 4b3585f3..db662dff 100644
--- a/locales/German/reports/uk/chromis/reports/productsales_messages_de.properties
+++ b/locales/German/productsales_messages_de.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/German/reports/uk/chromis/reports/productscatalog_messages_de.properties b/locales/German/productscatalog_messages_de.properties
similarity index 91%
rename from locales/German/reports/uk/chromis/reports/productscatalog_messages_de.properties
rename to locales/German/productscatalog_messages_de.properties
index 1fdf7395..146b2f71 100644
--- a/locales/German/reports/uk/chromis/reports/productscatalog_messages_de.properties
+++ b/locales/German/productscatalog_messages_de.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/German/reports/uk/chromis/reports/taxes_messages_de.properties b/locales/German/taxes_messages_de.properties
similarity index 91%
rename from locales/German/reports/uk/chromis/reports/taxes_messages_de.properties
rename to locales/German/taxes_messages_de.properties
index c1b0e01a..a20c3f03 100644
--- a/locales/German/reports/uk/chromis/reports/taxes_messages_de.properties
+++ b/locales/German/taxes_messages_de.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/German/reports/uk/chromis/reports/usersales_messages_de.properties b/locales/German/usersales_messages_de.properties
similarity index 91%
rename from locales/German/reports/uk/chromis/reports/usersales_messages_de.properties
rename to locales/German/usersales_messages_de.properties
index f7f4c13a..19ee1e46 100644
--- a/locales/German/reports/uk/chromis/reports/usersales_messages_de.properties
+++ b/locales/German/usersales_messages_de.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/badprice_messages_it.properties b/locales/Italian/badprice_messages_it.properties
similarity index 91%
rename from locales/Italian/reports/uk/chromis/reports/badprice_messages_it.properties
rename to locales/Italian/badprice_messages_it.properties
index 87e2ab00..54ffa28f 100644
--- a/locales/Italian/reports/uk/chromis/reports/badprice_messages_it.properties
+++ b/locales/Italian/badprice_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/cashflow_messages_it.properties b/locales/Italian/cashflow_messages_it.properties
similarity index 93%
rename from locales/Italian/reports/uk/chromis/reports/cashflow_messages_it.properties
rename to locales/Italian/cashflow_messages_it.properties
index ea7e854f..3f3cdacd 100644
--- a/locales/Italian/reports/uk/chromis/reports/cashflow_messages_it.properties
+++ b/locales/Italian/cashflow_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/cashregisterlog_messages_it.properties b/locales/Italian/cashregisterlog_messages_it.properties
similarity index 94%
rename from locales/Italian/reports/uk/chromis/reports/cashregisterlog_messages_it.properties
rename to locales/Italian/cashregisterlog_messages_it.properties
index 78775525..fc31a58b 100644
--- a/locales/Italian/reports/uk/chromis/reports/cashregisterlog_messages_it.properties
+++ b/locales/Italian/cashregisterlog_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/categorysales_messages_it.properties b/locales/Italian/categorysales_messages_it.properties
similarity index 91%
rename from locales/Italian/reports/uk/chromis/reports/categorysales_messages_it.properties
rename to locales/Italian/categorysales_messages_it.properties
index 98735fc9..7182a604 100644
--- a/locales/Italian/reports/uk/chromis/reports/categorysales_messages_it.properties
+++ b/locales/Italian/categorysales_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/chartsales_messages_it.properties b/locales/Italian/chartsales_messages_it.properties
similarity index 90%
rename from locales/Italian/reports/uk/chromis/reports/chartsales_messages_it.properties
rename to locales/Italian/chartsales_messages_it.properties
index 0d370e7a..2b9832cc 100644
--- a/locales/Italian/reports/uk/chromis/reports/chartsales_messages_it.properties
+++ b/locales/Italian/chartsales_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/closedpos_messages_it.properties b/locales/Italian/closedpos_messages_it.properties
similarity index 93%
rename from locales/Italian/reports/uk/chromis/reports/closedpos_messages_it.properties
rename to locales/Italian/closedpos_messages_it.properties
index 4d022851..0e9d2304 100644
--- a/locales/Italian/reports/uk/chromis/reports/closedpos_messages_it.properties
+++ b/locales/Italian/closedpos_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -30,7 +30,7 @@ label.terminaltotal=Totale Terminale
label.subtotal=Subtotale
label.period=Periodo:
label.printed=Stampato
-
+transpayment.bank=Banca
transpayment.cash=Cassa
transpayment.magcard=Carta
transpayment.cashrefund=Rimborso
diff --git a/locales/Italian/reports/uk/chromis/reports/closedproducts_messages_it.properties b/locales/Italian/closedproducts_messages_it.properties
similarity index 91%
rename from locales/Italian/reports/uk/chromis/reports/closedproducts_messages_it.properties
rename to locales/Italian/closedproducts_messages_it.properties
index f179bac4..97bfc42b 100644
--- a/locales/Italian/reports/uk/chromis/reports/closedproducts_messages_it.properties
+++ b/locales/Italian/closedproducts_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/customers_messages_it.properties b/locales/Italian/customers_messages_it.properties
similarity index 87%
rename from locales/Italian/reports/uk/chromis/reports/customers_messages_it.properties
rename to locales/Italian/customers_messages_it.properties
index 19aaaeda..fa28a34b 100644
--- a/locales/Italian/reports/uk/chromis/reports/customers_messages_it.properties
+++ b/locales/Italian/customers_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -24,4 +24,5 @@ label.name=Nome
label.notes=Note
label.printed=Stampato
label.taxid=ID Account
-label.title=Clienti
\ No newline at end of file
+label.title=Clienti
+label.discount=Discount
\ No newline at end of file
diff --git a/locales/Italian/reports/uk/chromis/reports/customersdiary_messages_it.properties b/locales/Italian/customersdiary_messages_it.properties
similarity index 90%
rename from locales/Italian/reports/uk/chromis/reports/customersdiary_messages_it.properties
rename to locales/Italian/customersdiary_messages_it.properties
index 6e41874a..f79a3bfd 100644
--- a/locales/Italian/reports/uk/chromis/reports/customersdiary_messages_it.properties
+++ b/locales/Italian/customersdiary_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/dailypresence_messages_it.properties b/locales/Italian/dailypresence_messages_it.properties
similarity index 90%
rename from locales/Italian/reports/uk/chromis/reports/dailypresence_messages_it.properties
rename to locales/Italian/dailypresence_messages_it.properties
index 0ec9d0b2..7d43a446 100644
--- a/locales/Italian/reports/uk/chromis/reports/dailypresence_messages_it.properties
+++ b/locales/Italian/dailypresence_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/dailyschedule_messages_it.properties b/locales/Italian/dailyschedule_messages_it.properties
similarity index 91%
rename from locales/Italian/reports/uk/chromis/reports/dailyschedule_messages_it.properties
rename to locales/Italian/dailyschedule_messages_it.properties
index cd27d5e5..807c0e24 100644
--- a/locales/Italian/reports/uk/chromis/reports/dailyschedule_messages_it.properties
+++ b/locales/Italian/dailyschedule_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/extendedcashregisterlog_messages_it.properties b/locales/Italian/extendedcashregisterlog_messages_it.properties
similarity index 94%
rename from locales/Italian/reports/uk/chromis/reports/extendedcashregisterlog_messages_it.properties
rename to locales/Italian/extendedcashregisterlog_messages_it.properties
index 1489e3d8..3a339e81 100644
--- a/locales/Italian/reports/uk/chromis/reports/extendedcashregisterlog_messages_it.properties
+++ b/locales/Italian/extendedcashregisterlog_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/extproducts_messages_it.properties b/locales/Italian/extproducts_messages_it.properties
similarity index 92%
rename from locales/Italian/reports/uk/chromis/reports/extproducts_messages_it.properties
rename to locales/Italian/extproducts_messages_it.properties
index 8b70ed25..d9239139 100644
--- a/locales/Italian/reports/uk/chromis/reports/extproducts_messages_it.properties
+++ b/locales/Italian/extproducts_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/invaliddata_messages_it.properties b/locales/Italian/invaliddata_messages_it.properties
similarity index 90%
rename from locales/Italian/reports/uk/chromis/reports/invaliddata_messages_it.properties
rename to locales/Italian/invaliddata_messages_it.properties
index bb452c47..85101b3b 100644
--- a/locales/Italian/reports/uk/chromis/reports/invaliddata_messages_it.properties
+++ b/locales/Italian/invaliddata_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/inventory_messages_it.properties b/locales/Italian/inventory_messages_it.properties
similarity index 91%
rename from locales/Italian/reports/uk/chromis/reports/inventory_messages_it.properties
rename to locales/Italian/inventory_messages_it.properties
index 7102acae..c300c98e 100644
--- a/locales/Italian/reports/uk/chromis/reports/inventory_messages_it.properties
+++ b/locales/Italian/inventory_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/inventoryb_messages_it.properties b/locales/Italian/inventoryb_messages_it.properties
similarity index 90%
rename from locales/Italian/reports/uk/chromis/reports/inventoryb_messages_it.properties
rename to locales/Italian/inventoryb_messages_it.properties
index 9b85fd20..faae7859 100644
--- a/locales/Italian/reports/uk/chromis/reports/inventoryb_messages_it.properties
+++ b/locales/Italian/inventoryb_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/inventorydiff_messages_it.properties b/locales/Italian/inventorydiff_messages_it.properties
similarity index 91%
rename from locales/Italian/reports/uk/chromis/reports/inventorydiff_messages_it.properties
rename to locales/Italian/inventorydiff_messages_it.properties
index 83506eca..d3ad543c 100644
--- a/locales/Italian/reports/uk/chromis/reports/inventorydiff_messages_it.properties
+++ b/locales/Italian/inventorydiff_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/inventorydiffdetail_messages_it.properties b/locales/Italian/inventorydiffdetail_messages_it.properties
similarity index 91%
rename from locales/Italian/reports/uk/chromis/reports/inventorydiffdetail_messages_it.properties
rename to locales/Italian/inventorydiffdetail_messages_it.properties
index d9e89ec2..c5aebd8e 100644
--- a/locales/Italian/reports/uk/chromis/reports/inventorydiffdetail_messages_it.properties
+++ b/locales/Italian/inventorydiffdetail_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/inventorylistdetail_messages_it.properties b/locales/Italian/inventorylistdetail_messages_it.properties
similarity index 90%
rename from locales/Italian/reports/uk/chromis/reports/inventorylistdetail_messages_it.properties
rename to locales/Italian/inventorylistdetail_messages_it.properties
index 105285bd..e7a71422 100644
--- a/locales/Italian/reports/uk/chromis/reports/inventorylistdetail_messages_it.properties
+++ b/locales/Italian/inventorylistdetail_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/locales/beans_messages_it.properties b/locales/Italian/locales/beans_messages_it.properties
deleted file mode 100644
index 6a5ea9ac..00000000
--- a/locales/Italian/locales/beans_messages_it.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-button.cancel=Annulla
-button.ok=OK
-button.Today=Oggi
-title.calendar=Seleziona una Data
-Button.Today=Oggi
diff --git a/locales/Italian/locales/data_messages_it.properties b/locales/Italian/locales/data_messages_it.properties
deleted file mode 100644
index 35994394..00000000
--- a/locales/Italian/locales/data_messages_it.properties
+++ /dev/null
@@ -1,90 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-button.cancel=Annulla
-button.information=Info
-button.ok=OK
-
-caption.sort=Sort
-
-exception.iofile=Errore di lettura file.
-exception.nocompare=Comparatore previsto per QBF.
-exception.nodataset=Insieme di Dati non definito.
-exception.nofinishedfile=Sentences file not finished.
-exception.nodelete=Nessun record cancellato.
-exception.noinsert=Nessun record creato.
-exception.nonegativelimits=Limiti negativi non ammessi.
-exception.noparamtype=Tipo di parametro non consentito.
-exception.noreadfile=File di frasi Errore durante la lettura.
-exception.notnull=Il valore non pu\u00c3\u00b2 essere nullo.
-exception.noupdate=Nessun records aggiornato.
-exception.noupdatecount=Conteggio Update non definito.
-exception.outofbounds=Fuori dai limiti.
-exception.parserconfig=XML errore analizzatore. Si prega di contattare l'amministratore.
-exception.xmlfile=Errore di analisi. File XML non valido.
-
-label.andby=e per
-label.casesensitive=Case sensitive
-label.findwhat=Trova
-label.imagefiles=I file immagine
-label.match=Confronta
-label.sortby=Ordina per
-label.where=Dove
-
-list.anypart=Qualsiasi parte del campo
-list.re=Espressione Regolare
-list.startfield=Inizio campo
-list.wholefield=intero campo
-
-qbf.none=Nessuno
-qbf.null=E nullo
-qbf.notnull=Non \u00c3\u00a8 nullo
-qbf.equals=Uguale
-qbf.distinct=Distinto
-qbf.greater=Maggiore
-qbf.less=Minore
-qbf.greaterequals=Maggiore o uguale
-qbf.lessequals=Minore o uguale
-qbf.re=Caratteri speciali
-
-message.changeslost=Verranno perse le modifiche. Vuoi continuare?
-message.nodelete=Impossibile segnare il record per l'eliminazione.
-message.nolistdata=Impossibile trovare nella lista dei dati.
-message.nomove=Impossibile spostare ad altri record.
-message.nonew=Impossibile creare un nuovo record.
-message.norecord=Record non trovato.
-message.noreload=Impossibile caricare la lista dei dati.
-message.nosave=Record non \u00c3\u00a8 stato salvato.
-message.nosort=La condizione di ordinamento definito non \u00c3\u00a8 valido
-message.resizeimage=L'immagine selezionata \u00c3\u00a8 maggiore della dimensione prevista per questo campo. Vuoi ridimensionare l'immagine?
-message.wannasave=Vuoi salvare le modifiche prima di uscire?
-
-sgn.caution=Attenzione \:
-sgn.danger=Pericolo \:
-sgn.notice=Avviso \:
-sgn.important=Importante \:
-sgn.success=Successo \:
-sgn.unknown=Sconosciuto \:
-sgn.warning=Attenzione \:
-
-title.editor=Messaggio Editor
-title.find=Trova
-title.message=Messaggio del gestore database
-combo.year=Anno
-combo.today=Oggi
-combo.month=Mese
diff --git a/locales/Italian/locales/erp_messages_it.properties b/locales/Italian/locales/erp_messages_it.properties
deleted file mode 100644
index 714046ce..00000000
--- a/locales/Italian/locales/erp_messages_it.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.configerp=ERP Configurazione
-label.erpurl=Servizi URL
-label.erpid=Codice Entit\u00c3\u00a0
-label.erporg=Codice Organizazione
-label.erppos=Codice POS
-label.erpuser=Utente
-label.erppassword=Password
-message.urlnotdefined=Servizio di sincronizzazione di URL non \u00c3\u00a8 stato definito.
-message.syncordersok=La sincronizzazione ordini ha avuto successo.
-message.syncordersinfo={0} ordini sincronizzati.
-message.syncproductsok=La sincronizzazione dei dati ha avuto successo.
-message.syncproductsinfo={0} prodotti sincronizzati. \ n {1} clienti sincronizzati.
-message.remoteexception=Errore di comunicazione.
-message.serviceexception=Impossibile connettersi al servizio.
-message.malformedurlexception=L'URL di servizio \u00c3\u00a8 sbagliato.
-message.returnnull=Parametri di sincronizzazione sono sbagliate.
-message.zeroproducts=Non ci sono dati da sincronizzare.
-message.zeroorders=Non ci sono ordini da sincronizzare.
-message.propsnotdefined=Le propriet\u00c3\u00a0 di sincronizzazione risorse "chromis.properties" non \u00c3\u00a8 stata definita.
\ No newline at end of file
diff --git a/locales/Italian/locales/pos_messages_it.properties b/locales/Italian/locales/pos_messages_it.properties
deleted file mode 100644
index 42fc1dc3..00000000
--- a/locales/Italian/locales/pos_messages_it.properties
+++ /dev/null
@@ -1,748 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-button.memberdiscount=Sconti
-Button.Cancel=Annulla
-button.catalogadd=Si
-button.catalogdel=No
-button.clean=Resetta
-Button.Close=Esci
-Button.CloseCash=Chiudi Cassa
-button.Discount=Sconto
-Button.DeleteTicket=Elimina Scontrino
-button.edit=Modifica
-button.ExecuteChart=Esegui Grafico
-button.executefilter=Esegui
-Button.ExecuteReport=Avvia Report
-Button.Factory=Ripristina
-button.linediscount=Sconto' %
-button.listtickets=Elenca
-button.migrate=Migra Database
-button.movetable=Muovi
-button.NewTicket=Nuova
-Button.OK=OK
-button.opendrawer=Apri Cassetto
-button.pay=Paga
-button.peoplepassword=Password
-button.print=Stampa
-Button.PrintCash=Stampa
-button.receive=Receive
-button.refund=Rimborsa
-button.refundall=Rimborsa Tutto
-button.refundit=Rimborsa Articolo
-button.refundline=Rimborsa Riga
-button.refundone=Rimborsa Uno
-button.reloadticket=Ricarica
-button.reservations=Prenotazioni
-button.reset=Resetta
-Button.Restore=Aggiorna db
-Button.Save=Salva
-button.scale=Bilancia
-button.sendorder= Invia Ordine
-button.setperson=Cameriere
-button.tables=Tavoli
-button.totaldiscount=Total Sconto'
-Button.Exit=Esci
-button.moorings=Ormeggi
-button.test=TEST
-button.newcustomer=Cliente Database
-
-caption.tickets=Scontrini
-caption.upload=Aggiorna Lista Prodotti
-caption.split=Split Ricevuta
-
-database.ScriptError=Impossibile eseguire lo script di creazione del database.
-database.ScriptNotFound=Impossibile trovare lo script Updater.sql.
-database.ScriptWarning=Script Creation non \u00e8 stato eseguito correttamente.
-database.UnableToConnect=Impossibile connettersi con il database! Controllare l'impostazione del database in configurazione
-database.UpdaterWarning=Impossibile eseguire lo script di aggiornamento del database.
-datebase.ResetPickup=Impossibile eseguire ripristino pickup
-Display.Null=Visualizzazione non disponibile
-Display.Screen=Visualizza a Schermo
-Display.Window=Visualizza a Finestra
-
-exception.unavailabledataset=Dati non disponibili
-exception.unavailablefield=Campo non definito \: {0}
-exception.unavailablefields=Campo non disponibile
-
-filter.dbdriverlib=Driver library (*.jar,*.zip)
-
-form.customertitle=Elenco clienti
-form.productslist=Elenco prodotti
-form.selectprintertitle=Selezionare Stampante
-form.tickettitle=Lista Scontrini
-
-label.address=Indirizzo Linea 1
-label.address2=Indirizzo Linea 2
-label.all=Tutti
-label.attribute=Attributo
-label.attributes=Attributi
-label.attributeset=Set Attributo
-label.autologoffpanel=Auto LogOff
-label.autologonoff=Auto LogOff Dopo la Vendita
-label.autoloffrestaurant=In modalit\u00e0 Restorante - ritorna ai tavoli
-label.autolofftime=Auto LogOff dopo il tempo di inattivit\u00e0
-label.autologoffzero=secondi, 0 = LogOff non Temporizzato
-
-label.btndisplay=Tasto Visualizza testo
-label.bybarcode=Per Barcode
-label.bydates=Per Data
-label.byform=Per forma
-label.byreason=Per motivi
-label.bycustomer=Per cliente
-label.byproduct=Per Prodotto
-label.bywarehouse=Per localit\u00e0
-
-label.card=Carta
-label.cardexpdate=Data di scadenza
-label.cardholder=Nome del titolare
-label.cardnumber=Numero di carta
-Label.Cash=Cassa
-label.cascade=Cascata
-Label.CashMachine=Registratore di cassa
-label.catid=ID
-label.catimage=Immagine
-label.catname=Categoria
-label.certificatepwd= Certificato P/WD
-label.certificatepath=Certificato
-Label.ChangeCash=Cambia
-label.city=Citt\u00e0
-label.commerceid=Commercio ID
-label.commercepwd=Commercio P/WD
-label.commercesign=Commercio Sign
-label.companyname=Nome della ditta
-label.companyaddr1=Via
-label.companyaddr2=Indirizzo linea 2
-label.companyaddr3=Citt\u00e0
-label.companyaddr4=Cap
-label.companytelephone=Telefono
-label.companyFax=Fax
-label.companyemail=Email
-label.companytax=Partita IVA
-label.companywww=Sito Web
-
-
-label.configreceipt=Setup ricevuta
-label.contact=Contatto
-label.country=Paese
-label.csvbad=Bad Prezzo
-label.csvclearlog=Cancella Import Log
-label.csvdelimit=Separatore
-label.csvenableclear=Abilita Cancella Import Button
-label.csvfile=File
-label.csvimpostbtn=Importa CSV
-label.cvsinvalid=Prodotti non validi
-label.csvmissing=Dati mancanti
-label.csvnewproducts=Nuovi Prodotti
-label.cvsnotchanged=Non \u00e8 cambiato
-label.csvpriceupdated=Prezzi Aggiornati
-label.csvread=Leggi Header
-label.csvrecordsfound=Risultati della tua ricerca
-label.csvresetimport=Resetta Importa dati
-label.csvsellingintax=Prezzo di vendita IVA inclusa?
-
-
-label.curdebt=Debito corrente
-label.curdate=Debito Data
-label.currency=Valuta
-label.currencybutton=Nascondi Pagamenti sovrapposizione di testo
-label.customer=Cliente
-label.custtaxcategory=Tasse Categoria
-
-
-Label.Database=Database
-label.date=Data
-label.datestitle=Date
-label.datetime=Data Ora
-Label.DbDriver=Driver di Classe
-label.dbdriverlib=Driver Library
-Label.DbPassword=Password
-Label.DbURL=URL
-Label.DbUser=Utente
-label.debt=Debito
-label.double=Doppio
-label.dutyid=ID
-label.dutyname=Nome Tassa
-label.dutyrate=Tasso
-
-label.editline=Modifica Linea
-label.email=email
-Label.EndDate=Data Fine
-
-label.fax=Fax
-label.firstname=Nome
-label.floorid=ID
-label.floorname=Piano
-
-label.general=Generale
-label.grossprofit=Utile lordo
-
-label.Infopanel=Nascondi Footer Status Bar
-label.image=Immagine
-label.inputamount=Casella di input sopra della tastiera
-Label.InputCash=Dato
-label.integer=Intero
-label.item=Prodotto
-label.item2=Descrizione
-
-label.javapos.drawer=Cassetto
-label.javapos.printer=Stampante
-
-label.lastname=Cognome
-label.lindediscount=Sconto' %
-label.LoadError=Errore cercando di mostrare questa funzionalit\u00e0
-label.locale=Locale
-label.location=Indirizzo
-label.locationaddress=Indirizzo
-label.locationid=ID
-label.locationname=Nome
-label.looknfeel=Skin
-label.loyaltycardnumber=Numero Carta
-label.loyaltyproducts=Dettagli fedelt\u00e0
-
-Label.MachineDisplay=Visualizza Cliente
-label.machinedisplayconn=Modo
-label.machinedisplayport=Porta
-Label.MachineName=Nome
-Label.MachinePrinter=Stampante
-Label.MachinePrinter2=Stampante 2
-Label.MachinePrinter3=Stampante 3
-Label.MachinePrinter4=Stampante 4
-Label.MachinePrinter5=Stampante 5
-Label.MachinePrinter6=Stampante 6
-label.machineprinterport=Porta
-Label.MachineScreen=Schermo
-label.magcardreader=Lettore Mag Card
-label.mandatory=Mandatario
-label.margin=Margine
-label.marine=Usa Opzione Marina
-label.maxdebt=Limite Credito
-label.maximum=Massimo
-label.merchantcode=Codice Commerciante
-label.minimum=Minimo
-label.money=Totale
-
-label.packsinstock=In stock
-label.packof= packs of
-label.packstosplit=Packs to split
-label.productinpack=Product in pack
-label.split=Split
-
-label.mooringscreatefor=Crea Scontrino per
-label.mooringcreatebtn=Crea Scontrino
-
-label.name=Nome
-Label.Name=Nome
-label.notes=Note
-label.noticketstoclose=Nessun conto da chiudere
-label.nullcategory=(Nessuna Categoria)
-
-label.order=Ordine
-
-Label.Password=Password
-label.passwordnew=Nuova Password
-label.passwordold=Vecchia Password
-label.passwordrepeat=Ripeti Password
-Label.Payment=Pgamento
-label.paymentdate=Data
-label.paymentgateway=Gateway Pagamento
-label.paymentnote=Note
-label.paymentreason=Motivo
-label.paymentstitle=Sommario Scontrino
-label.paymenttestmode=Modo test
-label.paymenttotal=Ammontare
-label.peopleimage=Immagine
-label.peoplename=Nome
-label.peoplevisible=Visibile
-label.percent=Percentuale
-label.pickupcodesize=Lunghezza Numero PickUp
-label.phone=Telefono
-label.phone2=Cellulare
-label.placefloor=Piano
-label.placeid=ID
-label.placename=Luogo
-label.placeposition=Posizione
-label.postal=Cap
-label.price=Prezzo
-label.pricetax=Prezzo + Tasse
-label.printtokitchen=Stampa su stampante remota
-label.prodaux=Ausiliario (modificatore)?
-label.prodbarcode=Codice a Barre
-label.prodcategory=Categoria
-label.prodcost=Costo
-label.prodgeneral=Generale
-label.prodincatalog=Includi Catalogo?
-label.prodname=Nome
-label.prodorder=Ordine in catalogo
-label.prodpricebuy=Prezzo acq.
-label.prodpricesell=Prezzo ven.
-label.prodpriceselltax=prezzo ven. + Tasse
-label.prodproperties=Propriet\u00e0
-label.productreceipt=\u00c8 necessaria la ricevuta di Garanzia
-label.prodref=Referenze
-label.prodscale=In Bilancia
-label.prodstock=Magazzino
-label.prodstockcost=Costo di magazzino per anno
-label.prodstockmax=Livello Massimo
-label.pricewith00=Prezzo con centesimi
-label.prodstocksec=Livello Minimo
-label.prodstockvol=Volume Magazzino
-label.prodtaxcode=Tasse
-label.produnits=Unit\u00e0
-label.prodvaluebuy=Valore di acquisto
-label.prodvaluesell=Valore di vendita
-label.prodvolume=Volume
-label.properties=Propriet\u00e0
-
-label.receiptprint=Stampa Ricevuta off
-label.receiptprinter=Stampante di ricevute
-label.recorddeleted=(Record Eliminato)
-label.recordeof=(No Records)
-label.recordnew=(Nuovo Record)
-label.refunds=Rimborsi
-label.region=Stato/Regione
-label.remainingcash=Rimanente
-label.reportsprinter=Stampante di Rapporti
-label.resetpickup=Resetta Contatore Pickup
-label.resname=Risorse
-label.restaurantcustomer=Ricevi Cliente {0}. Seleziona un tavolo libero.
-label.restaurantmove=Sposta tavolo {0}. Selezionare un'altro tavolo o il tavolo originale
-label.role=Ruolo
-label.roletableclass=Classe
-label.roletabledescription=Descrizione
-label.roletableallowed=Ammessi
-
-
-label.sales=Vendite
-label.salestitle=Vendite
-label.scale=Bilancia
-label.scaleinput=Inserisci Peso
-label.scanner=Scanner
-label.SChargepanel=Costo del servizio
-label.SCOnOff=Abilita costi di servizio
-label.SCRestaurant=Solo modo Ristorante?
-label.SCRate=Tasso costo del servizio
-label.SCZero=%
-label.search=Ricerca
-label.searchkey=Chiave di ricerca
-label.sequence=Sequenza
-label.sha=SHA
-Label.StartDate=Data Inizio
-label.startuptext=Testo
-label.startuplogo=Logo
-label.startuppanel=Schermata Avvio
-label.stockdate=Data
-label.stockproduct=Prodotto
-label.stockreason=Motivo
-label.stocktaker=Inserito da
-label.storename=Nome Negozio
-label.subcategorytitle=Visualizza nome nel pannello
-label.subtotalcash=Subtotale
-
-label.table=Tavolo
-label.tabledisplayoptions=Visualizza Tavolo
-label.tableshowcustomerdetails=Mostra dettagli Cliente sul tavolo
-label.tableshowwaiterdetails=Mostra dettagli Cameriere sul tavolo
-label.tax=Tasse
-label.taxcash=Tasse
-label.taxcategory=Categoria Tassa
-label.taxes=Tasse
-label.taxid=ID Account
-label.taxincluded=Imposta Tasse Incluse all'avvio
-label.taxparent=Tassa genitore
-label.terminal=Terminale
-label.textcolourcustomer=Cliente colore del testo
-label.textcolourwaiter=Cameriere colore del testo
-label.textclourtablename=Nome Tavolo colore del testo
-label.texttip=Messaggio Tip Text
-label.ticketid=Scontrino #
-Label.Tickets=Transazioni
-Label.Ticketsbag=Scontrini
-Label.ticketsetupexample=Esempio
-Label.ticketsetupprefix=prefisso numero ricevuta
-Label.ticketsetupnumber=Numero Ricevuta lunghezza min.
-label.pricewith00=Usa 00 dal tastierino
-
-
-label.time=Tempo
-label.totalcash=Totale
-label.totaldiscount=Totale Sconto
-label.type=Tipo
-
-label.units=Unit\u00e0
-label.units2=Quantit\u00e0
-label.uploadingproducts=Caricamento Prodotti. Attendere Prego...
-label.user=Utente
-
-label.value=Valore
-label.value2=Prezzo
-label.variableprice=Prezzo variabile del prodotto
-label.visible=Visibile
-
-label.warehouse=Prodotto
-
-Menu.Attributes=Attributi Prodotto
-Menu.AttributeSets=Imposta Attributi prodotto
-Menu.AttributeUse=Uso Attributo Prodotti
-Menu.AttributeValues=Valori Attributo
-Menu.Auxiliar=Prodotti Ausiliari
-
-Menu.Backoffice=Amministrazione
-
-Menu.CashFlow=Flusso-Cassa
-Menu.CashRegisterLog=Log Transazioni
-Menu.CategorySales=Vendite Categoria
-Menu.Catalog=Catalogo
-Menu.Categories=Categorie
-Menu.CategoryProductSalesChart=Grafico Vendite Categoria
-Menu.ChangePassword=Cambia Password
-Menu.ClosedProducts=Vendite prodotti
-Menu.CloseTPV=Chiudi Cassa
-Menu.Closing=Cassa Chiusa
-Menu.Configuration=Configurazione
-Menu.CSVImport=Importa File CSV
-Menu.CSVReset=Pulisci Log Importazione Database
-Menu.Customers=Clienti
-Menu.Customers.Reports=Rapporti
-Menu.CustomersBReport=Debitori (Card Style)
-Menu.CustomersDiary=Giornale Clienti
-Menu.CustomersList=Elenco Clienti
-Menu.CustomersManagement=Clienti
-Menu.CustomersPayment=Pagamento Cliente
-Menu.CustomersReport=Clienti (Card Style)
-
-message.DBDefault=
Il Database di default usato da Chromis POS \u00e8 Apache Derby Embedded. Esso \u00e8 destinato a stand-alone, per singolo utente.
\n
If you need multiple terminals to connect to a central database then select from the Database dropdown list above.
\n
If you have selected an alternative database then you must ensure it is installed and configured correctly before trying to connect Chromis POS
\n
-
-Menu.ERPOrders=ERP Sincronizzazione Ordini
-Menu.ERPProducts=POS Sincronizzazione
-Menu.Exit=Uscita
-Menu.ExtendedByProducts=Vandite Prodotti esteso
-Menu.ExtendedCashRegisterLog=Log Transazioni esteso
-Menu.ExtendedSales=Vendite esteso
-
-Menu.Floors=Piani
-
-Menu.Import=Importa
-Menu.Import.Reports=Rapporto Importazione
-Menu.InvalidData=Trovati dati non validi o duplicati
-Menu.Inventory=Inventario
-Menu.Inventory2=Inventario Corrente
-Menu.InventoryBroken=Inventario: Mancanze
-Menu.InventoryDiff=Inventario: Differenze
-Menu.InventoryDiffDetail=Inventario: Dettagli Differenza
-Menu.InventoryListDetail=Inventario: Dettagli Elenco
-Menu.InventoryReOrder=Inventory: Re-Order
-
-Menu.Locations=Posizioni
-
-Menu.Main=Registra
-Menu.Maintenance=Manutenzione
-Menu.Maintenance.ERP=Chromis ERP
-Menu.Maintenance.POS=Punto vendita
-Menu.Maintenance.Reports=Rapporti
-Menu.MissingData=I dati mancanti o Prezzo non corretto nel File
-
-Menu.NewProducts=Nuovi Prodotti Aggiunti
-
-Menu.PaymentReport=Pagamenti
-Menu.Payments=Pagamenti
-Menu.Printer=Stampanti
-Menu.ProductLabels=Etichette Prodotti
-Menu.Products=Prodotti
-Menu.ProductSales=Vendite Prodotti
-Menu.ProductsWarehouse=Posizione Prodotti
-Menu.ProductPacks=Product Packs
-Menu.StockChanges=Stock Changes
-Menu.StockChangesReport=Stock Changes Report
-Menu.Promotions=Promotions
-Menu.PromotionsReport=Promotions Report
-
-Menu.Reports=Rapporti
-Menu.ReportTaxes=Sommario Tasse
-Menu.Resetpickup=Azzera contatore pickup
-Menu.Resources=Risorse
-Menu.Roles=Ruoli
-
-Menu.SalesByCustomer=Vendite per Cliente
-Menu.SaleCatalog=Catalogo
-Menu.SalesChart=Grafico vendite
-Menu.SalesManagement=Vendite
-Menu.SalesManagement.Reports=Rapporti
-Menu.SalesProfit=Profitti Vendite prodotto
-Menu.SaleTaxes=Tasse di Vendita
-Menu.StockDiary=Giornale Magazzino
-Menu.StockManagement=Magazzino
-Menu.StockManagement.Edit=Manutenzione
-Menu.StockManagement.Reports=Rapporti
-Menu.StockMovement=Movimento Magazzino
-Menu.System=Sistema
-
-Menu.Tables=Tavoli
-Menu.Taxes=Tasse
-Menu.TaxCustCategories=Categorie Tasse Cliente
-Menu.TaxCategories=Categorie Tasse
-Menu.ThirdParties=Fornitori
-Menu.ThirdPartiesManagement=Gestione fornitori
-Menu.Ticket=Vendite
-Menu.TicketEdit=Modifica Vendite
-Menu.TicketRefund=Rimborsi
-Menu.Tools=Utilit\u00e0
-Menu.Top10Sales=Top 10 Vendite
-
-Menu.Update= Aggiornamento manuale del database
-Menu.UpdatedPrices= Cambiamenti Prezzo
-Menu.Users=Utenti
-Menu.UsersReport=Utenti
-Menu.UserSells=Vendite per Utente
-Menu.Utilities=Utilit\u00e0
-Menu.UtilityOptions=Utilit\u00e0 Opzioni
-
-
-message.BadPassword=Password non valida. Riprova
-
-message.cannotcalculatetaxes=Impossibile calcolare tasse ricevuta.\nLe tasse di uno o pi\u00f9 prodotti non sono configurate correttamente
-message.cannotchangepassword=Non posso cambiare Password
-message.cannotclosecash=Non posso chiudere la cassa
-message.cannotdeleteconfig=Il file di configurazione non pu\u00f2 essere eliminato
-message.cannotexecute=Impossibile eseguire questa azione
-message.cannotfillchart=Impossibile caricare dati grafico
-message.cannotfillreport=Impossibile caricare dati resoconto
-message.cannotfindattributes=Gli attributi per questo prodotto non sono stati impostati
-message.cannotfindcustomer=Non posso trovare i dati dell'utente
-message.cannotloadlists=Non posso caricare la lista dei dati
-message.cannotloadreport=Impossibile caricare definizioni resoconto
-message.cannotloadreportdata=Impossibile caricare dati resoconto
-message.cannotloadresourcedata=Impossibile caricare risorse resoconto
-message.cannotloadticket=Impossibile caricare la prenotazione
-message.CannotMove=Impossibile spostare la registrazione
-message.cannotprint=Impossibile stampare
-message.cannotprintline=Impossibile stapare la linea
-message.cannotprintticket=Impossibile stampare la ricevuta
-message.cannotsaveconfig=Impossibile salvare il file di configurazione
-message.cannotsaveinventorydata=Impossibile salvare dati inventario
-message.cardnew=Modifica il valore della carta. Vuoi continuare?
-message.cardremove=Valore carta sar\u00e0 rimosso. Vuoi continuare?
-
-message.changepassworddistinct=Conferma Password
-message.changeserver=Cambiare il server corrente \u00e8 in fase di sviluppo
-message.closecashok=Cassa Chiusa OK
-message.configfactory=Sei sicuro di voler ripristinare i valori di default?
-message.configrestore=Sei sicuro di volere annullare i cambiamenti?
-message.createdatabase=Non \u00e8 stato trovato nessun database. Sar\u00e0 creato un database di default. Vuoi Continuare?
-message.createdatabasejl=Necessarie informazioni per creare il nuovo database cambiamenti per John L. Questo sar\u00e0 fatto. Vuoi Continuare? In caso contrario, non sar\u00e0 possibile utilizzare il sistema.
-message.customerdebtexceded=Limite Credito Cliente Superato
-
-message.databaseconnectionerror=Impossibile connettersi al Database: Database non disponibile
-message.databasedrivererror=Impossibile connettersi al Database: Driver del Database non trovato
-message.databasenotsupported=Database "{0}" not supportato
-message.databasesuccess=
Sei Connesso!
Riavvia Chromis POS per caricare la connessione del database
-
-message.mergetable=Unire Tabelle
-message.mergetablequestion=Questo Unisce le tabelle. Sei sicuro di voler fare questo?
-message.nigratemessage=Migrazione Database
-message.migratenotsupported=Tipo Migrazione Database non supportato
-
-message.nocard=Carta Utente non trovata. Riprovare
-message.nocardreader=Lettore di carte non configurato
-message.nocustomer=Questo codice cliente non esiste
-message.nocustomernodebt=La vendita non \u00e8 assegnata a un account cliente. \nNon pu\u00f2 essere messa in conto
-message.nopaymentgateway=Gateway di pagamento non configurato
-message.noprinters=Non ci sono stampanti installate
-message.noproduct=Questo codice prodotto non esiste
-message.nosaveticket=Impossibile salvare lo scontrino di vendita
-message.notactive=Errore Caricamento Pannello
-message.notexiststicket=La Ricevuta non esiste
-message.notexiststickettitle=Messaggio Ricevuta
-message.noticket=La Ricevuta non esiste
-message.notpermissions=Non sei autorizzato a eseguire questa attivit\u00e0
-message.noupdatescript=Un database da una versione precedente \u00e8 stato rilevato ma non \u00e8 possibile aggiornare automaticamente il database. Chromis POS uscir\u00e0 ora.
-message.noweight=La pesatura non \u00e8 stata possibile
-message.nullticket=Non \u00e8 possibile creare uno scontrino vuoto! Si prega di aggiungere qualcosa a questa Vendita
-
-message.paymentcashneg=Effettuare il rimborso. Quindi premere OK
-message.paymenterror=Transazione Pagamento Errore!
-message.paymenterrorunknown=Transazione Pagamento Errore Sconosciuto!
-message.paymentexceptionremote=Pagamento remoto Errore!
-message.paymentexceptionservice=Servizi di pagamento eccezione Errore!
-message.paymentfree=Free!
-message.paymentgatewayext=
Effettuare il pagamento con la carta. Quindi premere OK
-message.paymentgatewayextrefund=
Effettuare il rimborso carta. Quindi premere OK
-message.paymentgatewayswipe=Strisciare la carta, quindi premere OK
-message.paymentgatewaytype=Inserisci dettagli carta. Quindi premi OK
-message.paymentnotauthorised=Transazione non autorizzata
-message.paymentrefundsnotsupported=Rimborso non supportato
-message.preparescanner=Preparare lo scanner ScanPal per caricare la lista prodotti, quindi premere OK
-message.printererror=Impossibile Stampare La Ricevuta
-message.productnotselected=Nessun prodotto Selezionato
-message.stockchangesactioned=Stock Changes Actioned
-
-message.restartchanges=Configurazione salvata con successo. Le modifiche saranno applicate al prossimo avvio
-
-message.scannerfail=Caricamento Elenco prodotti Fallito
-message.scannerfail2=Download Elenco prodotti Fallito
-message.scannerok=Caricamento Elenco prodotti eseguito con successo
-message.startupText=Cambiare il contenuto del testo di avvio di default e non dichiarando che si tratta di software libero \u00e8 in violazione della Free Software Foundation's GNU General Public License GPL
-message.systemclosecash=Spostare pulsante Chiudi Cassa
-
-message.tableempty=Tavolo Libero
-message.tablefull=Tavolo Occupato
-message.title=Messaggio registratore di cassa
-
-message.updatedatabase=\u00c8 stato rilevato un database da una versione precedente. Il database verr\u00e0 aggiornato automaticamente. I DATI POTREBBERO ANDARE PERSI. CREARE PRIMA UN BACKUP. Vuoi continuare?
-message.updatedatabasejl=Sono necessarie modifiche nuovo database (John l changes). Il database verr\u00e0 aggiornato automaticamente. I DATI POTREBBERO ANDARE PERSI. CREARE PRIMA UN BACKUP. Vuoi continuare? In caso contrario, non sar\u00e0 possibile utilizzare il sistema.
-
-message.wannaclosecash=Sei sicuro di voler chiudere la Cassa?
-message.wannadelete=Sei sicuro di voler eliminare l'attuale ordine?
-message.wannasave=Salva cambiamenti prima di uscire?
-
-migration.ScriptNotFound=Migration Script non trovato
-migration.warning=Migration SQL Errore
-migration.warningnodefault=Create Database non trovata
-migration.warningjl=Create JL features non trovata
-migration.warningnofk=Drop Foreign Key non trovata
-migration.notvalidversion=Il nuovo tipo di database non supportato
-
-payment.title=Pagamento
-
-Printer.Null=Stampante non disponibile
-Printer.Screen=Stampante a schermo
-Printer.Serial=Stampante Scontrini
-
-resource.binary=Binario
-resource.image=Immagine
-resource.text=Testo
-
-rest.label.chairs=Sedie
-rest.label.customer=Cliente
-rest.label.date=Prenotazioni
-rest.label.notes=Notee
-
-scale.notdefined=Bilancia non definita
-scale.invalidvalue=Valore bilancia non valido
-scale.weighitem=Weigh Item
-
-stock.in.movement=(Entr.) Movimento
-stock.in.purchase=(Entr.) Acquisto
-stock.in.refund=(Entr.) Rimborso
-stock.out.break=(Usc.) Danni
-stock.out.crossing=Passaggio
-stock.out.movement=(Usc.) Movimento
-stock.out.refund=(Usc.) Rimborso
-stock.out.sale=(Usc.) Vendita
-stock.in.openpack=(In) Open Pack
-stock.out.openpack=(Out) Open Pack
-stock.in.stockchange=(In) Stock Change
-stock.out.stockchange=(Out) Stock Change
-
-tab.bank=Banca
-tab.cash=Cassa
-tab.cashrefund=Rimborso
-tab.cheque=Assegno
-tab.chequerefund=Assegno
-tab.free=Free
-tab.magcard=Carta
-tab.paper=Buono
-tab.debt=Debito
-
-title.changepassword=Cambia Password
-title.editor=Messaggio Info
-
-transpayment.bank=Banca
-transpayment.cash=Cassa
-transpayment.cashin=(Entr.) Cassa
-transpayment.cashout=(Usc.) Cassa
-transpayment.cashrefund=Rimborso
-transpayment.cheque=Assegno
-transpayment.chequerefund=Rimborso Assegno
-transpayment.free=Free
-transpayment.magcard=Carta
-transpayment.magcardrefund=Rimborso Carta
-transpayment.paperin=Nota Ingresso
-transpayment.paperout=Nota Uscita
-transpayment.debt=Debito
-transpayment.debtpaid=Debito Pagato
-
-Visor.Title=Chromis POS
-
-# Employee Presence Management
-Menu.Leaves=Permessi
-Menu.Breaks=Pause
-Menu.CheckInCheckOut=Controllo Ingr/Usc
-Menu.PresenceManagement=Gestione Presenze
-Menu.Employees.Reports=Reports
-Menu.DailyPresenceReport=Presenza giornaliera
-Menu.DailyScheduleReport=Programma giornaliero
-Menu.PerformanceReport=Performance
-label.epm.employee=Impiegato
-label.epm.employee.id=ID Impiegato
-label.epm.startdate=Data Inizio
-label.epm.enddate=Data Fine
-label.epm.notes=Note
-label.epm.visible=Visibile
-message.cannotfindemployee=Non riesci a trovare dipendente
-message.invalidenddate=Data di fine non pu\u00f2 essere impostata prima di data sistema o la data di inizio
-message.invalidstartdate=Data di inizio non pu\u00f2 essere precedente alla data di sistema
-message.leavefor=Manca per
-message.at=alle
-message.probleminbreak=Errore in pausa
-message.leavecontrol=\u00e8 in permesso. Per rientrare: contattare il proprio gestore per annullare il congedo
-message.checkedin=Controllato Ingr. alle
-message.checkedout=Controllato Usc. alle
-message.cannotcheckin=Controllo Ingr. Impossibile
-message.cannotcheckout=Controllo Usc. Impossibile
-message.noshift=senza spostamento precedente
-message.breakoverandcheckedin='s pausa \u00e8 iniziata e controllata alle
-message.breakoverandcheckedout='s pausa \u00e8 finita e controllata alle
-
-label.roletabldescription=Desc
-Button.newcustomer=Annulla
-message.systemclosecas=jCheckBox1
-
-title.CSVImport=Stato
-label.splitpayment=Split pagamento
-label.addsplitpayment=Aggiungi Split pagamento
-label.deletesplitpayment=Elimina Split pagamento
-Button.Test=Test
-label.CatalogueYes=Incluso
-label.CatalogueNo=Escluso
-label.CatalogueStatus=In Catalogo?
-label.nocashsales=No Vendita - Apertura Cassetto
-label.closeoptions=Chiudi Opzioni
-label.producthtmlguide=\n
\u00c8 possibile personalizzare i tasti a schermo Vendite prodotto qui. \nSe avete anche un po 'di conoscenza HTML siete a pi\u00f9 di met\u00e0 strada!
\n
Passa il mouse sopra il testo a destra per vedere il codice HTML per l'effetto che vuoi sul tuo Pulsante
\n
-label.prodminmax=I livelli di Minimo e Massimo del prodotto sono mantenuti in Posizione \nProdotti insieme con le unit\u00e0 vendute
-label.fontcolour=Colore Testo
-tooltip.fontcolour=
-label.fontsize=TESTO PICCOLO
-tooltip.fontsize=piccolo
-tooltip.fontsizesmall=piccolo
-label.fontsizesmall=Grandezza Font: piccolo
-label.fontsizelarge=Testo Grande
-tooltip.fontsizelarge=Grande
-label.fontweight=Testo Grassetto
-label.fontitalic=Testo Italic
-tooltip.fontitalic=Testo Italic
-tooltip.fontbold=Grassetto
-label.fontexample=Display DUE LINEE NEL PULSANTE
-tooltip.fontexample=Display DUE LINEE NEL PULSANTE
-button.htmltest=Visualizza Testo
-label.prodbuttonhtml=Pulsante Vendita HTML
-label.CatalogueStatusYes=In Catalogo
-label.CatalogueStatusNo=Non In Catalogo
-label.Transactions=Transazioni
-label.photo=Foto
diff --git a/locales/Italian/reports/uk/chromis/reports/missingdata_messages_it.properties b/locales/Italian/missingdata_messages_it.properties
similarity index 91%
rename from locales/Italian/reports/uk/chromis/reports/missingdata_messages_it.properties
rename to locales/Italian/missingdata_messages_it.properties
index b33039b4..890fc0e2 100644
--- a/locales/Italian/reports/uk/chromis/reports/missingdata_messages_it.properties
+++ b/locales/Italian/missingdata_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/newproducts_messages_it.properties b/locales/Italian/newproducts_messages_it.properties
similarity index 90%
rename from locales/Italian/reports/uk/chromis/reports/newproducts_messages_it.properties
rename to locales/Italian/newproducts_messages_it.properties
index b56c9248..dbb17e23 100644
--- a/locales/Italian/reports/uk/chromis/reports/newproducts_messages_it.properties
+++ b/locales/Italian/newproducts_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/paymentreport_messages_it.properties b/locales/Italian/paymentreport_messages_it.properties
similarity index 91%
rename from locales/Italian/reports/uk/chromis/reports/paymentreport_messages_it.properties
rename to locales/Italian/paymentreport_messages_it.properties
index 1c4f278b..fd97cb1f 100644
--- a/locales/Italian/reports/uk/chromis/reports/paymentreport_messages_it.properties
+++ b/locales/Italian/paymentreport_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/people_messages_it.properties b/locales/Italian/people_messages_it.properties
similarity index 89%
rename from locales/Italian/reports/uk/chromis/reports/people_messages_it.properties
rename to locales/Italian/people_messages_it.properties
index b01a19f7..d33e4bd4 100644
--- a/locales/Italian/reports/uk/chromis/reports/people_messages_it.properties
+++ b/locales/Italian/people_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/performancereport_messages_it.properties b/locales/Italian/performancereport_messages_it.properties
similarity index 91%
rename from locales/Italian/reports/uk/chromis/reports/performancereport_messages_it.properties
rename to locales/Italian/performancereport_messages_it.properties
index 373ba298..fb685910 100644
--- a/locales/Italian/reports/uk/chromis/reports/performancereport_messages_it.properties
+++ b/locales/Italian/performancereport_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/piesalescat_messages_it.properties b/locales/Italian/piesalescat_messages_it.properties
similarity index 91%
rename from locales/Italian/reports/uk/chromis/reports/piesalescat_messages_it.properties
rename to locales/Italian/piesalescat_messages_it.properties
index b95ffd9b..5b497513 100644
--- a/locales/Italian/reports/uk/chromis/reports/piesalescat_messages_it.properties
+++ b/locales/Italian/piesalescat_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/productlabels_messages_it.properties b/locales/Italian/productlabels_messages_it.properties
similarity index 89%
rename from locales/Italian/reports/uk/chromis/reports/productlabels_messages_it.properties
rename to locales/Italian/productlabels_messages_it.properties
index 6f50844c..72fdde59 100644
--- a/locales/Italian/reports/uk/chromis/reports/productlabels_messages_it.properties
+++ b/locales/Italian/productlabels_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/products_messages_it.properties b/locales/Italian/products_messages_it.properties
similarity index 91%
rename from locales/Italian/reports/uk/chromis/reports/products_messages_it.properties
rename to locales/Italian/products_messages_it.properties
index 0cecdeea..c45b483e 100644
--- a/locales/Italian/reports/uk/chromis/reports/products_messages_it.properties
+++ b/locales/Italian/products_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/productsales_messages_it.properties b/locales/Italian/productsales_messages_it.properties
similarity index 90%
rename from locales/Italian/reports/uk/chromis/reports/productsales_messages_it.properties
rename to locales/Italian/productsales_messages_it.properties
index bc317720..cf0beb4c 100644
--- a/locales/Italian/reports/uk/chromis/reports/productsales_messages_it.properties
+++ b/locales/Italian/productsales_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/productsalesprofit_messages_it.properties b/locales/Italian/productsalesprofit_messages_it.properties
similarity index 92%
rename from locales/Italian/reports/uk/chromis/reports/productsalesprofit_messages_it.properties
rename to locales/Italian/productsalesprofit_messages_it.properties
index fadacab7..03023f6f 100644
--- a/locales/Italian/reports/uk/chromis/reports/productsalesprofit_messages_it.properties
+++ b/locales/Italian/productsalesprofit_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/productscatalog_messages_it.properties b/locales/Italian/productscatalog_messages_it.properties
similarity index 91%
rename from locales/Italian/reports/uk/chromis/reports/productscatalog_messages_it.properties
rename to locales/Italian/productscatalog_messages_it.properties
index 003bc1dc..a2e45b1a 100644
--- a/locales/Italian/reports/uk/chromis/reports/productscatalog_messages_it.properties
+++ b/locales/Italian/productscatalog_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/salebycustomer_messages_it.properties b/locales/Italian/salebycustomer_messages_it.properties
similarity index 91%
rename from locales/Italian/reports/uk/chromis/reports/salebycustomer_messages_it.properties
rename to locales/Italian/salebycustomer_messages_it.properties
index e0c1a0b9..028e706c 100644
--- a/locales/Italian/reports/uk/chromis/reports/salebycustomer_messages_it.properties
+++ b/locales/Italian/salebycustomer_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/salecatalog_messages_it.properties b/locales/Italian/salecatalog_messages_it.properties
similarity index 89%
rename from locales/Italian/reports/uk/chromis/reports/salecatalog_messages_it.properties
rename to locales/Italian/salecatalog_messages_it.properties
index 733868d6..2f983e95 100644
--- a/locales/Italian/reports/uk/chromis/reports/salecatalog_messages_it.properties
+++ b/locales/Italian/salecatalog_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/saletaxes_messages_it.properties b/locales/Italian/saletaxes_messages_it.properties
similarity index 91%
rename from locales/Italian/reports/uk/chromis/reports/saletaxes_messages_it.properties
rename to locales/Italian/saletaxes_messages_it.properties
index ee9618df..e867b07c 100644
--- a/locales/Italian/reports/uk/chromis/reports/saletaxes_messages_it.properties
+++ b/locales/Italian/saletaxes_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/taxcatsales_message_it.properties b/locales/Italian/taxcatsales_message_it.properties
similarity index 91%
rename from locales/Italian/reports/uk/chromis/reports/taxcatsales_message_it.properties
rename to locales/Italian/taxcatsales_message_it.properties
index 30e48348..1c4cbb38 100644
--- a/locales/Italian/reports/uk/chromis/reports/taxcatsales_message_it.properties
+++ b/locales/Italian/taxcatsales_message_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/taxes_messages_it.properties b/locales/Italian/taxes_messages_it.properties
similarity index 90%
rename from locales/Italian/reports/uk/chromis/reports/taxes_messages_it.properties
rename to locales/Italian/taxes_messages_it.properties
index da5a3255..2f71293d 100644
--- a/locales/Italian/reports/uk/chromis/reports/taxes_messages_it.properties
+++ b/locales/Italian/taxes_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/timeseriesproduct_messages_it.properties b/locales/Italian/timeseriesproduct_messages_it.properties
similarity index 92%
rename from locales/Italian/reports/uk/chromis/reports/timeseriesproduct_messages_it.properties
rename to locales/Italian/timeseriesproduct_messages_it.properties
index ec8b645b..930c9476 100644
--- a/locales/Italian/reports/uk/chromis/reports/timeseriesproduct_messages_it.properties
+++ b/locales/Italian/timeseriesproduct_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/top10sales_messages_it.properties b/locales/Italian/top10sales_messages_it.properties
similarity index 90%
rename from locales/Italian/reports/uk/chromis/reports/top10sales_messages_it.properties
rename to locales/Italian/top10sales_messages_it.properties
index a2e9c579..77bf7912 100644
--- a/locales/Italian/reports/uk/chromis/reports/top10sales_messages_it.properties
+++ b/locales/Italian/top10sales_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/updatedprices_messages_it.properties b/locales/Italian/updatedprices_messages_it.properties
similarity index 91%
rename from locales/Italian/reports/uk/chromis/reports/updatedprices_messages_it.properties
rename to locales/Italian/updatedprices_messages_it.properties
index b9d818fe..07e204b1 100644
--- a/locales/Italian/reports/uk/chromis/reports/updatedprices_messages_it.properties
+++ b/locales/Italian/updatedprices_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Italian/reports/uk/chromis/reports/usersales_messages_it.properties b/locales/Italian/usersales_messages_it.properties
similarity index 91%
rename from locales/Italian/reports/uk/chromis/reports/usersales_messages_it.properties
rename to locales/Italian/usersales_messages_it.properties
index 47978eb4..ee41ee8f 100644
--- a/locales/Italian/reports/uk/chromis/reports/usersales_messages_it.properties
+++ b/locales/Italian/usersales_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Mexican/reports/uk/chromis/reports/chartsales_messages_es_MX.properties b/locales/Mexican/chartsales_messages_es_MX.properties
similarity index 90%
rename from locales/Mexican/reports/uk/chromis/reports/chartsales_messages_es_MX.properties
rename to locales/Mexican/chartsales_messages_es_MX.properties
index ca9bee27..8871c69c 100644
--- a/locales/Mexican/reports/uk/chromis/reports/chartsales_messages_es_MX.properties
+++ b/locales/Mexican/chartsales_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Mexican/reports/uk/chromis/reports/closedpos_messages_es_MX.properties b/locales/Mexican/closedpos_messages_es_MX.properties
similarity index 92%
rename from locales/Mexican/reports/uk/chromis/reports/closedpos_messages_es_MX.properties
rename to locales/Mexican/closedpos_messages_es_MX.properties
index 48bf15a0..c1398ff0 100644
--- a/locales/Mexican/reports/uk/chromis/reports/closedpos_messages_es_MX.properties
+++ b/locales/Mexican/closedpos_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -25,6 +25,7 @@ label.subtotal=Subtotal
label.tax=Impuestos
label.title=Cierre de efectivo
label.total=Total
+transpayment.bank=Banca
transpayment.cash=Efectivo
transpayment.cashin=(entrada) Efectivo
transpayment.cashout=(salida) Efectivo
diff --git a/locales/Mexican/reports/uk/chromis/reports/closedproducts_messages_es_MX.properties b/locales/Mexican/closedproducts_messages_es_MX.properties
similarity index 91%
rename from locales/Mexican/reports/uk/chromis/reports/closedproducts_messages_es_MX.properties
rename to locales/Mexican/closedproducts_messages_es_MX.properties
index b3485ac7..53a52e03 100644
--- a/locales/Mexican/reports/uk/chromis/reports/closedproducts_messages_es_MX.properties
+++ b/locales/Mexican/closedproducts_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Mexican/reports/uk/chromis/reports/customers_messages_es_MX.properties b/locales/Mexican/customers_messages_es_MX.properties
similarity index 89%
rename from locales/Mexican/reports/uk/chromis/reports/customers_messages_es_MX.properties
rename to locales/Mexican/customers_messages_es_MX.properties
index 52b5fb8e..d1c5c570 100644
--- a/locales/Mexican/reports/uk/chromis/reports/customers_messages_es_MX.properties
+++ b/locales/Mexican/customers_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -22,3 +22,4 @@ label.maxdebt=Cr\u00e9dito m\u00e1ximo
label.notes=Notas
label.taxid=ID de impuesto
label.title=Clientes
+label.discount=Discount
\ No newline at end of file
diff --git a/locales/Mexican/reports/uk/chromis/reports/customersdiary_messages_es_MX.properties b/locales/Mexican/customersdiary_messages_es_MX.properties
similarity index 90%
rename from locales/Mexican/reports/uk/chromis/reports/customersdiary_messages_es_MX.properties
rename to locales/Mexican/customersdiary_messages_es_MX.properties
index 3ac30f5d..fa2d65ab 100644
--- a/locales/Mexican/reports/uk/chromis/reports/customersdiary_messages_es_MX.properties
+++ b/locales/Mexican/customersdiary_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Mexican/reports/uk/chromis/reports/inventory_messages_es_MX.properties b/locales/Mexican/inventory_messages_es_MX.properties
similarity index 91%
rename from locales/Mexican/reports/uk/chromis/reports/inventory_messages_es_MX.properties
rename to locales/Mexican/inventory_messages_es_MX.properties
index 2cf0154d..c218f522 100644
--- a/locales/Mexican/reports/uk/chromis/reports/inventory_messages_es_MX.properties
+++ b/locales/Mexican/inventory_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Mexican/reports/uk/chromis/reports/inventoryb_messages_es_MX.properties b/locales/Mexican/inventoryb_messages_es_MX.properties
similarity index 90%
rename from locales/Mexican/reports/uk/chromis/reports/inventoryb_messages_es_MX.properties
rename to locales/Mexican/inventoryb_messages_es_MX.properties
index 66af614b..4e41519c 100644
--- a/locales/Mexican/reports/uk/chromis/reports/inventoryb_messages_es_MX.properties
+++ b/locales/Mexican/inventoryb_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Mexican/reports/uk/chromis/reports/inventorydiff_messages_es_MX.properties b/locales/Mexican/inventorydiff_messages_es_MX.properties
similarity index 91%
rename from locales/Mexican/reports/uk/chromis/reports/inventorydiff_messages_es_MX.properties
rename to locales/Mexican/inventorydiff_messages_es_MX.properties
index e4b1b976..bc85ed0c 100644
--- a/locales/Mexican/reports/uk/chromis/reports/inventorydiff_messages_es_MX.properties
+++ b/locales/Mexican/inventorydiff_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Mexican/reports/uk/chromis/reports/inventorydiffdetail_messages_es_MX.properties b/locales/Mexican/inventorydiffdetail_messages_es_MX.properties
similarity index 91%
rename from locales/Mexican/reports/uk/chromis/reports/inventorydiffdetail_messages_es_MX.properties
rename to locales/Mexican/inventorydiffdetail_messages_es_MX.properties
index 46c94ab9..ed8f867f 100644
--- a/locales/Mexican/reports/uk/chromis/reports/inventorydiffdetail_messages_es_MX.properties
+++ b/locales/Mexican/inventorydiffdetail_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Mexican/reports/uk/chromis/reports/inventorylistdetail_messages_es_MX.properties b/locales/Mexican/inventorylistdetail_messages_es_MX.properties
similarity index 90%
rename from locales/Mexican/reports/uk/chromis/reports/inventorylistdetail_messages_es_MX.properties
rename to locales/Mexican/inventorylistdetail_messages_es_MX.properties
index 5398a784..889930c4 100644
--- a/locales/Mexican/reports/uk/chromis/reports/inventorylistdetail_messages_es_MX.properties
+++ b/locales/Mexican/inventorylistdetail_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Mexican/locales/beans_messages_es_MX.properties b/locales/Mexican/locales/beans_messages_es_MX.properties
deleted file mode 100644
index ea72e89b..00000000
--- a/locales/Mexican/locales/beans_messages_es_MX.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-Button.Today=Hoy
-
-button.ok=Aceptar
-
-button.cancel=Cancelar
-
-title.calendar=Seleccione una fecha
diff --git a/locales/Mexican/locales/data_messages_es_MX.properties b/locales/Mexican/locales/data_messages_es_MX.properties
deleted file mode 100644
index 7ba61b05..00000000
--- a/locales/Mexican/locales/data_messages_es_MX.properties
+++ /dev/null
@@ -1,82 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-button.cancel=Cancelar
-button.information=Informaci\u00f3n
-button.ok=Aceptar
-caption.sort=Ordenar
-combo.month=Este mes
-combo.today=Hoy
-combo.year=Este a\u00f1o
-exception.iofile=Error de archivo de lectura.
-exception.nocompare=Se esperaba un comparador de QBF.
-exception.nodataset=Conjunto de datos sin definir.
-exception.nodelete=No se han borrado registros.
-exception.nofinishedfile=El archivo de sentencias no ha finalizado.
-exception.noinsert=No se han creado registros.
-exception.nonegativelimits=No se permiten l\u00edmites negativos.
-exception.noparamtype=El tipo del par\u00e1metro no est\u00e1 permitido.
-exception.noreadfile=Error leyendo el archivo de sentencias.
-exception.notnull=El valor debe ser no nulo.
-exception.noupdate=No se han modificado registros.
-exception.noupdatecount=N\u00famero de modificaciones sin definir.
-exception.outofbounds=Fuera de los l\u00edmites.
-exception.parserconfig=Error del analizador XML. Por favor contacte a su administrador.
-exception.xmlfile=Archivo XML inv\u00e1lido. An\u00e1lise el error.
-label.andby=Y por
-label.casesensitive=May\u00fasculas / Min\u00fasculas
-label.findwhat=Buscar
-label.imagefiles=Archivos de im\u00e1genes
-label.match=Condici\u00f3n
-label.sortby=Ordenar por
-label.where=Donde
-list.anypart=Cualquier parte del campo
-list.re=Expresi\u00f3n regular
-list.startfield=Principio del campo
-list.wholefield=Todo el campo
-message.changeslost=Los cambios realizados se perder\u00e1n. \u00bfDesea continuar?
-message.nodelete=No se puede marcar el registro para borrar.
-message.nolistdata=No se puede buscar en la lista de datos.
-message.nomove=No se puede mover a otro registro.
-message.nonew=No se puede crear un nuevo registro.
-message.norecord=No se encuentra el registro.
-message.noreload=No se puede recargar la lista de datos.
-message.nosave=No se puede grabar el registro.
-message.nosort=La condici\u00f3n de ordenaci\u00f3n no es correcta
-message.resizeimage=La image seleccionada es m\u00e1s grande que el tama\u00f1o adecuado para el campo. \u00bfDesea redimensionar la imagen?
-message.wannasave=\u00bfDesea guardar los cambios antes de salir?
-qbf.distinct=Distinto
-qbf.equals=Igual
-qbf.greater=Mayor
-qbf.greaterequals=Mayor o igual
-qbf.less=Menor
-qbf.lessequals=Menor o igual
-qbf.none=Ninguno
-qbf.notnull=No nulo
-qbf.null=Nulo
-qbf.re=Expresi\u00f3n regular
-sgn.caution=Atenci\u00f3n:\
-sgn.danger=Peligro:\
-sgn.important=Importante:
-sgn.notice=Aviso:\
-sgn.success=\u00c9xito:\
-sgn.unknown=Desconocido:\
-sgn.warning=Precauci\u00f3n:\
-title.editor=Mensaje del editor
-title.find=Buscar
-title.message=Mensaje del gestor de datos
diff --git a/locales/Mexican/locales/erp_messages_es_MX.properties b/locales/Mexican/locales/erp_messages_es_MX.properties
deleted file mode 100644
index 7ba52ed9..00000000
--- a/locales/Mexican/locales/erp_messages_es_MX.properties
+++ /dev/null
@@ -1,55 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.configerp=Configuraci\u00f3n ERP
-
-label.erpurl=URL de servicio
-
-label.erpid=C\u00f3digo de entidad
-
-label.erporg=C\u00f3digo de organizacion
-
-label.erppos=C\u00f3digo de punto de venta
-
-label.erpuser=Usuario
-
-label.erppassword=Clave de acceso
-
-message.urlnotdefined=No se ha definido la direcci\u00f3n URL del servicio de sincronizaci\u00f3n
-
-message.syncordersok=Se han sincronizado las \u00f3rdenes correctamente.
-
-message.syncordersinfo=Se han sincronizado {0} \u00f3rdenes.
-
-message.syncproductsok=Se han sincronizado los datos correctamente.
-
-message.syncproductsinfo=Se han sincronizado {0} productos.\nSe han sincronizado {1} clientes.
-
-message.remoteexception=Se ha producido un error de comunicaci\u00f3n.
-
-message.serviceexception=No se ha podido conectar con el servicio.
-
-message.malformedurlexception=La direcci\u00f3n URL del servicio no es correcta.
-
-message.returnnull=Los par\u00e1metros de sincronizaci\u00f3n no son correctos.
-
-message.zeroproducts=No hay datos que sincronizar.
-
-message.zeroorders=No hay \u00f3rdenes que sincronizar.
-
-message.propsnotdefined=No se ha definido el recurso de propiedades de sincronizaci\u00f3n "chromis.properties".
diff --git a/locales/Mexican/locales/pos_messages_es_MX.properties b/locales/Mexican/locales/pos_messages_es_MX.properties
deleted file mode 100644
index 0ba53fc4..00000000
--- a/locales/Mexican/locales/pos_messages_es_MX.properties
+++ /dev/null
@@ -1,491 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-Button.Cancel=Cancelar
-Button.Close=Cerrar
-Button.CloseCash=Cerrar caja
-Button.DeleteTicket=Borrar
-Button.ExecuteChart=Ejecutar gr\u00e1fico
-Button.ExecuteReport=Ejecutar informe
-Button.Factory=Valores de f\u00e1brica
-Button.NewTicket=Nuevo
-Button.OK=Aceptar
-Button.PrintCash=Imprimir
-Button.Restore=Restaurar
-Button.Save=Guardar
-Database.ScriptError=No se ha podido ejecutar el gui\u00f3n de creaci\u00f3n de base de datos.
-Database.ScriptWarning=No se ha podido ejecutar el gui\u00f3n correctamente.
-Display.Null=Visor no disponible
-Display.Screen=Visor en pantalla
-Display.Window=Visor
-Label.Cash=Caja
-Label.CashMachine=Caja registradora
-Label.ChangeCash=Cambio
-Label.Database=Base de datos
-Label.DbDriver=Driver (clase)
-Label.DbPassword=Clave de acceso
-Label.DbURL=Cadena de conexi\u00f3n
-Label.DbUser=Usuario
-Label.EndDate=Fecha de fin
-Label.InputCash=Entregado
-Label.LoadError=Se ha producido un error al mostrar esta funcionalidad.
-Label.MachineDisplay=Visor de clientes
-Label.MachineName=Nombre
-Label.MachinePrinter=Impresora
-Label.MachinePrinter2=Impresora 2
-Label.MachinePrinter3=Impresora 3
-Label.MachineScreen=Pantalla
-Label.Name=Nombre
-Label.Password=Clave
-Label.Payment=Pagos
-Label.StartDate=Fecha de inicio
-Label.Tickets=Pagos
-Label.Ticketsbag=Tickets
-Menu.AttributeSets=Conjuntos de atributos de producto
-Menu.AttributeUse=Atributos de producto por conjunto
-Menu.AttributeValues=Valores de atributo
-Menu.Attributes=Atributos de producto
-Menu.Auxiliar=Productos auxiliares
-Menu.Backoffice=Administraci\u00f3n
-Menu.Catalog=Cat\u00e1logo
-Menu.Categories=Categor\u00edas
-Menu.ChangePassword=Cambiar clave
-Menu.CloseTPV=Cerrar caja
-Menu.ClosedProducts=Ventas de productos
-Menu.Closing=Cierres de caja
-Menu.Configuration=Configuraci\u00f3n
-Menu.Customers=Clientes
-Menu.Customers.Reports=Informes
-Menu.CustomersBReport=Clientes morosos
-Menu.CustomersDiary=Diario de clientes
-Menu.CustomersManagement=Clientes
-Menu.CustomersPayment=Clientes
-Menu.CustomersReport=Clientes
-Menu.ERPOrders=Sincronizar \u00f3rdenes
-Menu.ERPProducts=Sincronizar POS
-Menu.Exit=Salir
-Menu.Floors=Plantas
-Menu.Inventory=Almacenes
-Menu.Inventory2=Existencias
-Menu.InventoryBroken=Existencias bajo m\u00ednimos
-Menu.InventoryDiff=Diario de existencias
-Menu.InventoryDiffDetail=Detalles de diario de inventario
-Menu.InventoryListDetail=Detalles de inventario actual
-Menu.InventoryReOrder=Inventory: Re-Order
-Menu.Locations=Almacenes
-Menu.Main=Principal
-Menu.Maintenance=Mantenimiento
-Menu.Maintenance.ERP=Chromis ERP
-Menu.Maintenance.POS=Terminal de venta
-Menu.Maintenance.Reports=Informes
-Menu.Payments=Movimientos de caja
-Menu.Printer=Impresora
-Menu.ProductLabels=Etiquetas de productos
-Menu.ProductSales=Ventas de productos
-Menu.Products=Productos
-Menu.ProductsWarehouse=Productos por almac\u00e9n
-Menu.ProductPacks=Product Packs
-Menu.StockChanges=Stock Changes
-Menu.StockChangesReport=Stock Changes Report
-Menu.Promotions=Promotions
-Menu.PromotionsReport=Promotions Report
-
-Menu.ReportTaxes=Impuestos
-Menu.Reports=Informes
-Menu.Resources=Recursos
-Menu.Roles=Roles
-Menu.SalesChart=Gr\u00e1fico de ventas
-Menu.SalesManagement=Ventas
-Menu.SalesManagement.Reports=Informes
-Menu.StockDiary=Ajustes de existencias
-Menu.StockManagement=Inventario
-Menu.StockManagement.Edit=Mantenimiento
-Menu.StockManagement.Reports=Informes
-Menu.StockMovement=Movimientos de existencias
-Menu.System=Sistema
-Menu.Tables=Mesas
-Menu.TaxCategories=Categor\u00edas de impuestos
-Menu.TaxCustCategories=Categor\u00edas de impuestos por cliente
-Menu.Taxes=Impuestos
-Menu.ThirdParties=Proveedores
-Menu.ThirdPartiesManagement=Administraci\u00f3n de proveedores
-Menu.Ticket=Ventas
-Menu.TicketEdit=Editar ventas
-Menu.TicketRefund=Devoluciones
-Menu.UserSells=Caja por vendedor
-Menu.Users=Usuarios
-Menu.UsersReport=Usuarios
-Printer.Null=Impresora no disponible
-Printer.Screen=Impresora en pantalla
-Printer.Serial=Impresora de tickets
-Visor.Title=Chromis POS
-button.backup=Respaldo
-button.catalogadd=A\u00f1adir al cat\u00e1logo
-button.catalogdel=Borrar del cat\u00e1logo
-button.clean=Restaurar
-button.edit=Editar
-button.executefilter=Ejecutar filtro
-button.listtickets=Lista
-button.movetable=Mover
-button.opendrawer=Abrir caj\u00f3n
-button.pay=Pagar cuenta
-button.peoplepassword=Clave de acceso
-button.print=Imprimir
-button.receive=Recibir
-button.refund=Devolver
-button.refundall=Devolver todo
-button.refundline=Devolver l\u00ednea
-button.refundone=Devolver uno
-button.reloadticket=Recargar
-button.reservations=Reservas
-button.reset=Limpiar
-button.scale=Balanza
-button.tables=Mesas
-caption.split=Dividir recibo
-caption.tickets=Recibos
-caption.upload=Subir lista de productos
-exception.unavailabledataset=No hay conjunto de datos disponible
-exception.unavailablefield=Campo no definido: {0}
-exception.unavailablefields=No hay campos disponibles
-filter.dbdriverlib=Driver (librer\u00eda) (*.jar,*.zip)
-form.customertitle=Lista de clientes
-form.productslist=Lista de productos
-form.selectprintertitle=Seleccionar impresora
-form.tickettitle=Lista de tickets
-label.address=Direcci\u00f3n l\u00ednea 1
-label.address2=Direcci\u00f3n l\u00ednea 2
-label.all=Todo
-label.attribute=Atributo de producto
-label.attributes=Atributos
-label.attributeset=Conjunto de atributo
-label.bybarcode=Por c\u00f3digo de barras
-label.bycustomer=Por cliente
-label.bydates=Por fechas
-label.byform=Por formulario
-label.byproduct=Por producto
-label.byreason=Por raz\u00f3n
-label.bywarehouse=Por almac\u00e9n
-label.card=Tarjeta
-label.cardexpdate=Fecha de expiraci\u00f3n
-label.cardholder=Nombre
-label.cardnumber=Tarjeta
-label.cascade=Cascada
-label.catid=Identificador
-label.catimage=Imagen
-label.catname=Categor\u00eda
-label.certificatepath=Certificado
-label.certificatepwd=Contrase\u00f1a de certificado
-label.city=Ciudad
-label.commerceid=Id. de comercio
-label.commercepwd=Clave de comercio
-label.commercesign=Se\u00f1al de comercio
-label.contact=Contacto
-label.country=Pa\u00eds
-label.curdate=Fecha de deuda
-label.curdebt=Deuda actual
-label.currency=Moneda
-label.customer=Cliente
-label.custtaxcategory=Categor\u00eda de impuesto por cliente
-label.date=Fecha
-label.datestitle=Fechas de cierre
-label.datetime=Fecha y hora
-label.dbdriverlib=Driver (librer\u00eda)
-label.debt=A cuenta
-label.double=Decimal
-label.dutyid=Identificador
-label.dutyname=Impuesto
-label.dutyrate=Tasa
-label.editline=Editar l\u00ednea
-label.email=E-mail
-label.fax=Fax
-label.firstname=Nombre
-label.floorid=Identificador
-label.floorname=Planta
-label.from=Desde
-label.image=Imagen
-label.integer=Entero
-label.item=Art\u00edculo
-label.javapos.drawer=Nombre de caj\u00f3n
-label.javapos.printer=Nombre de impresora
-label.lastname=Apellidos
-label.locale=Localizaci\u00f3n
-label.location=Direcci\u00f3n
-label.locationaddress=Direcci\u00f3n
-label.locationid=Identificador
-label.locationname=Nombre
-label.looknfeel=Aspecto
-label.machinedisplayconn=Modo
-label.machinedisplayport=Puerto
-label.machineprinterport=Puerto
-label.magcardreader=Lector de tarjetas
-label.maxdebt=Deuda m\u00e1xima
-label.maximum=M\u00e1ximo
-label.merchantcode=C\u00f3digo de Mercader
-label.minimum=M\u00ednimo
-label.money=Moneda
-
-label.packsinstock=In stock
-label.packof= packs of
-label.packstosplit=Packs to split
-label.productinpack=Product in pack
-label.split=Split
-
-label.name=Nombre
-label.notes=Notas
-label.noticketstoclose=No hay tickets por cerrar
-label.nullcategory=(Sin categor\u00eda)
-label.order=Orden
-label.passwordnew=Clave nueva
-label.passwordold=Clave antigua
-label.passwordrepeat=Repetir clave
-label.paymentdate=Fecha
-label.paymentgateway=Pasarela de pago
-label.paymentreason=Raz\u00f3n
-label.paymentstitle=Informe de pagos
-label.paymenttestmode=Modo pruebas
-label.paymenttotal=Total
-label.peopleimage=Imagen
-label.peoplename=Nombre
-label.peoplevisible=Visible
-label.percent=Porcentaje
-label.phone=Tel\u00e9fono
-label.phone2=Tel\u00e9fono alt.
-label.placefloor=Planta
-label.placeid=Identificador
-label.placename=Sitio
-label.placeposition=Posici\u00f3n
-label.postal=C\u00f3digo postal
-label.price=Precio
-label.pricetax=Precio + Impuestos
-label.prodaux=Auxiliar
-label.prodbarcode=C\u00f3digo de barras
-label.prodcategory=Categor\u00eda
-label.prodcost=Costo
-label.prodgeneral=General
-label.prodincatalog=En el cat\u00e1logo
-label.prodname=Nombre
-label.prodorder=Orden
-label.prodpricebuy=Precio de compra
-label.prodpricesell=Precio de venta
-label.prodpriceselltax=Precio de venta + impuesto
-label.prodproperties=Propiedades
-label.prodref=Referencia
-label.prodscale=Balanza
-label.prodstock=Inventario
-label.prodstockcost=Costo anual
-label.prodstockmax=Nivel m\u00e1ximo
-label.prodstocksec=Nivel de seguridad
-label.prodstockvol=Volumen
-label.produnits=Unidades
-label.prodvaluebuy=Valor de compra
-label.prodvaluesell=Valor de venta
-label.prodvolume=Volumen
-label.properties=Propiedades
-label.receiptprinter=Impresora de recibos
-label.recorddeleted=(Registro borrado)
-label.recordeof=(No hay registros)
-label.recordnew=(Registro nuevo)
-label.refunds=Devoluciones
-label.region=Regi\u00f3n
-label.remainingcash=Restante
-label.reportsprinter=Impresora de informes
-label.resname=Recurso
-label.restaurantcustomer=Se est\u00e1 recibiendo al cliente {0}. Seleccione una mesa vac\u00eda.\
-label.restaurantmove=Se est\u00e1 moviendo la mesa {0}. Seleccione otra mesa o la mesa de origen.
-label.role=Rol
-label.sales=Ventas
-label.salestitle=Informe de ventas
-label.scale=Balanza
-label.scaleinput=Introduzca un peso.
-label.scanner=Esc\u00e1ner
-label.search=Buscar
-label.searchkey=Clave de b\u00fasqueda
-label.sequence=Secuencia
-label.sha=SHA
-label.stockdate=Fecha
-label.stockproduct=Producto
-label.stockreason=Raz\u00f3n
-label.storename=Nombre de tienda
-label.subtotalcash=Subtotal
-label.table=Mesa
-label.tax=Impuestos
-label.taxcash=Impuestos
-label.taxcategory=Categor\u00eda de impuesto
-label.taxes=Impuestos
-label.taxid=CIF / NIF
-label.taxparent=Impuesto padre
-label.terminal=Terminal
-label.ticketid=Ticket
-label.tickettype=Tipo de ticket
-label.time=Hora
-label.timeframe=Periodo
-label.timeperiod=Periodo de tiempo
-label.to=A
-label.totalcash=Total
-label.type=Tipo
-label.units=Cant.
-label.uploadingproducts=Cargando productos... Espere por favor
-label.user=Usuario:\
-label.value=Importe
-label.visible=Visible
-label.warehouse=Almac\u00e9n
-message.BadPassword=La clave no es v\u00e1lida. Reint\u00e9ntelo otra vez.
-message.CannotMove=No se puede mover a otro registro.
-message.cannotcalculatetaxes=No se pueden calcular los impuestos del recibo.\n\
- Los impuestos de uno, o m\u00e1s productos del recibo no est\u00e1 correctamente definidos.
-message.cannotchangepassword=No se ha podido cambiar la clave de acceso.
-message.cannotclosecash=No se puede cargar la caja.
-message.cannotdeleteconfig=No se ha podido borrar el archivo de configuraci\u00f3n.
-message.cannotexecute=No se ha podido ejecutar la acci\u00f3n.
-message.cannotfillchart=No se han podido rellenar los datos del gr\u00e1fico.
-message.cannotfillreport=No se han podido rellenar los datos del informe.
-message.cannotfindattributes=Este producto no tiene atributos.
-message.cannotfindcustomer=No se han podido encontrar los datos del cliente.
-message.cannotloadlists=No se puede cargar datos de listas
-message.cannotloadreport=No se ha podido cargar la definici\u00f3n del informe.
-message.cannotloadreportdata=No se han podido cargar los datos del informe.
-message.cannotloadresourcedata=No se han podido cargar los recursos del informe.
-message.cannotloadticket=No se ha podido cargar el recibo.
-message.cannotprint=No se puede imprimir el recibo.
-message.cannotprintline=No se ha podido imprimir la l\u00ednea.
-message.cannotprintticket=No se ha podido imprimir el ticket.
-message.cannotsaveconfig=No se ha podido guardar el archivo de configuraci\u00f3n.
-message.cannotsaveinventorydata=No se pueden guardar datos del inventario.
-message.cardnew=El valor de la tarjeta va a cambiar. Desea continuar?
-message.cardremove=El valor de la tarjeta se va a borrar. Desea continuar?
-message.changepassworddistinct=La clave de acceso repetida debe ser igual a la clave nueva.
-message.closecashok=La caja se ha cerrado con \u00e9xito.
-message.configfactory=Se restaurar\u00e1n los valores de f\u00e1brica y se perder\u00e1n los actuales. \u00bfDesea continuar?
-message.configrestore=Se restaurar\u00e1n los valores iniciales y se perder\u00e1n los cambios. \u00bfDesea continuar?
-message.createdatabase=No se ha detectado una base de datos en funcionamiento. Se creara una base de datos por defecto. \u00bfDesea continuar?
-message.customerdebtexceded=El cliente supera la deuda permitida.
-message.databaseconnectionerror=No se puede conectar con la base de datos. Base de datos no disponible.
-message.databasedrivererror=No se puede conectar con la base de datos. Driver no encontrado.
-message.databasenotsupported=Base de datos "{0}" no soportada.
-message.mergetable=Combinar tablas
-message.mergetablequestion=\u00bfEst\u00e1 seguro de querer combinar la tabla?
-message.nocard=Tarjeta de usuario no encontrada. Reint\u00e9ntelo otra vez...
-message.nocardreader=Lector de tarjetas sin definir.
-message.nocustomer=No existe un cliente con el c\u00f3digo introducido
-message.nocustomernodebt=Este recibo no est\u00e1 asignado.\n\
- No puede ser pagado a cuenta.
-message.nopaymentgateway=Pasarela de pago sin definir.
-message.noprinters=No hay impresoras instaladas en el sistema.
-message.noproduct=No existe un producto con el c\u00f3digo introducido
-message.nosaveticket=No se ha podido guardar el ticket.
-message.notactive=Ha sucedido un error al mostrar el panel.
-message.notexiststicket=El recibo no existe.
-message.noticket=El recibo ya no existe.
-message.notpermissions=No dispone de permisos para ejecutar esta tarea.
-message.noupdatescript=Se ha detectado un versi\u00f3n anterior de la base de datos pero no es posible actualizar la base de datos autom\u00e1ticamente. Chromis POS se cerrar\u00e1 ahora.
-message.noweight=No se ha podido realizar la pesada.
-message.paymentcashneg=Haga la devoluci\u00f3n y pulse Aceptar.
-message.paymenterror=Error en la transacci\u00f3n.
-message.paymenterrorunknown=Error desconocido en la transacci\u00f3n.
-message.paymentexceptionremote=Excepci\u00f3n remota.
-message.paymentexceptionservice=Excepci\u00f3n del servicio.
-message.paymentfree=Sin cargo.
-message.paymentgatewayext=Haga el pago con tarjeta y pulse Aceptar.
-message.paymentgatewayextrefund=Haga la devoluci\u00f3n con tarjeta y pulse Aceptar.
-message.paymentgatewayswipe=Pase la tarjeta por el lector y pulse Aceptar.
-message.paymentgatewaytype=Escriba los datos de la tarjeta y pulse Aceptar.
-message.paymentnotauthorised=Transacci\u00f3n no autorizada.
-message.paymentrefundsnotsupported=No se pueden realizar devoluciones.
-message.preparescanner=Prepare the scanner to upload the products list and press OK.
-message.printererror=El recibo no se pudo imprimir.
-message.productnotselected=Producto no seleccionado.
-message.stockchangesactioned=Stock Changes Actioned
-
-message.restartchanges=La configuraci\u00f3n se ha guardado correctamente. Los cambios se realizar\u00e1n al reiniciar la aplicaci\u00f3n.
-message.scannerfail=Se ha producido un error al subir la lista de productos.
-message.scannerfail2=Se ha producido un error al descargar la lista de productos.
-message.scannerok=Se ha subido con \u00e9xito la lista de productos.
-message.tableempty=La mesa est\u00e1 ahora vac\u00eda.
-message.tablefull=La mesa est\u00e1 ahora vac\u00eda.
-message.title=Mensaje de la registradora
-message.updatedatabase=Se ha detectado una versi\u00f3n anterior de la base de datos. Se actualizar\u00e1 la base de datos autom\u00e1ticamente. SE PUEDEN PERDER DATOS. PRIMERO HAGA UNA COPIA DE SEGURIDAD. \u00bfDesea continuar?
-message.wannaclosecash=\u00bfEst\u00e1 seguro que desea cerrar la caja?
-message.wannadelete=\u00bfEst\u00e1 seguro que desea borrar el recibo actual?
-message.wannasave=\u00bfDesea guardar los cambios antes de salir?
-payment.title=Pago
-resource.binary=Binario
-resource.image=Imagen
-resource.text=Texto
-rest.label.chairs=Sillas
-rest.label.customer=Cliente
-rest.label.date=Fecha
-rest.label.notes=Notas
-scale.invalidvalue=La balanza devolvi\u00f3 un valor err\u00f3neo.
-scale.notdefined=La balanza no est\u00e1 definida.
-scale.weighitem=Weigh Item
-
-stock.in.difference=(entrada) ajuste manual
-stock.in.inventory=(entrada) ajuste por inventario f\u00edsico
-stock.in.movement=(entrada) traspaso
-stock.in.purchase=(entrada) compra
-stock.in.refund=(entrada) devoluci\u00f3n
-stock.out.break=(salida) producto da\u00f1ado
-stock.out.crossing=Traspaso
-stock.out.difference=(salida) ajuste manual
-stock.out.internal.use=(salida) consumo interno
-stock.out.inventory=(salida) ajuste por inventario f\u00edsico
-stock.out.movement=(salida) traspaso
-stock.out.refund=(salida) devoluci\u00f3n
-stock.out.sale=(salida) venta
-stock.in.openpack=(In) Open Pack
-stock.out.openpack=(Out) Open Pack
-stock.in.stockchange=(In) Stock Change
-stock.out.stockchange=(Out) Stock Change
-
-tab.cash=Efectivo
-tab.cashrefund=Devoluci\u00f3n
-tab.cheque=Cheque
-tab.chequerefund=Cheque
-tab.debt=A cuenta
-tab.free=Gratis
-tab.magcard=Tarjeta
-tab.paper=Vale
-tab.ticket=Ticket
-title.changepassword=Cambiar clave de acceso
-title.editor=Mensaje del editor
-transpayment.bonusin=(entrada) Bono
-transpayment.bonusout=(salida) Bono
-transpayment.cash=Efectivo
-transpayment.cashin=(entrada) Efectivo
-transpayment.cashout=(salida) Efectivo
-transpayment.cashrefund=Devoluci\u00f3n
-transpayment.cheque=Cheque
-transpayment.chequerefund=Devoluci\u00f3n con cheque
-transpayment.debt=A cuenta
-transpayment.debtpaid=A cuenta pagados
-transpayment.expensepaymentin=(entrada) Gasto diverso
-transpayment.expensepaymentout=(salida) Gasto diverso
-transpayment.free=Sin cargo
-transpayment.magcard=Tarjeta
-transpayment.magcardin=(entrada) Tarjeta
-transpayment.magcardout=(salida) Tarjeta
-transpayment.magcardrefund=Devoluci\u00f3n con tarjeta
-transpayment.paperin=Vales cobrados
-transpayment.paperout=Vales emitidos
-transpayment.payrollin=(entrada) N\u00f3mina
-transpayment.payrollout=(salida) N\u00f3mina
-transpayment.purchasepaymentin=(entrada) Compra a proveedor
-transpayment.purchasepaymentout=(salida) Compra a proveedor
-transpayment.revenuesin=(entrada) Utilidad
-transpayment.revenuesout=(salida) Utilidad
-transpayment.ticket=Ticket
diff --git a/locales/Mexican/reports/uk/chromis/reports/people_messages_es_MX.properties b/locales/Mexican/people_messages_es_MX.properties
similarity index 89%
rename from locales/Mexican/reports/uk/chromis/reports/people_messages_es_MX.properties
rename to locales/Mexican/people_messages_es_MX.properties
index 0f0643af..d9d22e05 100644
--- a/locales/Mexican/reports/uk/chromis/reports/people_messages_es_MX.properties
+++ b/locales/Mexican/people_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Mexican/reports/uk/chromis/reports/productlabels_messages_es_MX.properties b/locales/Mexican/productlabels_messages_es_MX.properties
similarity index 89%
rename from locales/Mexican/reports/uk/chromis/reports/productlabels_messages_es_MX.properties
rename to locales/Mexican/productlabels_messages_es_MX.properties
index 8ce43e13..2a478adb 100644
--- a/locales/Mexican/reports/uk/chromis/reports/productlabels_messages_es_MX.properties
+++ b/locales/Mexican/productlabels_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Mexican/reports/uk/chromis/reports/products_messages_es_MX.properties b/locales/Mexican/products_messages_es_MX.properties
similarity index 91%
rename from locales/Mexican/reports/uk/chromis/reports/products_messages_es_MX.properties
rename to locales/Mexican/products_messages_es_MX.properties
index 8d4e6305..9288108a 100644
--- a/locales/Mexican/reports/uk/chromis/reports/products_messages_es_MX.properties
+++ b/locales/Mexican/products_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Mexican/reports/uk/chromis/reports/productsales_messages_es_MX.properties b/locales/Mexican/productsales_messages_es_MX.properties
similarity index 90%
rename from locales/Mexican/reports/uk/chromis/reports/productsales_messages_es_MX.properties
rename to locales/Mexican/productsales_messages_es_MX.properties
index 59c773aa..270aee0e 100644
--- a/locales/Mexican/reports/uk/chromis/reports/productsales_messages_es_MX.properties
+++ b/locales/Mexican/productsales_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Mexican/reports/uk/chromis/reports/productscatalog_messages_es_MX.properties b/locales/Mexican/productscatalog_messages_es_MX.properties
similarity index 91%
rename from locales/Mexican/reports/uk/chromis/reports/productscatalog_messages_es_MX.properties
rename to locales/Mexican/productscatalog_messages_es_MX.properties
index f775c367..d2fb57c8 100644
--- a/locales/Mexican/reports/uk/chromis/reports/productscatalog_messages_es_MX.properties
+++ b/locales/Mexican/productscatalog_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Mexican/reports/uk/chromis/reports/taxes_messages_es_MX.properties b/locales/Mexican/taxes_messages_es_MX.properties
similarity index 90%
rename from locales/Mexican/reports/uk/chromis/reports/taxes_messages_es_MX.properties
rename to locales/Mexican/taxes_messages_es_MX.properties
index 0799e4c4..faea2eb3 100644
--- a/locales/Mexican/reports/uk/chromis/reports/taxes_messages_es_MX.properties
+++ b/locales/Mexican/taxes_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Mexican/reports/uk/chromis/reports/usersales_messages_es_MX.properties b/locales/Mexican/usersales_messages_es_MX.properties
similarity index 90%
rename from locales/Mexican/reports/uk/chromis/reports/usersales_messages_es_MX.properties
rename to locales/Mexican/usersales_messages_es_MX.properties
index 70adc82f..01e5ac17 100644
--- a/locales/Mexican/reports/uk/chromis/reports/usersales_messages_es_MX.properties
+++ b/locales/Mexican/usersales_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Portuguese/locales/beans_messages_pt.properties b/locales/Portuguese/locales/beans_messages_pt.properties
deleted file mode 100644
index f5c3ae82..00000000
--- a/locales/Portuguese/locales/beans_messages_pt.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-Button.Today=Hoje
-button.ok=Aceitar
-button.cancel=Cancelar
-title.calendar=Selecione uma data
-button.Today=Hoje
diff --git a/locales/Portuguese/locales/data_messages_pt.properties b/locales/Portuguese/locales/data_messages_pt.properties
deleted file mode 100644
index 2a8c88e3..00000000
--- a/locales/Portuguese/locales/data_messages_pt.properties
+++ /dev/null
@@ -1,79 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-exception.noupdatecount=Contagem de actualiza\u00e7\u00e3o n\u00e3o definida.
-exception.nodataset=Ajuste de dados n\u00e3o definido.
-exception.nonegativelimits=N\u00e3o s\u00e3o permitidos valores negativos.
-exception.outofbounds=Fora dos limites.
-exception.noreadfile=Error a ler frases de ficheiro.
-exception.nofinishedfile=Sentences file not finished.
-exception.notnull=O valor n\u00e3o pode ser null.
-exception.noparamtype=Tipo de par\u00e2metro n\u00e3o permitido.
-qbf.none=Nenhum
-qbf.null=\u00c9 null
-qbf.notnull=N\u00e3o \u00e9 null
-qbf.equals=Igual
-qbf.distinct=Distinto
-qbf.greater=Maior
-qbf.less=Menor
-qbf.greaterequals=Maior ou igual
-qbf.lessequals=Menor ou igual
-label.findwhat=Procurar o qu\u00ea
-label.where=Onde
-label.match=Igualar
-label.casesensitive=Caso sensitivo
-button.ok=Aceitar
-button.cancel=Cancelar
-title.find=Procurar
-list.startfield=In\u00edcio de campo
-list.wholefield=Campo inteiro
-list.anypart=Qualquer parte do campo
-list.re=Express\u00e3o regular (RegExp)
-title.message=Mensagem de gerente de base de dados
-button.information=Informa\u00e7\u00e3o
-message.norecord=Registro n\u00e3o encontrado.
-message.nolistdata=N\u00e3o foi possivel encontrar dados na lista.
-message.noreload=N\u00e3o \u00e9 possivel recarregar lista de dados.
-message.nomove=N\u00e3o \u00e9 possivel mover para outro registro.
-message.nosave=Registro n\u00e3o foi gravado.
-message.nodelete=N\u00e3o \u00e9 possivel marcar registro para apagar.
-message.nonew=N\u00e3o \u00e9 possivel criar novo registro.
-sgn.danger=Perigo\:
-sgn.warning=Aten\u00e7\u00e3o\:
-sgn.caution=Cuidado\:
-sgn.notice=Informa\u00e7\u00e3o\:
-sgn.important=Importante\:
-sgn.success=Sucesso\:
-sgn.unknown=Desconhecido\:
-exception.nocompare=Esperado comparador para QBF.
-exception.nodelete=N\u00e3o existem registos apagados.
-exception.noupdate=N\u00e3o existem registos actualizados.
-exception.noinsert=N\u00e3o existem registos criados.
-message.changeslost=As altera\u00e7\u00f5es ser\u00e3o perdidas. Deseja continuar?
-title.editor=Editor de mensagem
-message.wannasave=Deseja gravar as altera\u00e7\u00f5es antes de terminar?
-label.imagefiles=Ficheiros de imagem
-message.resizeimage=A imagem selecionada \u00e9 maior que o tamanho permitido por este campo. Deseja redimensionar?
-qbf.re=Express\u00e3o regular (RegExp)
-label.sortby=Ordenar por
-label.andby=E por
-message.nosort=Condi\u00e7\u00e3o de ordenamento inv\u00e1lida
-caption.sort=Ordenar
-exception.xmlfile=Error XML
-exception.iofile=Erro
-exception.parserconfig=Error
diff --git a/locales/Portuguese/locales/erp_messages_pt.properties b/locales/Portuguese/locales/erp_messages_pt.properties
deleted file mode 100644
index 8ed258e3..00000000
--- a/locales/Portuguese/locales/erp_messages_pt.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.configerp=Configura\u00e7\u00e3o ERP
-label.erpurl=Servi\u00e7os URL
-label.erpid=C\u00f3digo de entidade
-label.erporg=C\u00f3digo de organiza\u00e7\u00e3o
-label.erppos=C\u00f3digo de POS
-label.erpuser=Utilizador
-label.erppassword=Password
-message.urlnotdefined=URL de sicroniza\u00e7\u00e3o de servi\u00e7o n\u00e3o defenido.
-message.syncordersok=Sucesso na sincroniza\u00e7\u00e3o de encomendas.
-message.syncordersinfo={0} Encomendas sicronizadas.
-message.syncproductsok=Dados sincronizados com sucesso.
-message.syncproductsinfo={0} Produtos sincronizados.\n{1} Clientes sincronizados.
-message.remoteexception=Erro na comunica\u00e7\u00e3o.
-message.serviceexception=N\u00e3o \u00e9 possivel conectar ao servi\u00e7o.
-message.malformedurlexception=URL de Servi\u00e7o errado.
-message.returnnull=Par\u00e2metros de sincroniza\u00e7\u00e3o errados.
-message.zeroproducts=N\u00e3o existem dados para sincronizar.
-message.zeroorders=N\u00e3o existem encomendas para sincronizar.
-message.propsnotdefined=N\u00e3o foram definidadas propriedades de recurso de sincroniza\u00e7\u00e3o "chromis.properties".
\ No newline at end of file
diff --git a/locales/Portuguese/locales/pos_messages_pt.properties b/locales/Portuguese/locales/pos_messages_pt.properties
deleted file mode 100644
index 36e58f6c..00000000
--- a/locales/Portuguese/locales/pos_messages_pt.properties
+++ /dev/null
@@ -1,431 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-Button.Cancel=Cancelar
-button.catalogadd=Adicionar ao cat\u00e1logo
-button.catalogdel=Remover do cat\u00e1logo
-Button.Close=Fechar
-Button.CloseCash=Fechar Caixa
-Button.DeleteTicket=Apagar
-button.edit=Editar
-Button.ExecuteChart=Ejecutar gr\u00e1fico
-button.executefilter=Executar filtro
-Button.ExecuteReport=Executar relat\u00f3rio
-Button.Factory=Valores de f\u00e1brica
-button.listtickets=Lista
-button.movetable=Mover
-Button.NewTicket=Novo
-Button.OK=Aceitar
-button.opendrawer=Abrir gaveta
-button.peoplepassword=Password
-button.print=Imprimir
-button.receive=Receber
-button.refund=Restitui\u00e7\u00e3o
-button.refundall=Restituir tudo
-button.refundline=Restituir linha
-button.refundone=Restituir um
-button.reloadticket=Recarregar
-button.reservations=Reservas
-button.reset=Reinicializar
-Button.Restore=Restaurar
-Button.Save=Gravar
-button.tables=Mesas
-caption.tickets=Recibos
-caption.upload=Carregar lista de produtos
-Database.ScriptError=Cannot execute the database creation el script.
-Database.ScriptWarning=Creation script not runned successfully.
-Display.Null=Display not available
-Display.Screen=Screen display
-Display.Window=Display
-exception.unavailabledataset=Dataset not available
-exception.unavailablefield=Field not defined\: {0}
-exception.unavailablefields=Fields not available
-filter.dbdriverlib=Driver library (*.jar,*.zip)
-form.productslist=Products list
-label.bybarcode=Por c\u00f3digo de barras
-label.bydates=Por datas
-label.byform=Por formul\u00e1rio
-label.byreason=Por raz\u00e3o
-label.bywarehouse=Por Armaz\u00e9m
-label.cardexpdate=Data de expedi\u00e7\u00e3o
-label.cardholder=Nome do titular
-label.cardnumber=N\u00famero de cart\u00e3o
-Label.Cash=Caixa
-Label.CashMachine=Caixa registradora
-label.catid=ID
-label.image=Imagem
-label.catname=Categoria
-Label.ChangeCash=Troco
-label.commerceid=ID de com\u00e9rcio
-label.commercepwd=Password de com\u00e9rcio
-Label.Database=Base de dados
-label.date=Data
-label.datestitle=Data de caixa
-Label.DbDriver=Driver class
-label.dbdriverlib=Driver library
-Label.DbPassword=Password
-Label.DbURL=URL
-Label.DbUser=Utilizador
-label.dutyid=ID
-label.dutyname=Nome da taxa
-label.dutyrate=Rate
-label.editline=Editar linha
-Label.EndDate=Data de fim
-label.floorid=ID
-label.floorname=Andar
-Label.InputCash=Entregue
-label.item=Artigo
-Label.LoadError=Error thrown trying to show this functionality.
-label.locationaddress=Endere\u00e7o
-label.locationid=ID
-label.locationname=Nome
-Label.MachineDisplay=Customer display
-label.machinedisplayconn=Modo
-label.machinedisplayport=Porta
-Label.MachineName=Nome
-Label.MachinePrinter=Impressora
-Label.MachinePrinter2=Impressora 2
-Label.MachinePrinter3=Impressora 3
-label.machineprinterport=Porta
-Label.MachineScreen=Ecr\u00e3
-label.magcardreader=Leitor de cart\u00e3o magn\u00e9tico
-label.maximum=M\u00e1ximo
-label.minimum=M\u00ednimo
-Label.Name=Nome
-label.noticketstoclose=N\u00e3o existem letras a fechar
-label.nullcategory=(Sem categoria)
-Label.Password=Password
-label.passwordnew=Nova password
-label.passwordold=Antiga password
-label.passwordrepeat=Repetir password
-Label.Payment=Pagamento
-label.paymentdate=Data
-label.paymentgateway=Payment gateway
-label.paymentreason=Raz\u00e3o
-label.paymentstitle=Relat\u00f3rio de pagamentos
-label.paymenttestmode=Modo de teste
-label.paymenttotal=Total
-label.peopleimage=Imagem
-label.peoplename=Nome
-label.peoplevisible=Vis\u00edvel
-label.placefloor=Piso
-label.placename=Local
-label.placeposition=Posi\u00e7\u00e3o
-label.price=Pre\u00e7o
-label.pricetax=Pre\u00e7o + Taxas
-label.prodaux=Auxiliar
-label.prodbarcode=C\u00f3digo de barras
-label.prodcategory=Categoria
-label.prodcost=Custo
-label.prodgeneral=Geral
-label.prodincatalog=No cat\u00e1logo
-label.prodname=Nome
-label.prodorder=Ordem
-label.prodpricebuy=Por pre\u00e7o
-label.prodpricesell=Pre\u00e7o de venda
-label.prodpriceselltax=Pre\u00e7o de venda + taxa
-label.prodproperties=Propriedades
-label.prodref=Refer\u00eancia
-label.prodscale=Escala
-label.prodstock=Stock
-label.prodstockcost=Custo por ano de stock
-label.prodstockmax=N\u00edvel m\u00e1ximo
-label.prodstocksec=N\u00edvel de seguran\u00e7a
-label.prodstockvol=Volume de stock
-label.produnits=Unidades
-label.prodvaluebuy=Pre\u00e7o de compra
-label.prodvaluesell=Pre\u00e7o de venda
-label.prodvolume=Volume
-label.recorddeleted=(Registro apagado)
-label.recordeof=(Sem registros)
-label.recordnew=(Novo registro)
-label.remainingcash=Restantes
-label.resname=Recurso
-label.restaurantmove=Mover mesa {0}. Selecionar outra mesa ou a mesa de origem.
-label.role=Regra
-label.sales=Vendas
-label.salestitle=Relat\u00f3rio de vendas
-label.scale=Escala
-label.scanner=Scanner
-Label.StartDate=Data de in\u00edcio
-label.stockdate=Data
-label.stockproduct=Produto
-label.stockreason=Raz\u00e3o
-label.subtotalcash=Subtotal
-label.table=Mesa
-label.tax=Taxas
-label.taxcash=Taxas
-label.ticketid=Recibo
-Label.Tickets=Pagamentos
-Label.Ticketsbag=Recibos
-label.totalcash=Total
-label.units=Unidades
-label.user=Utilizador\:
-label.value=Valor
-label.warehouse=Armaz\u00e9m
-Menu.Backoffice=Administra\u00e7\u00e3o
-Menu.Catalog=Cat\u00e1logo
-Menu.Categories=Categorias
-Menu.ChangePassword=Alterar password
-Menu.ClosedProducts=Produto das vendas
-Menu.CloseTPV=Fechar Caixa
-Menu.Closing=Caixa fechada
-Menu.Configuration=Configura\u00e7\u00e3o
-Menu.ERPOrders=Sincroniza\u00e7\u00e3o de encomendas
-Menu.ERPProducts=Sincroniza\u00e7\u00e3o de POS
-Menu.Exit=Sair
-Menu.Floors=Andares
-Menu.Inventory=Armaz\u00e9ns
-Menu.Inventory2=Invent\u00e1rio actual
-Menu.InventoryBroken=Ivent\u00e1rio actual quebrado
-Menu.InventoryDiff=Ivent\u00e1rio di\u00e1rio
-Menu.Locations=Armaz\u00e9ns
-Menu.Main=Principal
-Menu.Maintenance=Manuten\u00e7\u00e3o
-Menu.Maintenance.ERP=Chromis ERP
-Menu.Maintenance.POS=Ponto de venda
-Menu.Payments=Pagamentos
-Menu.Printer=Impressora
-Menu.Products=Produtos
-Menu.StockChanges=Stock Changes
-Menu.StockChangesReport=Stock Changes Report
-Menu.Promotions=Promotions
-Menu.PromotionsReport=Promotions Report
-
-Menu.Reports=Relat\u00f3rios
-Menu.ReportTaxes=Taxas
-Menu.Resources=Recursos
-Menu.Roles=Regras
-Menu.SalesChart=Gr\u00e1fico de vendas
-Menu.SalesManagement=Vendas
-Menu.SalesManagement.Reports=Ralat\u00f3rios
-Menu.StockDiary=Di\u00e1rio de stock
-Menu.StockManagement=Stock
-Menu.StockManagement.Edit=Manuten\u00e7\u00e3o
-Menu.StockManagement.Reports=Ralat\u00f3rios
-Menu.StockMovement=Manuten\u00e7\u00e3o de stock
-Menu.System=Sistema
-Menu.Tables=Mesas
-Menu.Taxes=Taxas
-Menu.ThirdParties=Fornecedores
-Menu.ThirdPartiesManagement=Manuten\u00e7\u00e3o de fornecedores
-Menu.Ticket=Vendas
-Menu.TicketEdit=Editar vendas
-Menu.TicketRefund=Restitui\u00e7\u00f5es
-Menu.Users=Utilizadores
-Menu.UserSells=Caixa por utilizador
-message.BadPassword=Password inv\u00e1lida. tente de novo..
-message.cannotchangepassword=N\u00e3o \u00e9 possivel alterar password.
-message.cannotclosecash=N\u00e3o \u00e9 possivel fechar caixa.
-message.cannotdeleteconfig=N\u00e3o \u00e9 possivel apagar ficheiro de configura\u00e7\u00e3o.
-message.cannotexecute=N\u00e3o \u00e9 possivel executar ac\u00e7\u00e3o.
-message.cannotfillchart=N\u00e3o \u00e9 possivel criar gr\u00e1fico com dados.
-message.cannotfillreport=N\u00e3o \u00e9 possivel preencher dados de relat\u00f3rio.
-message.cannotloadreport=N\u00e3o \u00e9 possivel carregar defeni\u00e7\u00f5es de relat\u00f3rio.
-message.cannotloadreportdata=N\u00e3o \u00e9 possivel carregar dados de relat\u00f3rio.
-message.cannotloadresourcedata=N\u00e3o \u00e9 possivel carregar recursos.
-message.CannotMove=N\u00e3o \u00e9 possivel mover para outro recibo.
-message.cannotprint=N\u00e3o \u00e9 possivel imprimir recibo.
-message.cannotprintline=N\u00e3o \u00e9 possivel imprimir linha.
-message.cannotprintticket=N\u00e3o \u00e9 possivel imprimir factura.
-message.cannotsaveconfig=N\u00e3o \u00e9 possivel guardas ficheiro de configura\u00e7\u00e3o.
-message.changepassworddistinct=A repeti\u00e7\u00e3o de password dever\u00e1 ser igual \u00e1 nova password.
-message.closecashok=Caixa fechada com sucesso.
-message.configfactory=Ser\u00e3o repostos os valores de f\u00e1brica e os valores correntes ser\u00e3o perdidos. Deja continuar?
-message.configrestore=Initial values will be restored and changes will be lost. Do you want to continue?
-message.createdatabase=A working database cannot be detected. A default database will be created. Do you want to continue?
-message.databaseconnectionerror=Cannot connect to database. Database not available.
-message.databasedrivererror=Cannot connect to database. Database driver not found
-message.databasenotsupported=Database "{0}" not supported.
-message.nocardreader=Card reader not defined.
-message.nopaymentgateway=Payment gateway not defined.
-message.nosaveticket=Cannot save the ticket.
-message.notactive=An error appeared loading the panel.
-message.notpermissions=N\u00e3o est\u00e1 autorizado a executar esta tarefa.
-message.paymentcashneg=Make the refund and press OK.
-message.paymenterror=Erro na transa\u00e7\u00e3o.
-message.paymenterrorunknown=Erro de transa\u00e7\u00e3o desconhecido.
-message.paymentexceptionremote=Remote exception thrown.
-message.paymentexceptionservice=Service exception thrown.
-message.paymentfree=Gr\u00e1tis.
-message.paymentgatewayext=Make the card payment and press OK.
-message.paymentgatewayextrefund=Make the card refund and press OK.
-message.paymentnotauthorised=Transa\u00e7\u00e3o n\u00e3o autorizada.
-message.paymentrefundsnotsupported=Restitui\u00e7\u00f5es n\u00e3o suportadas.
-message.preparescanner=Prepare the ScanPal to upload the products list and press OK.
-message.restartchanges=The configuration is saved succesfully. Changes will be applied the next time the application restarts.
-message.scannerfail=Error ao enviar lista de produtos.
-message.scannerfail2=Erro ao receber lista de produtos.
-message.scannerok=The products list has been uploaded successfully.
-message.title=Menssagem de caixa registradora
-message.updatedatabase=A database from a previous version has been detected. The database will be upgraded automatically. DATA MAY BE LOST. CREATE FIRST A BACKUP. Do you want to continue?
-message.wannaclosecash=Tem a certeza que deseja fechar caixa?
-message.wannadelete=Tem a certeza que deseja apagar o recibo corrente?
-payment.title=Pagamento
-Printer.Null=Impressora n\u00e3o dispon\u00edvel
-Printer.Screen=Screen printer
-Printer.Serial=Ticket printer
-resource.binary=Bin\u00e1rio
-resource.image=Imagem
-resource.text=Texto
-rest.label.chairs=Cadeiras
-rest.label.customer=Cliente
-rest.label.date=Data
-rest.label.notes=Notas
-stock.in.movement=(entrada) Movimento
-stock.in.purchase=(entrada) Compra
-stock.in.refund=(entrada) Restitui\u00e7\u00e3o
-stock.out.break=(sa\u00edda) Quebra
-stock.out.crossing=Travessia
-stock.out.movement=(sa\u00edda) Movimento
-stock.out.refund=(sa\u00edda) Restitui\u00e7\u00e3o
-stock.out.sale=(sa\u00edda) Venda
-stock.in.openpack=(In) Open Pack
-stock.out.openpack=(Out) Open Pack
-stock.in.stockchange=(In) Stock Change
-stock.out.stockchange=(Out) Stock Change
-
-tab.cash=Caixa
-tab.cashrefund=Restitui\u00e7\u00e3o
-tab.cheque=Cheque
-tab.chequerefund=Cheque
-tab.free=Gr\u00e1tis
-tab.magcard=Cart\u00e3o
-tab.paper=Nota
-tab.ticket=Recibo
-title.changepassword=Alterar password
-title.editor=Editor de menssagem
-transpayment.cash=Caixa
-transpayment.cashin=(entrada) Caixa
-transpayment.cashout=(sa\u00edda) Caixa
-transpayment.cashrefund=Restitui\u00e7\u00e3o
-transpayment.cheque=Cheque
-transpayment.chequerefund=Restitui\u00e7\u00e3o de cheque
-transpayment.free=Gr\u00e1tis
-transpayment.magcard=Cart\u00e3o
-transpayment.magcardrefund=Restitui\u00e7\u00e3o de cart\u00e3o
-transpayment.paperin=Entrada de nota
-transpayment.paperout=Sa\u00edda de nota
-transpayment.ticket=Recibo
-Visor.Title=Chromis POS
-message.paymentgatewayswipe=Passe o cart\u00e3o e pressione Aceitar.
-message.paymentgatewaytype=Escreva detalhes do cart\u00e3o e pressione Aceitar.
-label.placeid=ID
-message.noticket=O recibo j\u00e1 n\u00e3o existe.
-Menu.ProductsWarehouse=Produtos por armaz\u00e9m
-Menu.ProductPacks=Product Packs
-
-message.noproduct=C\u00f3digo de produto inserido n\u00e3o existe
-label.type=Tipo
-message.tableempty=Mesa vazia.
-message.tablefull=Mesa cheia.
-label.locale=Localidade
-label.looknfeel=Skin
-button.scale=Escala
-label.integer=Inteiro
-label.double=Duplo
-label.currency=Moeda
-label.percent=Percentagem
-label.time=Hora
-label.datetime=Data hora
-scale.notdefined=Escala n\u00e3o defenida
-scale.invalidvalue=Escala n\u00e3o defenida
-scale.weighitem=Weigh Item
-
-message.noweight=Peso n\u00e3o poss\u00edvel.
-label.scaleinput=Inserir peso.
-message.cannotloadticket=N\u00e3o \u00e9 possivel carregar recibo.
-message.notexiststicket=Recibo n\u00e3o existe.
-label.catimage=Imagem
-message.noupdatescript=Foi detectada uma base de dados de uma vers\u00e3o anterior e n\u00e3o \u00e9 possivel actualizar automaticamente. Chromis POS vai terminar.
-label.visible=Vis\u00edvel
-label.name=Nome
-label.address=1\u00aa Morada
-label.notes=Notas
-Menu.Customers=Clientes
-Menu.CustomersManagement=Clientes
-form.customertitle=Lista de clientes
-message.nocard=Cart\u00e3o de utilizador n\u00e3o encontrado. Tente novamente...
-label.card=Cart\u00e3o
-message.cardnew=O valor do cart\u00e3o ir\u00e1 alterar. Quer continuar?
-message.cardremove=O valor do cart\u00e3o ir\u00e1 ser removido. Quer continuar?
-message.nocustomer=N\u00e3o existe cliente com o c\u00f3digo inserido
-label.maxdebt=D\u00e9bito m\u00e1ximo
-label.curdebt=D\u00e9bito corrente
-label.curdate=Data de d\u00e9bito
-message.wannasave=Deseja gravar as altera\u00e7\u00f5es antes de sair?
-Menu.Customers.Reports=Relat\u00f3rios
-Menu.CustomersReport=Clientes
-label.bycustomer=Por cliente
-label.customer=Clientes
-Menu.CustomersBReport=Clientes por defeito
-Menu.Maintenance.Reports=Ralat\u00f3rios
-Menu.UsersReport=Utilizadores
-label.restaurantcustomer=Recebendo cliente {0}. Selecione uma mesa vazia.
-tab.debt=D\u00e9bito
-label.debt=D\u00e9bito
-transpayment.debt=D\u00e9bito
-message.nocustomernodebt=O recibo se encontra atribu\u00eddo.\nN\u00e3o pode ser pago por d\u00e9bito.
-message.cannotfindcustomer=N\u00e3o \u00e9 possivel encontrar dados de cliente.
-button.pay=Pagar conta
-Menu.CustomersPayment=Clientes
-transpayment.debtpaid=D\u00edvida paga
-label.taxid=ID de taxa
-label.attributes=Attributes
-Menu.ProductSales=Venda de produtos
-Menu.ProductLabels=Etiquetas de produtos
-caption.split=Divida recibo
-label.searchkey=Chave de procura
-label.contact=Contacto
-label.location=Localiza\u00e7\u00e3o / Morada
-label.firstname=Primeiro nome
-label.lastname=\u00daltimo nome
-label.email=E-mail
-label.phone=Telefone
-label.phone2=Telefone 2
-label.fax=Fax
-label.address2=Morada 2\u00aa linha
-label.postal=C\u00f3digo postal
-label.city=Cidade
-label.region=Regi\u00e3o
-label.country=Pa\u00eds
-label.sequence=Sequ\u00eancia
-message.customerdebtexceded=The customer surpases the allowed debt.
-label.custtaxcategory=Categoria de taxas de cliente
-label.taxcategory=Categoria de taxa
-label.taxparent=Tax m\u00e3e
-label.cascade=Cascata
-label.reportsprinter=Impressora de relat\u00f3rios
-Menu.CustomersDiary=Di\u00e1rio de clientes
-Menu.TaxCustCategories=Categoria de taxas de cliente
-Menu.TaxCategories=Categorias de taxas
-button.clean=Redefinir
-label.taxes=Taxas
-label.order=Ordem
-button.Discount=Desconto
-button.discount=Desconto
-button.discountticket=Desconto
-button.ExecuteChart=Ejecutar gr\u00e1fico
-button.NewTicket=
-button.linediscount=% Deconto
-button.refundit=Restituir
-button.sendorder=Cozinha
-button.setperson=Gar\u00e7om
-Button.PrintCash=Imprimir
-database.ScriptError=N\u00e3o pode executar o manuscrito de cria\u00e7\u00e3o de base de dados.
-database.ScriptWarning=Manuscrito de cria\u00e7\u00e3o n\u00e3o correu com \u00eaxito.
diff --git a/locales/Spanish/reports/uk/chromis/reports/badprice_messages_es.properties b/locales/Spanish/badprice_messages_es.properties
similarity index 91%
rename from locales/Spanish/reports/uk/chromis/reports/badprice_messages_es.properties
rename to locales/Spanish/badprice_messages_es.properties
index 82b4dafd..54883a28 100644
--- a/locales/Spanish/reports/uk/chromis/reports/badprice_messages_es.properties
+++ b/locales/Spanish/badprice_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Spanish/barcodesheet_messages_es.properties b/locales/Spanish/barcodesheet_messages_es.properties
new file mode 100644
index 00000000..7cf39091
--- /dev/null
+++ b/locales/Spanish/barcodesheet_messages_es.properties
@@ -0,0 +1,19 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=C\u00f3digo de Barras
diff --git a/locales/Spanish/reports/uk/chromis/reports/cashflow_messages_es.properties b/locales/Spanish/cashflow_messages_es.properties
similarity index 91%
rename from locales/Spanish/reports/uk/chromis/reports/cashflow_messages_es.properties
rename to locales/Spanish/cashflow_messages_es.properties
index 37c655bc..98142457 100644
--- a/locales/Spanish/reports/uk/chromis/reports/cashflow_messages_es.properties
+++ b/locales/Spanish/cashflow_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -22,8 +22,8 @@ label.noproduct=(Sin Ventas)
label.printed=Impreso
label.period=Per\u00edodo:
label.payment=Pago
-label.sum=Total
-label.total=Gran Total
+label.sum=Suma
+label.total=Importe Total
transpayment.cash=Efectivo
transpayment.magcard=Tarjeta
diff --git a/locales/Spanish/reports/uk/chromis/reports/cashregisterlog_messages_es.properties b/locales/Spanish/cashregisterlog_messages_es.properties
similarity index 92%
rename from locales/Spanish/reports/uk/chromis/reports/cashregisterlog_messages_es.properties
rename to locales/Spanish/cashregisterlog_messages_es.properties
index adfc2d8c..575405be 100644
--- a/locales/Spanish/reports/uk/chromis/reports/cashregisterlog_messages_es.properties
+++ b/locales/Spanish/cashregisterlog_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -21,7 +21,7 @@ label.noreference=
label.noproduct=(Sin ventas)
label.printed=Impreso
label.date=Fecha
-label.ticket=Ticket N.
+label.ticket=Ticket No.
label.sum=Suma
label.customer=Cliente
label.payment=Pago
diff --git a/locales/Spanish/reports/uk/chromis/reports/categorysales_messages_es.properties b/locales/Spanish/categorysales_messages_es.properties
similarity index 89%
rename from locales/Spanish/reports/uk/chromis/reports/categorysales_messages_es.properties
rename to locales/Spanish/categorysales_messages_es.properties
index 8fd108ef..0b878796 100644
--- a/locales/Spanish/reports/uk/chromis/reports/categorysales_messages_es.properties
+++ b/locales/Spanish/categorysales_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -25,4 +25,4 @@ label.printed=Impreso
label.period=Per\u00edodo:
label.qty=Cant
label.title=Ventas por Categor\u00eda
-label.total=Gran Total
+label.total=Importe Total
diff --git a/locales/Spanish/reports/uk/chromis/reports/chartsales_messages_es.properties b/locales/Spanish/chartsales_messages_es.properties
similarity index 90%
rename from locales/Spanish/reports/uk/chromis/reports/chartsales_messages_es.properties
rename to locales/Spanish/chartsales_messages_es.properties
index a0f02334..40b1a9b3 100644
--- a/locales/Spanish/reports/uk/chromis/reports/chartsales_messages_es.properties
+++ b/locales/Spanish/chartsales_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Spanish/reports/uk/chromis/reports/closedpos_messages_es.properties b/locales/Spanish/closedpos_messages_es.properties
similarity index 86%
rename from locales/Spanish/reports/uk/chromis/reports/closedpos_messages_es.properties
rename to locales/Spanish/closedpos_messages_es.properties
index 47d6535f..5fd3a199 100644
--- a/locales/Spanish/reports/uk/chromis/reports/closedpos_messages_es.properties
+++ b/locales/Spanish/closedpos_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -23,12 +23,13 @@ label.host=Terminal
label.partialsubtotal=Subtotal
label.partialtax=Impuestos
label.partialtotal=Total
-label.hostsequence=Sequence
+label.hostsequence=Secuencia
label.subtotal=Subtotal
label.tax=Impuestos
-label.total=Gran Total
-label.period=Periodo:
+label.total=Importe Total
+label.period=Per\u00edodo:
label.printed=Impreso
+transpayment.bank=Banco
transpayment.cash=Efectivo
transpayment.cashin=(entrada) Efectivo
transpayment.cashout=(salida) Efectivo
@@ -43,4 +44,4 @@ transpayment.ticket=Ticket
transpayment.magcardrefund=Devoluci\u00f3n tarjeta
transpayment.paperin=Vales cobrados
transpayment.paperout=Vales emitidos
-transpayment.ticket=Tiquet
+transpayment.ticket=Ticket
diff --git a/locales/Spanish/reports/uk/chromis/reports/closedproducts_messages_es.properties b/locales/Spanish/closedproducts_messages_es.properties
similarity index 91%
rename from locales/Spanish/reports/uk/chromis/reports/closedproducts_messages_es.properties
rename to locales/Spanish/closedproducts_messages_es.properties
index 10a7ef1e..b6c9c177 100644
--- a/locales/Spanish/reports/uk/chromis/reports/closedproducts_messages_es.properties
+++ b/locales/Spanish/closedproducts_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Spanish/reports/uk/chromis/reports/customers_messages_es.properties b/locales/Spanish/customers_messages_es.properties
similarity index 89%
rename from locales/Spanish/reports/uk/chromis/reports/customers_messages_es.properties
rename to locales/Spanish/customers_messages_es.properties
index be91fa94..b8155c4d 100644
--- a/locales/Spanish/reports/uk/chromis/reports/customers_messages_es.properties
+++ b/locales/Spanish/customers_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -25,3 +25,4 @@ label.title=Clientes
label.address=Domicilio
label.name=Nombre
label.printed=Impreso
+label.discount=Discount
diff --git a/locales/Spanish/reports/uk/chromis/reports/customersdiary_messages_es.properties b/locales/Spanish/customersdiary_messages_es.properties
similarity index 90%
rename from locales/Spanish/reports/uk/chromis/reports/customersdiary_messages_es.properties
rename to locales/Spanish/customersdiary_messages_es.properties
index 465711c9..97c9b709 100644
--- a/locales/Spanish/reports/uk/chromis/reports/customersdiary_messages_es.properties
+++ b/locales/Spanish/customersdiary_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Spanish/reports/uk/chromis/reports/dailypresence_messages_es.properties b/locales/Spanish/dailypresence_messages_es.properties
similarity index 88%
rename from locales/Spanish/reports/uk/chromis/reports/dailypresence_messages_es.properties
rename to locales/Spanish/dailypresence_messages_es.properties
index 0440c176..0e8c1519 100644
--- a/locales/Spanish/reports/uk/chromis/reports/dailypresence_messages_es.properties
+++ b/locales/Spanish/dailypresence_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -20,7 +20,7 @@
label.end=Fin
label.name=Nombre
label.period=Per\u00edodo:
-label.printed=Printed
+label.printed=Impreso
label.start=Inicio
label.title=Presencia Diaria
label.total=Total Horas
diff --git a/locales/Spanish/reports/uk/chromis/reports/dailyschedule_messages_es.properties b/locales/Spanish/dailyschedule_messages_es.properties
similarity index 91%
rename from locales/Spanish/reports/uk/chromis/reports/dailyschedule_messages_es.properties
rename to locales/Spanish/dailyschedule_messages_es.properties
index 453b0a5b..d86a6229 100644
--- a/locales/Spanish/reports/uk/chromis/reports/dailyschedule_messages_es.properties
+++ b/locales/Spanish/dailyschedule_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Spanish/reports/uk/chromis/reports/extendedcashregisterlog_messages_es.properties b/locales/Spanish/extendedcashregisterlog_messages_es.properties
similarity index 89%
rename from locales/Spanish/reports/uk/chromis/reports/extendedcashregisterlog_messages_es.properties
rename to locales/Spanish/extendedcashregisterlog_messages_es.properties
index 8fea25cb..f76e7004 100644
--- a/locales/Spanish/reports/uk/chromis/reports/extendedcashregisterlog_messages_es.properties
+++ b/locales/Spanish/extendedcashregisterlog_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -26,12 +26,12 @@ label.ticket=Ticket No.
label.sum=Suma
label.customer=Cliente
label.payment=Pago
-label.total=Gran Total
+label.total=Importe Total
transpayment.cash=Efectivo
transpayment.magcard=Tarjeta
transpayment.cashrefund=Devoluci\u00f3n Efectivo
-transpayment.magcardrefund=Devoluci\u00f3n Tarjega
+transpayment.magcardrefund=Devoluci\u00f3n Tarjeta
transpayment.cheque=Cheque
transpayment.chequerefund=Devoluci\u00f3n Cheque
transpayment.cashin=(entrada) Efectivo
diff --git a/locales/Spanish/reports/uk/chromis/reports/extproducts_messages_es.properties b/locales/Spanish/extproducts_messages_es.properties
similarity index 89%
rename from locales/Spanish/reports/uk/chromis/reports/extproducts_messages_es.properties
rename to locales/Spanish/extproducts_messages_es.properties
index 5643bc4a..04e41517 100644
--- a/locales/Spanish/reports/uk/chromis/reports/extproducts_messages_es.properties
+++ b/locales/Spanish/extproducts_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -20,7 +20,7 @@ label.meanprice=Precio Medio
label.name=Categor\u00eda
label.notaxid=
label.nocustomer=(Sin Cliente definido)
-label.nocategory=(Sin Categor\u00eda definido)
+label.nocategory=(Sin Categor\u00eda definida)
label.noreferency=
label.noproduct=(Sin Producto definido)
label.partialtotal=Total
diff --git a/locales/Spanish/invalidcategory_messages_es.properties b/locales/Spanish/invalidcategory_messages_es.properties
new file mode 100644
index 00000000..1ca11287
--- /dev/null
+++ b/locales/Spanish/invalidcategory_messages_es.properties
@@ -0,0 +1,27 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+
+label.title=Datos de Categor\u00eda no V\u00e1lidos
+label.reference=Referencia
+label.barcode=C\u00f3digo de Barras
+label.name=Nombre
+label.category=Categor\u00eda Err\u00f3nea
+label.csverror=Mensaje de Error
+label.row=Fila en Fichero
+
diff --git a/locales/Spanish/reports/uk/chromis/reports/invaliddata_messages_es.properties b/locales/Spanish/invaliddata_messages_es.properties
similarity index 83%
rename from locales/Spanish/reports/uk/chromis/reports/invaliddata_messages_es.properties
rename to locales/Spanish/invaliddata_messages_es.properties
index 441698e0..2b8a669b 100644
--- a/locales/Spanish/reports/uk/chromis/reports/invaliddata_messages_es.properties
+++ b/locales/Spanish/invaliddata_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -16,10 +16,10 @@
# You should have received a copy of the GNU General Public License
# along with Chromis POS. If not, see .
-label.title=Dato de producto Inv\u00e1lido
+label.title=Dato de producto no V\u00e1lido
label.reference=Referencia
label.barcode=C\u00f3digo de Barras
label.name=Nombre
-label.csverror=mensaje de Error
+label.csverror=Mensaje de Error
label.row=Fila en archivo
diff --git a/locales/Spanish/reports/uk/chromis/reports/inventory_messages_es.properties b/locales/Spanish/inventory_messages_es.properties
similarity index 91%
rename from locales/Spanish/reports/uk/chromis/reports/inventory_messages_es.properties
rename to locales/Spanish/inventory_messages_es.properties
index ac08cfad..82b131ad 100644
--- a/locales/Spanish/reports/uk/chromis/reports/inventory_messages_es.properties
+++ b/locales/Spanish/inventory_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Spanish/reports/uk/chromis/reports/inventoryb_messages_es.properties b/locales/Spanish/inventoryb_messages_es.properties
similarity index 90%
rename from locales/Spanish/reports/uk/chromis/reports/inventoryb_messages_es.properties
rename to locales/Spanish/inventoryb_messages_es.properties
index 6e43eac5..e127ee4a 100644
--- a/locales/Spanish/reports/uk/chromis/reports/inventoryb_messages_es.properties
+++ b/locales/Spanish/inventoryb_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Spanish/reports/uk/chromis/reports/inventorydiff_messages_es.properties b/locales/Spanish/inventorydiff_messages_es.properties
similarity index 91%
rename from locales/Spanish/reports/uk/chromis/reports/inventorydiff_messages_es.properties
rename to locales/Spanish/inventorydiff_messages_es.properties
index e24a8605..1329f2cc 100644
--- a/locales/Spanish/reports/uk/chromis/reports/inventorydiff_messages_es.properties
+++ b/locales/Spanish/inventorydiff_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Spanish/reports/uk/chromis/reports/inventorydiffdetail_messages_es.properties b/locales/Spanish/inventorydiffdetail_messages_es.properties
similarity index 91%
rename from locales/Spanish/reports/uk/chromis/reports/inventorydiffdetail_messages_es.properties
rename to locales/Spanish/inventorydiffdetail_messages_es.properties
index 52d206b5..b24f406c 100644
--- a/locales/Spanish/reports/uk/chromis/reports/inventorydiffdetail_messages_es.properties
+++ b/locales/Spanish/inventorydiffdetail_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Spanish/reports/uk/chromis/reports/inventorylistdetail_messages_es.properties b/locales/Spanish/inventorylistdetail_messages_es.properties
similarity index 86%
rename from locales/Spanish/reports/uk/chromis/reports/inventorylistdetail_messages_es.properties
rename to locales/Spanish/inventorylistdetail_messages_es.properties
index 414f1c37..77ae82e3 100644
--- a/locales/Spanish/reports/uk/chromis/reports/inventorylistdetail_messages_es.properties
+++ b/locales/Spanish/inventorylistdetail_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -16,10 +16,10 @@
# You should have received a copy of the GNU General Public License
# along with Chromis POS. If not, see .
-label.max=M\u00e1ximo
+label.title= Inventario: Detalle Listado
label.printed: Impreso
-label.name=Nombre
label.ref=Ref.
+label.name=Nombre
label.sec=M\u00ednimo
-label.title=Detalle de existencias
label.units=Unidades
+label.max=M\u00e1ximo
diff --git a/locales/Spanish/inventoryreorder_messages_es.properties b/locales/Spanish/inventoryreorder_messages_es.properties
new file mode 100644
index 00000000..8463c7b6
--- /dev/null
+++ b/locales/Spanish/inventoryreorder_messages_es.properties
@@ -0,0 +1,30 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Inventario: Re-Ordenar
+label.printed=Impreso
+label.ref=Ref.
+label.name=Nombre
+label.sec=M\u00ednimo
+label.units=Unidades
+label.valuebuy=Valor de Compra
+label.valuesell=Valor de Venta
+label.valuevolume=Volumen
+label.valuecost=Costo
+label.max=M\u00e1ximum
+label.location=Almac\u00e9n :
diff --git a/locales/Spanish/locales/beans_messages_es.properties b/locales/Spanish/locales/beans_messages_es.properties
deleted file mode 100644
index 11c47446..00000000
--- a/locales/Spanish/locales/beans_messages_es.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-
-title.calendar=Seleccione una fecha
-button.cancel=Cancelar
-Button.Today=Hoy
-button.ok=Aceptar
-button.Today=Hoy
diff --git a/locales/Spanish/locales/data_messages_es.properties b/locales/Spanish/locales/data_messages_es.properties
deleted file mode 100644
index 435e702b..00000000
--- a/locales/Spanish/locales/data_messages_es.properties
+++ /dev/null
@@ -1,90 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-button.cancel=Cancelar
-button.information=Informaci\u00f3n
-button.ok=Aceptar
-
-caption.sort=Ordenar
-
-exception.iofile=Error leyendo el archivo.
-exception.nocompare=Se esperaba un comparador de QBF.
-exception.nodataset=Conjunto de datos sin definir.
-exception.nodelete=No se han borrado registros.
-exception.nofinishedfile=El archivo de sentencias no ha finalizado.
-exception.noinsert=No se han creado registros.
-exception.nonegativelimits=No se permiten l\u00edmites negativos.
-exception.noparamtype=El tipo del par\u00e1metro no est\u00e1 permitido.
-exception.noreadfile=Error leyendo el archivo de sentencias.
-exception.notnull=El valor debe ser no nulo.
-exception.noupdate=No se han modificado registros.
-exception.noupdatecount=N\u00famero de modificaciones sin definir.
-exception.outofbounds=Fuera de los l\u00edmites.
-exception.parserconfig=Error del analizador XML. Por favor, contecte con el administrador.
-exception.xmlfile=Error de an\u00e1lisis. Archivo XML no v\u00e1lido.
-
-label.andby=Y por
-label.casesensitive=May\u00fasculas / Min\u00fasculas
-label.findwhat=Buscar
-label.imagefiles=Archivos de im\u00e1genes
-label.match=Condici\u00f3n
-label.sortby=Ordenar por
-label.where=Donde
-
-list.anypart=Cualquier parte del campo
-list.re=Expresi\u00f3n regular
-list.startfield=Principio del campo
-list.wholefield=Todo el campo
-
-message.changeslost=Los cambios realizados se perder\u00e1n. \u00bfDesea continuar?
-message.nodelete=No se puede marcar el registro para borrar.
-message.nolistdata=No se puede buscar en la lista de datos.
-message.nomove=No se puede mover a otro registro.
-message.nonew=No se puede crear un nuevo registro.
-message.norecord=No se encuentra el registro.
-message.noreload=No se puede recargar la lista de datos.
-message.nosave=No se puede grabar el registro.
-message.nosort=La condici\u00f3n de ordenaci\u00f3n no es correcta
-message.resizeimage=La image seleccionada es m\u00e1s grande que el tama\u00f1o adecuado para el campo. \u00bfDesea redimensionar la imagen?
-message.wannasave=\u00bfDesea guardar los cambios antes de salir?
-
-qbf.distinct=Distinto
-qbf.equals=Igual
-qbf.greater=Mayor
-qbf.greaterequals=Mayor o igual
-qbf.less=Menor
-qbf.lessequals=Menor o igual
-qbf.none=Ninguno
-qbf.notnull=No nulo
-qbf.null=Nulo
-qbf.re=Comodines
-
-sgn.caution=Atenci\u00f3n\:
-sgn.danger=Peligro\:
-sgn.important=Importante\:
-sgn.notice=Aviso\:
-sgn.success=\u00c9xito\:
-sgn.unknown=Desconocido\:
-sgn.warning=Precauci\u00f3n\:
-
-title.editor=Mensaje del editor
-title.find=Buscar
-title.message=Mensaje del gestor de datos
-combo.year=A\u00f1o
-combo.today=Hoy
-combo.month=Mes
diff --git a/locales/Spanish/locales/erp_messages_es.properties b/locales/Spanish/locales/erp_messages_es.properties
deleted file mode 100644
index fa8fcedf..00000000
--- a/locales/Spanish/locales/erp_messages_es.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.configerp=Configuraci\u00f3n ERP
-label.erpid=C\u00f3digo de entidad
-label.erporg=C\u00f3digo de organizacion
-label.erppassword=Clave de acceso
-label.erppos=C\u00f3digo de punto de venta
-label.erpurl=URL de servicio
-label.erpuser=Usuario
-message.malformedurlexception=La direcci\u00f3n URL del servicio no es correcta.
-message.propsnotdefined=No se ha definido el recurso de propiedades de sincronizaci\u00f3n "chromis.properties".
-message.remoteexception=Se ha producido un error de comunicaci\u00f3n.
-message.returnnull=Los par\u00e1metros de sincronizaci\u00f3n no son correctos.
-message.serviceexception=No se ha podido conectar con el servicio.
-message.syncordersinfo=Se han sincronizado {0} \u00f3rdenes.
-message.syncordersok=Se han sincronizado las \u00f3rdenes correctamente.
-message.syncproductsinfo=Se han sincronizado {0} productos.\nSe han sincronizado {1} clientes.
-message.syncproductsok=Se han sincronizado los datos correctamente.
-message.urlnotdefined=No se ha definido la direcci\u00f3n URL del servicio de sincronizaci\u00f3n
-message.zeroorders=No hay \u00f3rdenes que sincronizar.
-message.zeroproducts=No hay datos que sincronizar.
diff --git a/locales/Spanish/locales/pos_messages_es.properties b/locales/Spanish/locales/pos_messages_es.properties
deleted file mode 100644
index f2e648f9..00000000
--- a/locales/Spanish/locales/pos_messages_es.properties
+++ /dev/null
@@ -1,748 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-button.memberdiscount=Desc Miembro
-Button.Cancel=Cancelar
-button.catalogadd=A\u00f1adir al cat\u00e1logo
-button.catalogdel=Borrar del cat\u00e1logo
-button.clean=Restaurar
-Button.Close=Cerrar
-Button.CloseCash=Cerrar caja
-button.Discount=Descuento
-Button.DeleteTicket=Borrar
-button.edit=Editar
-Button.ExecuteChart=Ejecutar gr\u00e1fico
-button.executefilter=Ejecutar filtro
-Button.ExecuteReport=Ejecutar informe
-Button.Factory=Valores de f\u00e1brica
-button.linediscount=Desc' %
-button.listtickets=Lista
-button.migrate=Migrar Base de Datos
-button.movetable=Mover
-Button.NewTicket=Nuevo
-Button.OK=Aceptar
-button.opendrawer=Abrir caj\u00f3n
-button.pay=Pagar cuenta
-button.peoplepassword=Clave de acceso
-button.print=Imprimir
-Button.PrintCash=Imprimir
-button.receive=Recibir
-button.refund=Devolver
-button.refundall=Devolver todo
-button.refundit=Devolver Articulo
-button.refundline=Devolver l\u00ednea
-button.refundone=Devolver uno
-button.reloadticket=Recargar
-button.reservations=Reservas
-button.reset=Limpiar
-Button.Restore=Restaurar
-Button.Save=Guardar
-button.scale=Balanza
-button.sendorder=Enviar Orden
-button.setperson=Camarero
-button.tables=Mesas
-button.totaldiscount=Total Desc'
-Button.Exit=Salir
-button.moorings=Moorings
-button.test=TEST
-button.newcustomer=Nuevo Cliente
-
-caption.tickets=Recibos
-caption.upload=Subir lista de productos
-caption.split=Dividir recibo
-
-Database.ScriptError=No se ha podido ejecutar el gui\u00f3n de creaci\u00f3n de base de datos.
-database.ScriptNotFound=No se encuentra el scrit Updater.sql.
-Database.ScriptWarning=No se ha podido ejecutar el gui\u00f3n correctamente.
-database.UnableToConnect=No se puede conectar con la Base de Datos! Comprueba los ajustes en Configuraci\u00f3n.
-database.UpdaterWarning=No se puede ejecutar el script de actualizaci\u00f3n de la base de datos.
-datebase.ResetPickup=No se puede resetear el pickup
-Display.Null=Visor no disponible
-Display.Screen=Visor en pantalla
-Display.Window=Visor
-
-exception.unavailabledataset=No hay conjunto de datos disponible
-exception.unavailablefield=Campo no definido\: {0}
-exception.unavailablefields=No hay campos disponibles
-
-filter.dbdriverlib=Driver (librer\u00eda) (*.jar,*.zip)
-
-form.customertitle=Lista de clientes
-form.productslist=Lista de productos
-form.selectprintertitle=Seleccionar impresora
-form.tickettitle=Lista de recibos
-
-label.address=Direcci\u00f3n l\u00ednea 1
-label.address2=Direcci\u00f3n l\u00ednea 2
-label.all=Todos
-label.attribute=Atributo de producto
-label.attributes=Atributos
-label.attributeset=Conjunto de atributos
-label.autologoffpanel=Auto LogOff
-label.autologonoff=Auto LogOff tras la venta
-label.autoloffrestaurant=En modo Restaurante - volver a las mesas
-label.autolofftime=Auto LogOff despue\u00c5\u009b de un tiempo inactivo
-label.autologoffzero=seconds, 0 = Sin LogOff por tiempo
-
-label.btndisplay=Button Display Text
-label.bybarcode=Por c\u00f3digo barras
-label.bycustomer=Por cliente
-label.bydates=Por fechas
-label.byform=Por formulario
-label.byproduct=Por producto
-label.byreason=Por raz\u00f3n
-label.bywarehouse=Por almac\u00e9n
-
-label.card=Tarjeta
-label.cardexpdate=Caduca final
-label.cardholder=Nombre
-label.cardnumber=Tarjeta
-label.cascade=Cascada
-Label.Cash=Caja
-Label.CashMachine=Caja registradora
-label.catid=Identificador
-label.catimage=Imagen
-label.catname=Categor\u00eda
-label.certificatepath=Certificado
-label.certificatepwd=Clave del certificado
-Label.ChangeCash=Cambio
-label.city=Ciudad
-label.commerceid=Id. de comercio
-label.commercepwd=Clave de comercio
-label.commercesign=Signo de comercio
-label.companyname=Nombre Compa\u00f1ia
-label.companyaddr1=Domicilio
-label.companyaddr2=Domicilio 2
-label.companyaddr3=Ciudad
-label.companyaddr4=Codigo Postal
-label.companytelephone=Numero Telefono
-label.companyFax=Numero Fax
-label.companyemail=Email
-label.companytax=CIF
-label.companywww=Pagina Web
-
-
-label.configreceipt=Ajuste Recibo
-label.contact=Contacto
-label.country=Pa\u00eds
-label.csvbad=Precio Mal
-label.csvclearlog=Limpiar log importaci\u00f3n
-label.csvdelimit=Separador
-label.csvenableclear=Activar Boton Limpiar Importe
-label.csvfile=Archivo
-label.csvimpostbtn=Importar CSV
-label.cvsinvalid=Productos Inv\u00e1lidos
-label.csvmissing=Datos Perdidos
-label.csvnewproducts=Nuevos Productos
-label.cvsnotchanged=Sin Cambios
-label.csvpriceupdated=Precios Actualizados
-label.csvread=Leer Cabecera
-label.csvrecordsfound=Registros encontrados
-label.csvresetimport=Resetear Importaci\u00f3n de Datos
-label.csvsellingintax=Vender con Precios IVA Incluido?
-
-
-label.curdebt=Deuda actual
-label.curdate=Fecha de deuda
-label.currency=Moneda
-label.currencybutton=Ocultar Superposici\u00f3n texto Pagos
-label.customer=Cliente
-label.custtaxcategory=Categor\u00eda de impuesto por cliente
-
-
-Label.Database=Base de datos
-label.date=Fecha
-label.datestitle=Fechas de cierre
-label.datetime=Fecha y hora
-Label.DbDriver=Driver (clase)
-label.dbdriverlib=Driver (librer\u00eda)
-Label.DbPassword=Clave de acceso
-Label.DbURL=Cadena de conexi\u00f3n
-Label.DbUser=Usuario
-label.debt=A cuenta
-label.double=Decimal
-label.dutyid=Identificador
-label.dutyname=Impuesto
-label.dutyrate=Tasa
-
-label.editline=Editar l\u00ednea
-label.email=E-mail
-Label.EndDate=Fecha de fin
-
-label.fax=Fax
-label.firstname=Nombre
-label.floorid=Identificador
-label.floorname=Planta
-
-label.general=General
-label.grossprofit=Beneficio Bruto
-
-label.image=Imagen
-label.Infopanel=Ocultar Barra Estado
-label.inputamount=Campo de entrada por encima del teclado
-Label.InputCash=Entregado
-label.integer=Entero
-label.item=Art\u00edculo
-label.item2=Descripcion
-
-label.javapos.drawer=Nombre del caj\u00f3n
-label.javapos.printer=Nombre de la impresora
-
-label.lastname=Apellidos
-label.lindediscount=Desc' %
-Label.LoadError=Se ha producido un error al mostrar esta funcionalidad.
-label.locale=Localizaci\u00f3n
-label.location=Direcci\u00f3n
-label.locationaddress=Direcci\u00f3n
-label.locationid=Identificador
-label.locationname=Nombre
-label.looknfeel=Aspecto
-label.loyaltycardnumber=Numero Tarjeta
-label.loyaltyproducts=detalles de fidelidad
-
-Label.MachineDisplay=Visor de clientes
-label.machinedisplayconn=Modo
-label.machinedisplayport=Puerto
-Label.MachineName=Nombre
-Label.MachinePrinter=Impresora
-Label.MachinePrinter2=Impresora 2
-Label.MachinePrinter3=Impresora 3
-Label.MachinePrinter4=Impresora 4
-Label.MachinePrinter5=Impresora 5
-Label.MachinePrinter6=Impresora 6
-label.machineprinterport=Puerto
-Label.MachineScreen=Pantalla
-label.magcardreader=Lector de tarjetas
-label.mandatory=Obligatorio
-label.margin=Margen
-label.marine=Opci\u00f3n Marina
-label.maxdebt=Deuda m\u00e1xima
-label.maximum=M\u00e1ximo
-label.merchantcode=C\u00f3digo de comercio
-label.minimum=M\u00ednimo
-label.money=Total
-
-label.packsinstock=In stock
-label.packof= packs of
-label.packstosplit=Packs to split
-label.productinpack=Product in pack
-label.split=Split
-
-label.mooringscreatefor=Crear ticket para
-label.mooringcreatebtn=Crear Ticket
-
-Label.Name=Nombre
-label.name=Nombre
-label.notes=Notas
-label.noticketstoclose=No hay tiquets por cerrar
-label.nullcategory=(Sin categor\u00eda)
-
-label.order=Orden
-
-Label.Password=Clave
-label.passwordnew=Clave nueva
-label.passwordold=Clave antigua
-label.passwordrepeat=Repetir clave
-Label.Payment=Pagos
-label.paymentdate=Fecha
-label.paymentgateway=Pasarela de pago
-label.paymentnote=Notes
-label.paymentreason=Raz\u00f3n
-label.paymentstitle=Informe de pagos
-label.paymenttestmode=Modo pruebas
-label.paymenttotal=Total
-label.peopleimage=Imagen
-label.peoplename=Nombre
-label.peoplevisible=Visible
-label.percent=Porcentaje
-label.pickupcodesize=Long. N\u00fam Captura
-label.phone=Tel\u00e9fono
-label.phone2=Tel\u00e9fono alt.
-label.placefloor=Planta
-label.placeid=Identificador
-label.placename=Sitio
-label.placeposition=Posici\u00f3n
-label.postal=C\u00f3digo postal
-label.price=PVP
-label.pricetax=PVP+IVA
-label.printtokitchen=Impresora Remota
-label.prodaux=Auxiliar
-label.prodbarcode=C\u00f3digo barras
-label.prodcategory=Categor\u00eda
-label.prodcost=Coste
-label.prodgeneral=General
-label.prodincatalog=En el cat\u00e1logo
-label.prodname=Nombre
-label.prodorder=Orden
-label.prodpricebuy=Precio compra
-label.prodpricesell=PVP
-label.prodpriceselltax=PVP+IVA
-label.prodproperties=Propiedades
-label.productreceipt=Se requiere Ticket para la garant\u00eda
-label.prodref=Referencia
-label.prodscale=Balanza
-label.prodstock=Inventario
-label.prodstockcost=Coste anual
-label.prodstockmax=Nivel m\u00e1ximo
-label.pricewith00=Usar bot\u00f3n 00 en el teclado
-label.prodstocksec=Nivel de seguridad
-label.prodstockvol=Volumen
-label.prodtaxcode=Impuesto
-label.produnits=Unidades
-label.prodvaluebuy=Valor de compra
-label.prodvaluesell=Valor de venta
-label.prodvolume=Volumen
-label.properties=Propiedades
-
-label.receiptprint=Desactivar Impresi\u00f3n Ticket
-label.receiptprinter=Impresora de recibos
-label.recorddeleted=(Registro borrado)
-label.recordeof=(No hay registros)
-label.recordnew=(Registro nuevo)
-label.refunds=Devoluciones
-label.region=Regi\u00f3n
-label.remainingcash=Restante
-label.reportsprinter=Impresora de informes
-label.resetpickup=Resetear Contador de Capturas
-label.resname=Recurso
-label.restaurantcustomer=Se est\u00e1 recibiendo al cliente {0}. Seleccione una mesa vac\u00eda.
-label.restaurantmove=Se est\u00e1 moviendo la mesa {0}. Seleccione otra mesa o la mesa de origen.
-label.role=Rol
-label.roletableclass=Clase
-label.roletabledescription=Descripci\u00f3n
-label.roletableallowed=Permitido
-
-
-label.sales=Ventas
-label.salestitle=Informe de ventas
-label.scale=Balanza
-label.scaleinput=Introduzca un peso.
-label.scanner=Esc\u00e1ner
-label.SChargepanel=Cargo por Servicio
-label.SCOnOff=Activar Cargo por Servicio
-label.SCRestaurant=S\u00f3lo en modo Restaurante?
-label.SCRate=Tarifa de Cargo por Servicio
-label.SCZero=%
-label.search=Buscar
-label.searchkey=Clave de b\u00fasqueda
-label.sequence=Secuencia
-label.sha=SHA
-Label.StartDate=Fecha de inicio
-label.startuptext=Texto
-label.startuplogo=Logo
-label.startuppanel=Pantalla de Inicio
-label.stockdate=Fecha
-label.stockproduct=Producto
-label.stockreason=Raz\u00f3n
-label.stocktaker=Entrado por
-label.storename=Nombre de tienda
-label.subcategorytitle=Nombre en panel
-label.subtotalcash=Subtotal
-
-label.table=Mesa
-label.tabledisplayoptions=Mostra Mesa
-label.tableshowcustomerdetails=Mostrar Cliente
-label.tableshowwaiterdetails=Mostrar Camarero
-label.tax=Impuesto
-label.taxcash=Impuestos
-label.taxcategory=Cat. de impuesto
-label.taxes=Impuestos
-label.taxid=CIF/NIF
-label.taxincluded=Impuestos Incluidos al inicio
-label.taxparent=Impuesto padre
-label.terminal=Terminal
-label.textcolourcustomer=Color texto Cliente
-label.textcolourwaiter=Color texto Camarero
-label.textclourtablename=Color nombre Mesa
-label.texttip=Mensaje texto
-label.ticketid=Ticket #
-Label.Tickets=Pagos
-Label.Ticketsbag=Recibos
-Label.ticketsetupexample=Ejemplo
-Label.ticketsetupprefix=Prefijo N\u00fam. Recibo
-Label.ticketsetupnumber=Long. m\u00edn N\u00fam Ticket
-
-
-
-label.time=Hora
-label.totalcash=Total
-label.totaldiscount=Total Desc'
-label.type=Tipo
-
-label.units=Cant.
-label.units2=Cantidad
-label.uploadingproducts=Subiendo productos... Por favor, espere
-label.user=Usuario
-Label.ValidFrom=Validez desde
-label.value=Importe
-label.value2=Precio
-label.variableprice=Precio Variable
-label.visible=Visible
-
-label.warehouse=Almac\u00e9n
-
-Menu.Attributes=Atributos de productos
-Menu.AttributeSets=Conjunto de atributos de productos
-Menu.AttributeUse=Uso de atributos de productos
-Menu.AttributeValues=Valores de atributos
-Menu.Auxiliar=Productos auxiliares
-
-Menu.Backoffice=Administraci\u00f3n
-
-Menu.CashFlow=Cash-Flow
-Menu.CashRegisterLog=Registro de Transacciones
-Menu.CategorySales=Categor\u00edas de Ventas
-Menu.Catalog=Cat\u00e1logo
-Menu.Categories=Categor\u00edas
-Menu.CategoryProductSalesChart=Gr\u00e1fica de Ventas por Categor\u00eda
-Menu.ChangePassword=Cambiar clave
-Menu.ClosedProducts=Ventas de productos
-Menu.CloseTPV=Cerrar caja
-Menu.Closing=Cierres de caja
-Menu.Configuration=Configuraci\u00f3n
-Menu.CSVImport=Importar Archivo CSV
-Menu.CSVReset=Borrar Registro Importaciones
-Menu.Customers=Clientes
-Menu.Customers.Reports=Informes
-Menu.CustomersBReport=Clientes morosos
-Menu.CustomersDiary=Diario de clientes
-Menu.CustomersList=Listado de Clientes
-Menu.CustomersManagement=Clientes
-Menu.CustomersPayment=Clientes
-Menu.CustomersReport=Clientes
-
-message.DBDefault=
The Default database shipped with Chromis POS is Apache Derby Embedded. It is intended for stand-alone, single-user installs only.
\n
If you need multiple terminals to connect to a central database then select from the Database dropdown list above.
\n
If you have selected an alternative database then you must ensure it is installed and configured correctly before trying to connect Chromis POS
\n
-
-Menu.ERPOrders=Sincronizar \u00f3rdenes
-Menu.ERPProducts=Sincronizar POS
-Menu.Exit=Salir
-Menu.ExtendedByProducts=Ventas de Productos Extendida
-Menu.ExtendedCashRegisterLog=Registro de Ventas de Productos Extendida
-Menu.ExtendedSales=Ventas Extendidas
-
-Menu.Floors=Plantas
-
-Menu.Import=Importar
-Menu.Import.Reports=Informes de Importaci\u00f3n
-Menu.InvalidData=Datos Inv\u00e1lidos o Duplicados
-Menu.Inventory=Almacenes
-Menu.Inventory2=Existencias
-Menu.InventoryBroken=Existencias bajo m\u00ednimos
-Menu.InventoryDiff=Diario de existencias
-Menu.InventoryDiffDetail=Detalle de diario de existencias
-Menu.InventoryListDetail=Detalle de existencias
-Menu.InventoryReOrder=Inventory: Re-Order
-
-Menu.Locations=Almacenes
-
-Menu.Main=Principal
-Menu.Maintenance.ERP=Chromis ERP
-Menu.Maintenance.POS=Terminal de venta
-Menu.Maintenance.Reports=Informes
-Menu.Maintenance=Mantenimiento
-Menu.MissingData=Faltan Dato o Precio Mal en el Archivo
-
-Menu.NewProducts=A\u00f1adidos Nuevos Productos
-
-Menu.PaymentReport=Pagos
-Menu.Payments=Movimientos de caja
-Menu.Printer=Impresoras
-Menu.ProductLabels=Etiquetas de productos
-Menu.Products=Productos
-Menu.ProductSales=Ventas de productos
-Menu.ProductsWarehouse=Productos por almac\u00e9n
-Menu.ProductPacks=Product Packs
-Menu.StockChanges=Stock Changes
-Menu.StockChangesReport=Stock Changes Report
-Menu.Promotions=Promotions
-Menu.PromotionsReport=Promotions Report
-
-Menu.Reports=Informes
-Menu.ReportTaxes=Impuestos
-Menu.Resetpickup=Resetear Contador de Recogidas
-Menu.Resources=Recursos
-Menu.Roles=Roles
-
-Menu.SalesByCustomer=Ventas por Cliente
-Menu.SaleCatalog=Cat\u00e1logo de Venta
-Menu.SalesChart=Gr\u00e1fico de ventas
-Menu.SalesManagement.Reports=Informes
-Menu.SalesManagement=Ventas
-Menu.SalesProfit=Beneficio de Ventas de Productos
-Menu.SaleTaxes=Impuestos de Ventas
-Menu.StockDiary=Movimiento de existencias
-Menu.StockManagement.Edit=Mantenimiento
-Menu.StockManagement.Reports=Informes
-Menu.StockManagement=Inventario
-Menu.StockMovement=Gesti\u00f3n de inventario
-Menu.System=Sistema
-
-Menu.Tables=Mesas
-Menu.Taxes=Impuestos
-Menu.TaxCustCategories=Categor\u00edas de impuestos por cliente
-Menu.TaxCategories=Categor\u00edas de impuestos
-Menu.ThirdParties=Proveedores
-Menu.ThirdPartiesManagement=Gesti\u00f3n de proveedores
-Menu.Ticket=Ventas
-Menu.TicketEdit=Editar ventas
-Menu.TicketRefund=Devoluciones
-Menu.Tools=Herramientas
-Menu.Top10Sales=Top 10 Ventas
-
-Menu.Update= Actulizaci\u00f3n Manual Base de Datos
-Menu.UpdatedPrices= Cambio de Precios
-Menu.Users=Usuarios
-Menu.UsersReport=Usuarios
-Menu.UserSells=Caja por vendedor
-Menu.Utilities=Utilidades
-Menu.UtilityOptions=Opciones de Utilidades
-
-
-message.BadPassword=La clave no es v\u00e1lida. Reint\u00e9ntelo otra vez.
-
-message.cannotcalculatetaxes=No se han podido calcular los impuestos.\nLos impuestos de uno o m\u00e1s productos del recibo no est\u00e1n correctamente definidos.\n
-message.cannotchangepassword=No se ha podido cambiar la clave de acceso.
-message.cannotclosecash=No se puede cargar la caja.
-message.cannotdeleteconfig=No se ha podido borrar el archivo de configuraci\u00f3n.
-message.cannotexecute=No se ha podido ejecutar la acci\u00f3n.
-message.cannotfillchart=No se han podido rellenar los datos del gr\u00e1fico.
-message.cannotfillreport=No se han podido rellenar los datos del informe.
-message.cannotfindattributes=Este producto no tiene atributos.
-message.cannotfindcustomer=No se han podido encontrar los datos del cliente.
-message.cannotloadlists=No se han podido cargar las listas de datos.
-message.cannotloadreport=No se ha podido cargar la definici\u00f3n del informe.
-message.cannotloadreportdata=No se han podido cargar los datos del informe.
-message.cannotloadresourcedata=No se han podido cargar los recursos del informe.
-message.cannotloadticket=No se ha podido cargar el recibo.
-message.CannotMove=No se puede mover a otro registro.
-message.cannotprint=No se puede imprimir el recibo.
-message.cannotprintline=No se ha podido imprimir la l\u00ednea.
-message.cannotprintticket=No se ha podido imprimir el recibo.
-message.cannotsaveconfig=No se ha podido guardar el archivo de configuraci\u00f3n.
-message.cannotsaveinventorydata=No se ha podido guardar los datos de inventario.
-message.cardnew=El valor de la tarjeta va a cambiar. Desea continuar?
-message.cardremove=El valor de la tarjeta se va a borrar. Desea continuar?
-
-message.changepassworddistinct=La clave de acceso repetida debe ser igual a la clave nueva.
-message.changeserver=Cambio Servidor actual en Desarrollo
-message.closecashok=La caja se ha cerrado con \u00e9xito.
-message.configfactory=Se restaurar\u00e1n los valores de f\u00e1brica y se perder\u00e1n los actuales. \u00bfDesea continuar?
-message.configrestore=Se restaurar\u00e1n los valores iniciales y se perder\u00e1n los cambios. \u00bfDesea continuar?
-message.createdatabase=No se ha detectado una base de datos en funcionamiento. Se creara una base de datos por defecto. \u00bfDesea continuar?
-message.createdatabasejl=New database information needs to be created for John L changes. This will now be done. Do you want to continue? If not, you will be unable to use the system.
-message.customerdebtexceded=El cliente supera la deuda permitida.
-
-message.databaseconnectionerror=No se puede conectar con la base de datos. Base de datos no disponible.
-message.databasedrivererror=No se puede conectar con la base de datos. Driver no encontrado.
-message.databasenotsupported=Base de datos "{0}" no soportada.
-message.databasesuccess=
Est\u00e1s Conectado!
Reinicia Chromis POS para cargar la Conexi\u00f3n a la Base de Datos
-
-message.mergetable=Uni\u00f3n de mesas
-message.mergetablequestion=\u00bfEst\u00e1 seguro que quiere unir las mesas?
-message.nigratemessage=Migraci\u00f3n de Base de Datos
-message.migratenotsupported=Tipo de Migraci\u00f3n de Base de Datos no soportada
-
-message.nocard=Tarjeta de usuario no encontrada. Reint\u00e9ntelo otra vez...
-message.nocardreader=Lector de tarjetas sin definir.
-message.nocustomer=No existe un cliente con el c\u00f3digo introducido
-message.nocustomernodebt=Este recibo no est\u00e1 asignado.\nNo puede ser pagado a cuenta.
-message.nopaymentgateway=Pasarela de pago sin definir.
-message.noprinters=No hay impresoras instaladas en el sistema.
-message.noproduct=No existe un producto con el c\u00f3digo introducido
-message.nosaveticket=No se ha podido guardar el recibo.
-message.notactive=Ha sucedido un error al mostrar el panel.
-message.notexiststicket=El recibo no existe.
-message.notexiststickettitle=Mensaje Recibo
-message.noticket=El recibo ya no existe.
-message.notpermissions=No dispone de permisos para ejecutar esta tarea.
-message.noupdatescript=Se ha detectado un versi\u00f3n anterior de la base de datos pero no es posible actualizar la base de datos autom\u00e1ticamente. Chromis POS se cerrar\u00e1 ahora.
-message.noweight=No se ha podido realizar la pesada.
-message.nullticket=No puedes crear un ticket vac\u00edo! Por favor a\u00f1ade alg\u00fan art\u00edculo a esta venta
-
-message.paymentcashneg=Haga la devoluci\u00f3n y pulse Aceptar.
-message.paymenterror=Error en la transacci\u00f3n.
-message.paymenterrorunknown=Error desconocido en la transacci\u00f3n.
-message.paymentexceptionremote=Excepci\u00f3n remota.
-message.paymentexceptionservice=Excepci\u00f3n del servicio.
-message.paymentfree=Sin cargo.
-message.paymentgatewayext=Haga el pago con tarjeta y pulse Aceptar.
-message.paymentgatewayextrefund=
Haga la devoluci\u00f3n con tarjeta y pulse Aceptar.
-message.paymentgatewayswipe=Pase la tarjeta por el lector y pulse Aceptar.
-message.paymentgatewaytype=Escriba los datos de la tarjeta y pulse Aceptar.
-message.paymentnotauthorised=Transacci\u00f3n no autorizada.
-message.paymentrefundsnotsupported=No se pueden realizar devoluciones.
-message.preparescanner=Prepare the scanner to upload the products list and press OK.
-message.printererror=No se ha podido imprimir el recibo.
-message.productnotselected=No se ha seleccionado el producto.
-message.stockchangesactioned=Stock Changes Actioned
-
-message.restartchanges=La configuraci\u00f3n se ha guardado correctamente. Los cambios se realizar\u00e1n al reiniciar la aplicaci\u00f3n.
-
-message.scannerfail=Se ha producido un error al subir la lista de productos.
-message.scannerfail2=Se ha producido un error al descargar la lista de productos.
-message.scannerok=Se ha subido con \u00e9xito la lista de productos.
-message.startupText=Changing the content of the default Startup Text and not declaring that this is free software is in violation of the Free Software Foundation's GNU General Public License GPL
-message.systemclosecash=Mover botones Cerrar Caja
-
-message.tableempty=La mesa est\u00e1 ahora vac\u00eda.
-message.tablefull=La mesa est\u00e1 ahora vac\u00eda.
-message.title=Mensaje de la registradora
-
-message.updatedatabase=Se ha detectado una versi\u00f3n anterior de la base de datos. Se actualizar\u00e1 la base de datos autom\u00e1ticamente. SE PUEDEN PERDER DATOS. PRIMERO HAGA UNA COPIA DE SEGURIDAD. \u00bfDesea continuar?
-message.updatedatabasejl=New database changes are required (John l changes). The database will be upgraded automatically. DATA MAY BE LOST. FIRST CREATE A BACKUP. Do you want to continue? If not, you will be unable to use the system.
-
-message.wannaclosecash=\u00bfEst\u00e1 seguro que desea cerrar la caja?
-message.wannadelete=\u00bfEst\u00e1 seguro que desea borrar el recibo actual?
-message.wannasave=\u00bfDesea guardar los cambios antes de salir?
-
-migration.ScriptNotFound=Script de Migraci\u00f3n no encontrado
-migration.warning=Error de SQL en la Migration
-migration.warningnodefault=No encontrado Creaci\u00f3n de Base de Datos
-migration.warningjl=No encontrado Crear Caracter\u00edsticas
-migration.warningnofk=No encontrado Borrado de Claves Externas
-migration.notvalidversion=El nuevo tipo de Base de Datos no est\u00e1 soportado
-
-payment.title=Pago
-
-Printer.Null=Impresora no disponible
-Printer.Screen=Impresora en pantalla
-Printer.Serial=Impresora de recibos
-
-resource.binary=Binario
-resource.image=Imagen
-resource.text=Texto
-
-rest.label.chairs=Sillas
-rest.label.customer=Cliente
-rest.label.date=Fecha
-rest.label.notes=Notas
-
-scale.invalidvalue=La balanza devolvi\u00f3 un valor err\u00f3neo.
-scale.notdefined=La balanza no est\u00e1 definida.
-scale.weighitem=Weigh Item
-
-stock.in.movement=(entrada) Traspaso
-stock.in.purchase=(entrada) compra
-stock.in.refund=(entrada) devoluci\u00f3n
-stock.out.break=(salida) rotura
-stock.out.crossing=Traspaso
-stock.out.movement=(salida) Traspaso
-stock.out.refund=(salida) devoluci\u00f3n
-stock.out.sale=(salida) venta
-stock.in.openpack=(In) Open Pack
-stock.out.openpack=(Out) Open Pack
-stock.in.stockchange=(In) Stock Change
-stock.out.stockchange=(Out) Stock Change
-
-tab.cash=Efectivo
-tab.cashrefund=Devoluci\u00f3n
-tab.cheque=Cheque
-tab.chequerefund=Cheque
-tab.debt=A cuenta
-tab.free=Gratis
-tab.magcard=Tarjeta
-tab.paper=Vale
-tab.debt=D\u00e9bito
-
-title.changepassword=Cambiar clave de acceso
-title.editor=Mensaje del editor
-
-transpayment.bank=Banco
-transpayment.cash=Efectivo
-transpayment.cashin=(entrada) Efectivo
-transpayment.cashout=(Salida) Efectivo
-transpayment.cashrefund=Devoluci\u00f3n
-transpayment.cheque=Cheque
-transpayment.chequerefund=Devoluci\u00f3n con cheque
-transpayment.debt=A cuenta
-transpayment.debtpaid=A cuenta pagados
-transpayment.free=Sin cargo
-transpayment.magcard=Tarjeta
-transpayment.magcardrefund=Devoluci\u00f3n con tarjeta
-transpayment.paperin=Vales cobrados
-transpayment.paperout=Vales emitidos
-
-Visor.Title=Chromis POS
-
-# Empleados y Control de Presencia
-Menu.Leaves=Ausencias
-Menu.Breaks=Descansos
-Menu.CheckInCheckOut=Entradas/Salidas
-Menu.PresenceManagement=Control Presencia
-Menu.Employees.Reports=Informes
-Menu.DailyPresenceReport=Presencia Diaria
-Menu.DailyScheduleReport=Agenda Diaria
-Menu.PerformanceReport=Prestaciones
-label.epm.employee=Empleado
-label.epm.employee.id=ID Empleado
-label.epm.startdate=Fecha Inicio
-label.epm.enddate=Fecha Fin
-label.epm.notes=Notas
-label.epm.visible=Visible
-message.cannotfindemployee=No se encuentra el empleado
-message.invalidenddate=Fecha Fin no puede ser anterior a Fecha Inicio
-message.invalidstartdate=Fecha Inicio no puede ser anterior a Fecha del Sistema
-message.leavefor=Ausencia por
-message.at=al
-message.probleminbreak=Error in Descanso
-message.leavecontrol=Est\u00e1 en Salida. Para entrada: Contacta con el Supervisor para cancelar la salida
-message.checkedin=has Entrado el
-message.checkedout=has Salido el
-message.cannotcheckin=No puedes Entrar
-message.cannotcheckout=No puedes Salir
-message.noshift=No tienes un turno anterior
-message.breakoverandcheckedin=El descanso ha finalizado. Entrada el
-message.breakoverandcheckedout=El descanso ha finalizado. Salida el
-
-label.roletabldescription=Desc
-Button.newcustomer=Cancelar
-message.systemclosecas=jCheckBox1
-
-title.CSVImport=Estado
-label.splitpayment=Dividir Pago
-label.addsplitpayment=A\u00f1adir Divisi\u00f3n de Pago
-label.deletesplitpayment=Borrar Divisi\u00f3n de Pago
-Button.Test=Test
-label.CatalogueYes=Inclu\u00eddo
-label.CatalogueNo=Exclu\u00eddo
-label.CatalogueStatus=En Cat\u00e1logo?
-label.nocashsales=Sin Venta-Abrir Caj\u00f3n
-label.closeoptions=Opciones de Cierre
-label.producthtmlguide=\n
Puedes personalizar la pantalla de venta de Productos aqu\u00ed. \nSi tienes algunos conocimientos de HTML puedes completar lo que aparece aqu\u00ed
\n
Pasa el cursor sobre el texto de la derecha para ver el c\u00f3digo HTML asociado al efecto que quieres en el Bot\u00f3n
\n
-label.prodminmax=M\u00ednimo y M\u00e1ximo nivel de productos se configura en Localizaci\u00f3n del \nProducto junto con las unidades vendidas
-label.fontcolour=Color de Texto
-tooltip.fontcolour=
-label.fontsize=TEXTO PEQUE\u00f1O
-tooltip.fontsize=peque\u00f1o
-tooltip.fontsizesmall=peque\u00f1o
-label.fontsizesmall=Tama\u00f1o de Fuente: peque\u00f1o
-label.fontsizelarge=Texto Grande
-tooltip.fontsizelarge=Grande
-label.fontweight=Texto en Negrita
-label.fontitalic=Texto en It\u00e1lico
-tooltip.fontitalic=Texto en It\u00e1lico
-tooltip.fontbold=Negrita
-label.fontexample=Mostrar DOS L\u00edNEAS EN EL BOT\u00f3N
-tooltip.fontexample=Mostrar DOS L\u00edNEAS EN EL BOT\u00f3N
-button.htmltest=Mostrar texto
-label.prodbuttonhtml=HTML Bot\u00f3n pantalla de Ventas
-label.CatalogueStatusYes=En Cat\u00e1logo
-label.CatalogueStatusNo=No en Cat\u00e1logo
-label.Transactions=Transacciones
-label.photo=Foto
diff --git a/locales/Spanish/reports/uk/chromis/reports/missingdata_messages_es.properties b/locales/Spanish/missingdata_messages_es.properties
similarity index 85%
rename from locales/Spanish/reports/uk/chromis/reports/missingdata_messages_es.properties
rename to locales/Spanish/missingdata_messages_es.properties
index a81b8e53..d942161f 100644
--- a/locales/Spanish/reports/uk/chromis/reports/missingdata_messages_es.properties
+++ b/locales/Spanish/missingdata_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -16,7 +16,7 @@
# You should have received a copy of the GNU General Public License
# along with Chromis POS. If not, see .
-label.title=Datos que Faltan o Precio Inv\u00c3\u00a1lido en archivo
+label.title=Datos que Faltan o Precio no V\u00c3\u00a1lido en archivo
label.reference=Referencia
label.barcode=C\u00c3\u00b3digo de Barras
label.name=Nombre
diff --git a/locales/Spanish/reports/uk/chromis/reports/newproducts_messages_es.properties b/locales/Spanish/newproducts_messages_es.properties
similarity index 91%
rename from locales/Spanish/reports/uk/chromis/reports/newproducts_messages_es.properties
rename to locales/Spanish/newproducts_messages_es.properties
index eea54b4f..55dc4221 100644
--- a/locales/Spanish/reports/uk/chromis/reports/newproducts_messages_es.properties
+++ b/locales/Spanish/newproducts_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Spanish/reports/uk/chromis/reports/paymentreport_messages_es.properties b/locales/Spanish/paymentreport_messages_es.properties
similarity index 89%
rename from locales/Spanish/reports/uk/chromis/reports/paymentreport_messages_es.properties
rename to locales/Spanish/paymentreport_messages_es.properties
index 50ac944f..844eb3da 100644
--- a/locales/Spanish/reports/uk/chromis/reports/paymentreport_messages_es.properties
+++ b/locales/Spanish/paymentreport_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -25,4 +25,4 @@ label.date=Fecha
label.supplierpin=PIN del Proveedor
label.paymenttype=Tipo de Pago
label.partialtotal=Total
-label.total=Gran Total
+label.total=Importe Total
diff --git a/locales/Spanish/reports/uk/chromis/reports/people_messages_es.properties b/locales/Spanish/people_messages_es.properties
similarity index 89%
rename from locales/Spanish/reports/uk/chromis/reports/people_messages_es.properties
rename to locales/Spanish/people_messages_es.properties
index e014c412..f6404bd0 100644
--- a/locales/Spanish/reports/uk/chromis/reports/people_messages_es.properties
+++ b/locales/Spanish/people_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Spanish/reports/uk/chromis/reports/performancereport_messages_es.properties b/locales/Spanish/performancereport_messages_es.properties
similarity index 87%
rename from locales/Spanish/reports/uk/chromis/reports/performancereport_messages_es.properties
rename to locales/Spanish/performancereport_messages_es.properties
index 2345635a..85dd7445 100644
--- a/locales/Spanish/reports/uk/chromis/reports/performancereport_messages_es.properties
+++ b/locales/Spanish/performancereport_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -16,7 +16,7 @@
# You should have received a copy of the GNU General Public License
# along with Chromis POS. If not, see .
-label.title=Informe de Prestaciones
+label.title=Informe de Desempe\u00f1o
label.printed=Impreso
label.period=Per\u00edodo
label.user=Usuario
diff --git a/locales/Spanish/reports/uk/chromis/reports/piesalescat_messages_es.properties b/locales/Spanish/piesalescat_messages_es.properties
similarity index 86%
rename from locales/Spanish/reports/uk/chromis/reports/piesalescat_messages_es.properties
rename to locales/Spanish/piesalescat_messages_es.properties
index a5664dd5..66cc0218 100644
--- a/locales/Spanish/reports/uk/chromis/reports/piesalescat_messages_es.properties
+++ b/locales/Spanish/piesalescat_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -16,7 +16,7 @@
# You should have received a copy of the GNU General Public License
# along with Chromis POS. If not, see .
-label.title=Ventas por Categor\u00c3\u00ada de Producto
+label.title=Ventas por Categor\u00eda de Producto
label.printed=Impreso
label.period=Per\u00edodo:
label.nocategory=(Sin Categor\u00eda definida)
diff --git a/locales/Spanish/reports/uk/chromis/reports/productlabels_messages_es.properties b/locales/Spanish/productlabels_messages_es.properties
similarity index 89%
rename from locales/Spanish/reports/uk/chromis/reports/productlabels_messages_es.properties
rename to locales/Spanish/productlabels_messages_es.properties
index ebf838e9..2119869a 100644
--- a/locales/Spanish/reports/uk/chromis/reports/productlabels_messages_es.properties
+++ b/locales/Spanish/productlabels_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Spanish/reports/uk/chromis/reports/products_messages_es.properties b/locales/Spanish/products_messages_es.properties
similarity index 89%
rename from locales/Spanish/reports/uk/chromis/reports/products_messages_es.properties
rename to locales/Spanish/products_messages_es.properties
index 99a02064..8e4daeb2 100644
--- a/locales/Spanish/reports/uk/chromis/reports/products_messages_es.properties
+++ b/locales/Spanish/products_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -19,7 +19,7 @@
label.cost=Coste
label.printed=Impreso
label.name=Nombre
-label.price=Precio
+label.price=Precio Neto
label.pricetax=Precio + IVA
label.ref=Ref.
label.taxname=Impuesto
diff --git a/locales/Spanish/reports/uk/chromis/reports/productsales_messages_es.properties b/locales/Spanish/productsales_messages_es.properties
similarity index 90%
rename from locales/Spanish/reports/uk/chromis/reports/productsales_messages_es.properties
rename to locales/Spanish/productsales_messages_es.properties
index 79f15893..99ca6871 100644
--- a/locales/Spanish/reports/uk/chromis/reports/productsales_messages_es.properties
+++ b/locales/Spanish/productsales_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Spanish/reports/uk/chromis/reports/productsalesprofit_messages_es.properties b/locales/Spanish/productsalesprofit_messages_es.properties
similarity index 76%
rename from locales/Spanish/reports/uk/chromis/reports/productsalesprofit_messages_es.properties
rename to locales/Spanish/productsalesprofit_messages_es.properties
index b5a2cf23..dd758e25 100644
--- a/locales/Spanish/reports/uk/chromis/reports/productsalesprofit_messages_es.properties
+++ b/locales/Spanish/productsalesprofit_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -19,7 +19,7 @@
label.title=Ventas de Producto: Beneficio
label.printed=Impreso
label.period=Per\u00edodo
-label.code=Codigo de Barras
+label.code=C\u00f3digo de Barras
label.ticket=Ticket No.
label.date=Fecha
label.name=Nombre Producto
@@ -28,4 +28,8 @@ label.sell=Venta
label.units=Unidades
label.profitloss=Beneficio/P\u00e9rdida
label.partialtotal=Total
-label.total=Gran Total
+label.total=Importe Total
+label.expectedsalesvalue=Valor Esperado de Ventas
+label.actualsalesvalue=Valor Actual de Ventas
+label.expectedprofit=Beneficio Esperado
+label.actualprofit=Beneficio Actual
\ No newline at end of file
diff --git a/locales/Spanish/reports/uk/chromis/reports/productscatalog_messages_es.properties b/locales/Spanish/productscatalog_messages_es.properties
similarity index 89%
rename from locales/Spanish/reports/uk/chromis/reports/productscatalog_messages_es.properties
rename to locales/Spanish/productscatalog_messages_es.properties
index 188e349b..79c1c0a8 100644
--- a/locales/Spanish/reports/uk/chromis/reports/productscatalog_messages_es.properties
+++ b/locales/Spanish/productscatalog_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -18,7 +18,7 @@
label.name=Nombre
label.printed=Impreso
-label.price=Precio
+label.price=Precio Neto
label.pricetax=Precio+IVA
label.cost=Coste
label.ref=Ref.
diff --git a/locales/Spanish/reports/uk/chromis/reports/salebycustomer_messages_es.properties b/locales/Spanish/salebycustomer_messages_es.properties
similarity index 91%
rename from locales/Spanish/reports/uk/chromis/reports/salebycustomer_messages_es.properties
rename to locales/Spanish/salebycustomer_messages_es.properties
index 9c4d6bc9..99ab1231 100644
--- a/locales/Spanish/reports/uk/chromis/reports/salebycustomer_messages_es.properties
+++ b/locales/Spanish/salebycustomer_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Spanish/reports/uk/chromis/reports/salecatalog_messages_es.properties b/locales/Spanish/salecatalog_messages_es.properties
similarity index 89%
rename from locales/Spanish/reports/uk/chromis/reports/salecatalog_messages_es.properties
rename to locales/Spanish/salecatalog_messages_es.properties
index d92d950c..e5ba7f28 100644
--- a/locales/Spanish/reports/uk/chromis/reports/salecatalog_messages_es.properties
+++ b/locales/Spanish/salecatalog_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Spanish/reports/uk/chromis/reports/saletaxes_messages_es.properties b/locales/Spanish/saletaxes_messages_es.properties
similarity index 86%
rename from locales/Spanish/reports/uk/chromis/reports/saletaxes_messages_es.properties
rename to locales/Spanish/saletaxes_messages_es.properties
index 3ed6b755..130f500b 100644
--- a/locales/Spanish/reports/uk/chromis/reports/saletaxes_messages_es.properties
+++ b/locales/Spanish/saletaxes_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -19,9 +19,9 @@
label.title=Impuestos de Ventas
label.printed=Impreso
label.period=Per\u00edodo
-label.taxname=Tipo Impuesto
+label.taxname=Tipo de Impuesto
label.ticket=Ticket No.
label.date=Fecha
label.paymenttype=Tipo de Pago
label.partialtotal=Total
-label.total=Gran Total
+label.total=Importe Total
diff --git a/locales/Spanish/stockchanges_messages_es.properties b/locales/Spanish/stockchanges_messages_es.properties
new file mode 100644
index 00000000..c308b010
--- /dev/null
+++ b/locales/Spanish/stockchanges_messages_es.properties
@@ -0,0 +1,25 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Cambios Inventario
+label.reference=Referencia
+label.barcode=C\u00f3digo de Barras
+label.name=Nombre
+label.csverror=Mensaje de Error
+label.row=Fila en Fichero
+
diff --git a/locales/Spanish/reports/uk/chromis/reports/taxcatsales_message_es.properties b/locales/Spanish/taxcatsales_message_es.properties
similarity index 91%
rename from locales/Spanish/reports/uk/chromis/reports/taxcatsales_message_es.properties
rename to locales/Spanish/taxcatsales_message_es.properties
index ca69774c..d67fa355 100644
--- a/locales/Spanish/reports/uk/chromis/reports/taxcatsales_message_es.properties
+++ b/locales/Spanish/taxcatsales_message_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Spanish/taxcatsales_messages_es.properties b/locales/Spanish/taxcatsales_messages_es.properties
new file mode 100644
index 00000000..6fba83bb
--- /dev/null
+++ b/locales/Spanish/taxcatsales_messages_es.properties
@@ -0,0 +1,25 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.title=Ventas por Impuesto y Categor\u00eda
+label.name=Categor\u00eda
+label.qty=Cant
+label.catsales=Ventas
+label.cattax=Impuesto
+label.cattotal=Total
+label.total=Importe Total
diff --git a/locales/Spanish/reports/uk/chromis/reports/taxes_messages_es.properties b/locales/Spanish/taxes_messages_es.properties
similarity index 91%
rename from locales/Spanish/reports/uk/chromis/reports/taxes_messages_es.properties
rename to locales/Spanish/taxes_messages_es.properties
index 805e3481..44ef566d 100644
--- a/locales/Spanish/reports/uk/chromis/reports/taxes_messages_es.properties
+++ b/locales/Spanish/taxes_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/Spanish/reports/uk/chromis/reports/timeseriesproduct_messages_es.properties b/locales/Spanish/timeseriesproduct_messages_es.properties
similarity index 90%
rename from locales/Spanish/reports/uk/chromis/reports/timeseriesproduct_messages_es.properties
rename to locales/Spanish/timeseriesproduct_messages_es.properties
index 7dd93bee..85870691 100644
--- a/locales/Spanish/reports/uk/chromis/reports/timeseriesproduct_messages_es.properties
+++ b/locales/Spanish/timeseriesproduct_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -24,7 +24,7 @@ label.prodpricebuy=Precio Compra
label.prodpricesell=Precio Venta
label.prodpriceselltax=Precio Venta + IVA
label.prodstockcost=Coste Stock por A\u00f1o
-label.prodstockvol=Volument Stock
+label.prodstockvol=Volumen Stock
label.taxcategory=Categor\u00eda de Impuesto
label.produnitsales=Ventas por D\u00eda
label.margin=Margen
diff --git a/locales/Spanish/reports/uk/chromis/reports/top10sales_messages_es.properties b/locales/Spanish/top10sales_messages_es.properties
similarity index 81%
rename from locales/Spanish/reports/uk/chromis/reports/top10sales_messages_es.properties
rename to locales/Spanish/top10sales_messages_es.properties
index 46d56bbd..0d643e9c 100644
--- a/locales/Spanish/reports/uk/chromis/reports/top10sales_messages_es.properties
+++ b/locales/Spanish/top10sales_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -21,3 +21,7 @@ label.printed=Impreso
label.period=Per\u00edodo:
label.units=Unidades
label.total=Total
+label.subtotal=Neto
+label.taxes=Impuestos
+label.pricebuy=Precio de Compra
+label.pricesell=Precio de Venta
\ No newline at end of file
diff --git a/locales/Spanish/reports/uk/chromis/reports/updatedprices_messages_es.properties b/locales/Spanish/updatedprices_messages_es.properties
similarity index 81%
rename from locales/Spanish/reports/uk/chromis/reports/updatedprices_messages_es.properties
rename to locales/Spanish/updatedprices_messages_es.properties
index 8025a6f5..a98f4baf 100644
--- a/locales/Spanish/reports/uk/chromis/reports/updatedprices_messages_es.properties
+++ b/locales/Spanish/updatedprices_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -22,6 +22,6 @@ label.reference=Referencia
label.barcode=C\u00f3digo de Barras
label.name=Nombre
label.pricebuy=Nuevo Precio de Compra
-label.pricesell=New Precio de Venta
-label.previousbuy=Antiguo Precio de Compra
-label.previoussell=Antiguo Precio de Venta
+label.pricesell=Nuevo Precio de Venta
+label.previousbuy=Precio de Compra Anterior
+label.previoussell=Precio de Venta Anterior
diff --git a/locales/Spanish/reports/uk/chromis/reports/usersales_messages_es.properties b/locales/Spanish/usersales_messages_es.properties
similarity index 91%
rename from locales/Spanish/reports/uk/chromis/reports/usersales_messages_es.properties
rename to locales/Spanish/usersales_messages_es.properties
index 3cfeef75..b78cf467 100644
--- a/locales/Spanish/reports/uk/chromis/reports/usersales_messages_es.properties
+++ b/locales/Spanish/usersales_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/beans_messages.properties b/locales/beans_messages.properties
index ffef6905..1ece5edb 100644
--- a/locales/beans_messages.properties
+++ b/locales/beans_messages.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/beans_messages_al_SQ.properties b/locales/beans_messages_al_SQ.properties
index 317f24f3..5e3ce1d0 100644
--- a/locales/beans_messages_al_SQ.properties
+++ b/locales/beans_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/beans_messages_ar.properties b/locales/beans_messages_ar.properties
index 13651a35..1428e05a 100644
--- a/locales/beans_messages_ar.properties
+++ b/locales/beans_messages_ar.properties
@@ -1,18 +1,24 @@
-# uniCenta oPOS -Touch Friendly Point Of Sale
-# Copyright (c) 2009-2010 uniCenta
-# This file is part of uniCenta oPOS
-# uniCenta oPOS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-# uniCenta oPOS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-# You should have received a copy of the GNU General Public License
-# along with uniCenta oPOS. If not, see .
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
-button.cancel=\u0627\u0644\u063a\u0627\u0621 \u0627\u0644\u0627\u0645\u0631
-button.ok=\u0645\u0648\u0627\u0641\u0642
+
+button.cancel=\u0625\u0644\u063a\u0627\u0621
+button.ok=\u0648\u0627\u0641\u0642
button.Today=\u0627\u0644\u064a\u0648\u0645
-title.calendar=\u062d\u062f\u062f \u0627\u0644\u064a\u0648\u0645
\ No newline at end of file
+title.calendar=\u062d\u062f\u062f \u0627\u0644\u062a\u0627\u0631\u064a\u062e
+Button.Today=\u0627\u0644\u064a\u0648\u0645
\ No newline at end of file
diff --git a/locales/beans_messages_de.properties b/locales/beans_messages_de.properties
index e8b99359..6588fd5a 100644
--- a/locales/beans_messages_de.properties
+++ b/locales/beans_messages_de.properties
@@ -1,22 +1,23 @@
-# Openbravo POS is a point of sales application designed for touch screens.
-# Copyright (C) 2008 Openbravo, S.L.
-# http://sourceforge.net/projects/
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
-# This program is free software; you can redistribute it and/or modify
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
-# This program is distributed in the hope that it will be useful,
+# Chromis POS is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
+# along with Chromis POS. If not, see .
# Translations by Sebastian Muszytowski S.Muszytowski@googlemail.com
+
+
Button.Today=Heute
button.ok=Ok
diff --git a/locales/beans_messages_en_US.properties b/locales/beans_messages_en_US.properties
index ffef6905..1ece5edb 100644
--- a/locales/beans_messages_en_US.properties
+++ b/locales/beans_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/beans_messages_es.properties b/locales/beans_messages_es.properties
index 11c47446..b31183b3 100644
--- a/locales/beans_messages_es.properties
+++ b/locales/beans_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -16,8 +16,6 @@
# You should have received a copy of the GNU General Public License
# along with Chromis POS. If not, see .
-
-
title.calendar=Seleccione una fecha
button.cancel=Cancelar
Button.Today=Hoy
diff --git a/locales/beans_messages_es_AR.properties b/locales/beans_messages_es_AR.properties
index ea72e89b..518d3e59 100644
--- a/locales/beans_messages_es_AR.properties
+++ b/locales/beans_messages_es_AR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/beans_messages_es_MX.properties b/locales/beans_messages_es_MX.properties
index ea72e89b..518d3e59 100644
--- a/locales/beans_messages_es_MX.properties
+++ b/locales/beans_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/beans_messages_et.properties b/locales/beans_messages_et.properties
index 324b63ea..a9518ac6 100644
--- a/locales/beans_messages_et.properties
+++ b/locales/beans_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/beans_messages_fr.properties b/locales/beans_messages_fr.properties
index 2dc29551..9e935d5d 100644
--- a/locales/beans_messages_fr.properties
+++ b/locales/beans_messages_fr.properties
@@ -1,21 +1,20 @@
-# Openbravo POS is a point of sales application designed for touch screens.
-# Copyright (C) 2007-2009 Openbravo, S.L.
-# http://sourceforge.net/projects/openbravopos
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
-# This file is part of Openbravo POS.
+# This file is part of chromis oPOS
#
-# Openbravo POS is free software: you can redistribute it and/or modify
+# Chromis POS is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
-# Openbravo POS is distributed in the hope that it will be useful,
+# Chromis POS is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with Openbravo POS. If not, see .
+# along with Chromis POS. If not, see .
Button.Today=Aujourd'hui
diff --git a/locales/Croatian/locales/beans_messages_hr.properties b/locales/beans_messages_hr.properties
similarity index 90%
rename from locales/Croatian/locales/beans_messages_hr.properties
rename to locales/beans_messages_hr.properties
index 40515676..5da2b0cc 100644
--- a/locales/Croatian/locales/beans_messages_hr.properties
+++ b/locales/beans_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/beans_messages_it.properties b/locales/beans_messages_it.properties
index 6a5ea9ac..7d1a212a 100644
--- a/locales/beans_messages_it.properties
+++ b/locales/beans_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/beans_messages_nl.properties b/locales/beans_messages_nl.properties
index a34ec785..66ac8dc9 100644
--- a/locales/beans_messages_nl.properties
+++ b/locales/beans_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/beans_messages_pt.properties b/locales/beans_messages_pt.properties
index f5c3ae82..daaf8bcb 100644
--- a/locales/beans_messages_pt.properties
+++ b/locales/beans_messages_pt.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/beans_messages_pt_BR.properties b/locales/beans_messages_pt_BR.properties
index 7dcbe726..00dc3be3 100644
--- a/locales/beans_messages_pt_BR.properties
+++ b/locales/beans_messages_pt_BR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/data_messages.properties b/locales/data_messages.properties
index ba8e0eb4..af1fce01 100644
--- a/locales/data_messages.properties
+++ b/locales/data_messages.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/data_messages_al_SQ.properties b/locales/data_messages_al_SQ.properties
index f3a12e6c..a03a8214 100644
--- a/locales/data_messages_al_SQ.properties
+++ b/locales/data_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/data_messages_ar.properties b/locales/data_messages_ar.properties
index e1860ffa..8c0aa748 100644
--- a/locales/data_messages_ar.properties
+++ b/locales/data_messages_ar.properties
@@ -1,85 +1,83 @@
-# uniCenta oPOS - Touch Friendly Point Of Sale
-# Copyright (c) 2009-2010 uniCenta
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
-# This file is part of uniCenta oPOS
+# This file is part of chromis oPOS
#
-# uniCenta oPOS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-# uniCenta oPOS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-# You should have received a copy of the GNU General Public License
-# along with uniCenta oPOS. If not, see .
-
-button.cancel=\u0627\u0644\u063a\u0627\u0621 \u0627\u0644\u0627\u0645\u0631
-button.information=\u0645\u0639\u0644\u0648\u0645\u0627\u062a
-button.ok=\u0645\u0648\u0627\u0641\u0642
-
-caption.sort=\u0641\u0631\u0632
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
-exception.iofile=\u062e\u0637\u0621 \u0641\u064a \u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u0644\u0641.
-exception.nocompare=Expected comparator for QBF.
-exception.nodataset=\u0645\u0635\u0641\u0648\u0641\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u063a\u064a\u0631 \u0645\u0639\u0631\u0641\u0629.
-exception.nofinishedfile=\u0627\u0644\u062c\u0645\u0644\u0629 \u063a\u064a\u0631 \u0643\u0627\u0645\u0644\u0629.
-exception.nodelete=\u0644\u0645 \u064a\u062a\u0645 \u062d\u0630\u0641 \u0627\u064a \u0633\u062c\u0644.
-exception.noinsert=\u0644\u0645 \u064a\u062a\u0645 \u0627\u0646\u0634\u0627\u0621 \u0627\u064a \u0633\u062c\u0644.
-exception.nonegativelimits=\u063a\u064a\u0631 \u0645\u0633\u0645\u0648\u062d \u0628\u0627\u0644\u062d\u062f\u0648\u062f \u0627\u0644\u0633\u0644\u0628\u064a\u0629.
-exception.noparamtype=\u0646\u0648\u0639 \u0627\u0644\u0645\u0639\u0637\u064a\u0627\u062a \u063a\u064a\u0631 \u0645\u0633\u0645\u0648\u062d \u0628\u0647\u0627.
-exception.noreadfile=\u062e\u0637\u0621 \u0641\u064a \u0642\u0631\u0627\u0621\u0629 \u062c\u0645\u0644\u0629 \u0627\u0644\u0645\u0641.
-exception.notnull=\u0644\u0627\u064a\u062c\u0628 \u0627\u0646 \u062a\u0643\u0648\u0646 \u0627\u0644\u0642\u064a\u0645\u0629 \u0641\u0627\u0631\u063a\u0629.
-exception.noupdate=\u0644\u0645 \u064a\u062a\u0645 \u062a\u062d\u062f\u064a\u062b \u0627\u064a \u0633\u062c\u0644.
-exception.noupdatecount=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u062a\u0639\u0631\u064a\u0641 \u0627\u0644\u062a\u062d\u062f\u064a\u062b.
-exception.outofbounds=\u062e\u0631\u0627\u062c \u0627\u0644\u062d\u062f\u0648\u062f.
-exception.parserconfig=\u062e\u0637\u0627\u0621 \u0641\u064a \u062a\u062d\u0644\u064a\u0644 \u0627\u0643 \u0627\u0645 \u0627\u0644 \u0627\u0644\u0631\u062c\u0627\u0621 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0627\u0644\u0645\u0634\u0631\u0641.
-exception.xmlfile=\u062e\u0637\u0627\u0621 \u0641\u064a \u0627\u0644\u062a\u062d\u0644\u064a\u0644 \u0645\u0644\u0641 \u0627\u0643\u0633 \u0627\u0645 \u0627\u0644 \u063a\u064a\u0631 \u0635\u062d\u064a\u062d.
-label.andby=\u0648\u0628\u0648\u0627\u0633\u0637\u0629
-label.casesensitive=\u062a\u062d\u0633\u0633 \u062d\u0627\u0644\u0629 \u0627\u0644\u0627\u062d\u0631\u0641
-label.findwhat=\u0628\u062d\u062b \u0639\u0646
+button.cancel=\u0625\u0644\u063a\u0627\u0621
+button.information=\u0645\u0639\u0644\u0648\u0645\u0627\u062a
+button.ok=\u0648\u0627\u0641\u0642
+caption.sort=\u062a\u0631\u062a\u064a\u0628
+exception.iofile=\u062e\u0637\u0623 \u0641\u064a \u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u0644\u0641.
+exception.nocompare=\u0627\u0644\u0645\u0642\u0627\u0631\u0646\u0629 \u0627\u0644\u0645\u062a\u0648\u0642\u0639\u0629 \u0644\u0644QBF.
+exception.nodataset=\u0645\u062c\u0645\u0648\u0639\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u063a\u064a\u0631 \u0645\u0639\u0631\u0641\u0629.
+exception.nofinishedfile=\u0645\u0644\u0641 \u0627\u0644\u062c\u0645\u0644 \u0644\u0645 \u064a\u0646\u062a\u0647.
+exception.nodelete=\u0644\u0627 \u0633\u062c\u0644\u0627\u062a \u0645\u062d\u0630\u0648\u0641\u0629.
+exception.noinsert=\u0644\u0627 \u0633\u062c\u0644\u0627\u062a \u0645\u0646\u0634\u0623\u0629.
+exception.nonegativelimits=\u0627\u0644\u062d\u062f\u0648\u062f \u0627\u0644\u0633\u0627\u0644\u0628\u0629 \u063a\u064a\u0631 \u0645\u0633\u0645\u0648\u062d \u0628\u0647\u0627.
+exception.noparamtype=\u0646\u0648\u0639 \u0645\u0639\u0644\u0645\u0629 \u063a\u064a\u0631 \u0645\u0633\u0645\u0648\u062d \u0628\u0647\u0627.
+exception.noreadfile=\u0645\u0644\u0641 \u0627\u0644\u062c\u0645\u0644 \u0642\u0631\u0627\u0621\u0629 \u062e\u0637\u0623.
+exception.notnull=\u064a\u062c\u0628 \u0623\u0646 \u062a\u0643\u0648\u0646 \u0627\u0644\u0642\u064a\u0645\u0629 \u063a\u064a\u0631 \u0641\u0627\u0631\u063a\u0629.
+exception.noupdate=\u0644\u0627 \u062a\u0648\u062c\u062f \u0633\u062c\u0644\u0627\u062a \u0645\u062d\u062f\u062b\u0629.
+exception.noupdatecount=\u062a\u062d\u062f\u064a\u062b \u0639\u062f\u062f \u063a\u064a\u0631 \u0645\u0639\u0631\u0641.
+exception.outofbounds=\u062e\u0627\u0631\u062c \u0627\u0644\u062d\u062f\u0648\u062f.
+exception.parserconfig=\u062e\u0637\u0623 \u0645\u062d\u0644\u0644 XML. \u064a\u0631\u062c\u0649 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0645\u062f\u064a\u0631 \u0627\u0644\u0628\u0631\u0646\u0627\u0645\u062c.
+exception.xmlfile=\u062e\u0637\u0623 \u0627\u0644\u062a\u062d\u0644\u064a\u0644. \u0645\u0644\u0641 XML \u063a\u064a\u0631 \u0635\u0627\u0644\u062d.
+label.andby=And by
+label.casesensitive=\u062a\u062d\u0633\u0633 \u062d\u0627\u0644\u0629 \u0627\u0644\u0623\u062d\u0631\u0641
+label.findwhat=\u0625\u064a\u062c\u0627\u062f \u0645\u0627\u0630\u0627
label.imagefiles=\u0645\u0644\u0641\u0627\u062a \u0627\u0644\u0635\u0648\u0631
-label.match=\u0645\u0637\u0627\u0628\u0642\u0629
-label.sortby=\u0641\u0631\u0632 \u0628\u0648\u0627\u0633\u0637\u0629
-label.where=\u0639\u0646\u062f\u0645\u0627 \u064a\u0643\u0648\u0646
-
-list.anypart=\u0627\u064a \u062c\u0632\u0621 \u0645\u0646 \u0627\u0644\u062d\u0642\u0644
-list.re=\u062a\u0639\u0628\u064a\u0631 \u0627\u0639\u062a\u064a\u0627\u062f\u064a
+label.match=\u062a\u0637\u0627\u0628\u0642
+label.sortby=\u062a\u0631\u062a\u064a\u0628 \u062d\u0633\u0628
+label.where=\u0623\u064a\u0646
+list.anypart=\u0623\u064a \u062c\u0632\u0621 \u0641\u064a \u0627\u0644\u062d\u0642\u0644
+list.re=\u062a\u0639\u0628\u064a\u0631 \u0645\u0639\u062a\u0627\u062f
list.startfield=\u0628\u062f\u0627\u064a\u0629 \u0627\u0644\u062d\u0642\u0644
-list.wholefield=\u0643\u0627\u0645\u0644 \u0627\u0644\u062d\u0642\u0644
-
-qbf.none=None
-qbf.null=Is null
-qbf.notnull=Is not null
-qbf.equals=Equals
-qbf.distinct=Distinct
-qbf.greater=Greater
-qbf.less=Less
-qbf.greaterequals=Greater or equal
-qbf.lessequals=Less or equals
-qbf.re=Wildcards
-
-message.changeslost=\u0633\u062a\u0641\u0642\u062f \u0627\u0644\u063a\u064a\u064a\u0631\u0627\u062a \u0639\u0644\u0649 \u062a\u0631\u064a\u062f \u0627\u0644\u0627\u0633\u062a\u0645\u0631\u0627\u0631
-message.nodelete=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u062a\u062d\u062f\u064a\u062f \u0627\u0644\u0633\u062c\u0644 \u0644\u0644\u0627\u0644\u063a\u0627\u0621
-message.nolistdata=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0644\u0639\u062b\u0648\u0631 \u0641\u064a \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a
-message.nomove=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0644\u062a\u062d\u0631\u0643 \u0627\u0644\u0649 \u0633\u062c\u0644 \u0627\u062e\u0631
-message.nonew=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0646\u0634\u0627\u0621 \u0633\u062c\u0644 \u062c\u062f\u064a\u062f
-message.norecord=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0627\u0644\u0633\u062c\u0644
-message.noreload=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0639\u0627\u062f\u0629 \u062a\u062d\u0645\u064a\u0644 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a
-message.nosave=\u0627\u0644\u0633\u062c\u0644 \u063a\u064a\u0631 \u0645\u062d\u0641\u0648\u0638
-message.nosort=\u062d\u0627\u0644\u0629 \u0627\u0644\u0641\u0631\u0632 \u0627\u0644\u0645\u062d\u062f\u062f\u0629 \u063a\u064a\u0631 \u0633\u0644\u064a\u0645\u0629
-message.resizeimage=\u0627\u0644\u0635\u0648\u0631\u0629 \u0627\u0644\u0645\u062d\u062f\u062f\u0629 \u0627\u0643\u0628\u0631 \u0645\u0646 \u062d\u062c\u0645 \u0627\u0644\u062d\u0642\u0644 \u0647\u0644 \u062a\u0631\u064a\u062f \u0627\u0639\u062f\u0627\u062f\u0629 \u062a\u062d\u062c\u064a\u0645 \u0627\u0644\u0635\u0648\u0631\u0629\u061f
-message.wannasave=\u0647\u0644 \u062a\u0631\u064a\u062f \u062d\u0641\u0638 \u0627\u0644\u062a\u0639\u062f\u064a\u0644\u0627\u062a \u0642\u0628\u0644 \u0627\u0644\u062e\u0631\u0648\u062c\u061f
-
-sgn.caution=Caution\:
-sgn.danger=Danger\:
-sgn.notice=Notice\:
-sgn.important=Important\:
-sgn.success=Success\:
-sgn.unknown=Unknown\:
-sgn.warning=Warning\:
-
-title.editor=\u0645\u062d\u0631\u0631 \u0627\u0644\u0631\u0633\u0627\u0644\u0629
-title.find=\u0628\u062d\u062b
-title.message=\u0631\u0633\u0627\u0644\u0629 \u0645\u062f\u064a\u0631 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a
\ No newline at end of file
+list.wholefield=\u0627\u0644\u062d\u0642\u0644 \u0628\u0627\u0644\u0643\u0627\u0645\u0644
+qbf.none=\u0644\u0627 \u0634\u064a\u0621
+qbf.null=\u0644\u0627\u063a
+qbf.notnull=\u0644\u064a\u0633 \u0644\u0627\u063a
+qbf.equals=\u062a\u0633\u0627\u0648\u064a
+qbf.distinct=\u0645\u062a\u0645\u064a\u0632
+qbf.greater=\u0623\u0643\u0628\u0631
+qbf.less=\u0623\u0642\u0644
+qbf.greaterequals=\u0623\u0643\u0628\u0631 \u0623\u0648 \u064a\u0633\u0627\u0648\u064a
+qbf.lessequals=\u0623\u0642\u0644 \u0623\u0648 \u064a\u0633\u0627\u0648\u064a
+qbf.re=\u0623\u062d\u0631\u0641 \u0628\u062f\u0644
+message.changeslost=\u0633\u062a\u0641\u0642\u062f \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a. \u0647\u0644 \u062a\u0631\u063a\u0628 \u0641\u064a \u0627\u0644\u0627\u0633\u062a\u0645\u0631\u0627\u0631\u061f?
+message.nodelete=\u064a\u062a\u0639\u0630\u0631 \u0648\u0636\u0639 \u0625\u0634\u0627\u0631\u0629 \u0644\u0644\u0633\u062c\u0644 \u0644\u0644\u062d\u0630\u0641.
+message.nolistdata=\u063a\u064a\u0631 \u0645\u062a\u0648\u0641\u0631 \u0641\u064a \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a.
+message.nomove=\u0644\u0627 \u064a\u0645\u0643\u0646 \u0627\u0644\u0627\u0646\u062a\u0642\u0627\u0644 \u0625\u0644\u0649 \u0633\u062c\u0644 \u0622\u062e\u0631.
+message.nonew=\u0644\u0627 \u064a\u0645\u0643\u0646 \u0625\u0646\u0634\u0627\u0621 \u0633\u062c\u0644 \u062c\u062f\u064a\u062f.
+message.norecord=\u0633\u062c\u0644 \u063a\u064a\u0631 \u0645\u0648\u062c\u0648\u062f.
+message.noreload=\u0644\u0627 \u064a\u0645\u0643\u0646 \u062a\u062d\u0645\u064a\u0644 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a.
+message.nosave=\u0644\u0645 \u064a\u062d\u0641\u0638 \u0627\u0644\u0633\u062c\u0644.
+message.nosort=\u0634\u0631\u0637 \u0627\u0644\u0641\u0631\u0632 \u0627\u0644\u0645\u062d\u062f\u062f \u063a\u064a\u0631 \u0635\u0627\u0644\u062d
+message.resizeimage=\u0627\u0644\u0635\u0648\u0631\u0629 \u0627\u0644\u0645\u062d\u062f\u062f\u0629 \u0623\u0643\u0628\u0631 \u0645\u0646 \u062d\u062c\u0645 \u062f\u0642\u0629 \u0647\u0630\u0627 \u0627\u0644\u062d\u0642\u0644. \u0647\u0644 \u062a\u0631\u064a\u062f \u062a\u063a\u064a\u064a\u0631 \u062d\u062c\u0645 \u0627\u0644\u0635\u0648\u0631\u0629\u061f?
+message.wannasave=\u0647\u0644 \u062a\u0631\u064a\u062f \u062d\u0641\u0638 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a \u0642\u0628\u0644 \u0627\u0644\u062e\u0631\u0648\u062c\u061f?
+sgn.caution=\u062a\u0646\u0628\u064a\u0647:
+sgn.danger=\u062e\u0637\u0631:
+sgn.notice=\u0644\u0627\u062d\u0638:
+sgn.important=\u0645\u0647\u0645:
+sgn.success=\u0646\u062c\u0627\u062d:
+sgn.unknown=\u063a\u064a\u0631 \u0645\u0639\u0631\u0648\u0641:
+sgn.warning=\u062a\u062d\u0630\u064a\u0631:
+title.editor=\u062a\u062d\u0631\u064a\u0631 \u0631\u0633\u0627\u0644\u0629
+title.find=\u0625\u064a\u062c\u0627\u062f
+title.message=\u0631\u0633\u0627\u0644\u0629 \u0645\u062f\u064a\u0631 \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a
+combo.year=\u0627\u0644\u0633\u0646\u0629
+combo.today=\u0627\u0644\u064a\u0648\u0645
+combo.month=\u0627\u0644\u0634\u0647\u0631
\ No newline at end of file
diff --git a/locales/data_messages_de.properties b/locales/data_messages_de.properties
index 6577ce40..950b196d 100644
--- a/locales/data_messages_de.properties
+++ b/locales/data_messages_de.properties
@@ -1,28 +1,27 @@
-# Openbravo POS is a point of sales application designed for touch screens.
-# Copyright (C) 2008 Openbravo, S.L.
-# http://sourceforge.net/projects/
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
-# This program is free software; you can redistribute it and/or modify
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
-# This program is distributed in the hope that it will be useful,
+# Chromis POS is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
+# along with Chromis POS. If not, see .
# Translations by Sebastian Muszytowski S.Muszytowski@googlemail.com
-exception.noupdatecount=Update Z\u00E4hler ist nicht definiert.
+exception.noupdatecount=Update Z\u00e4hler ist nicht definiert.
exception.nodataset=Datensatz ist undefiniert
-exception.nonegativelimits=Negative Zahlen sind nicht m\u00F6glich
+exception.nonegativelimits=Negative Zahlen sind nicht m\u00f6glich
exception.outofbounds=Ausserhalb Bereich
@@ -32,7 +31,7 @@ exception.nofinishedfile=Datei wurde nicht beendet
exception.notnull=Die Summe ist nicht null.
-exception.noparamtype=Parametertyp ist ung\u00FCltig.
+exception.noparamtype=Parametertyp ist ung\u00fcltig.
qbf.none=Nicht
@@ -44,17 +43,17 @@ qbf.equals=Gleich
qbf.distinct=Eindeutig
-qbf.greater=Gr\u00F6\u00DFer
+qbf.greater=Gr\u00f6\u00dfer
qbf.less=Kleiner
-qbf.greaterequals=Gr\u00F6\u00DFer oder Gleich
+qbf.greaterequals=Gr\u00f6\u00dfer oder Gleich
qbf.lessequals=Weniger oder Gleich
label.findwhat=Finde was
label.where=Wo
-label.match=\u00DCbereinstimmung
-label.casesensitive=Gro\u00DF und Kleinschreibung
+label.match=\u00dcbereinstimmung
+label.casesensitive=Gro\u00df und Kleinschreibung
button.ok=OK
button.cancel=Abbrechen
@@ -66,7 +65,7 @@ list.wholefield=Gesammte Feld
list.anypart=Irgendein ein Teil des Feldes
-list.re=Regul\u00E4rer Ausdruck
+list.re=Regul\u00e4rer Ausdruck
title.message=Datenbank Manager Nachricht
@@ -76,13 +75,13 @@ message.norecord=Datensatz nicht gefunden.
message.nolistdata=In Datenliste nicht gefunden.
-message.noreload=Neuladen der Datenliste nicht m\u00F6glich.
+message.noreload=Neuladen der Datenliste nicht m\u00f6glich.
message.nomove=Kann nicht zur anderen Datensatz wechseln.
message.nosave=Datensatz nicht gespeichert.
-message.nodelete=Kann Datensatz nicht zum l\u00F6schen Kennzeichnen.
+message.nodelete=Kann Datensatz nicht zum l\u00f6schen Kennzeichnen.
message.nonew=Kann keine neue Datensatz erstellen.
@@ -100,33 +99,33 @@ sgn.success=Erfolg\:
sgn.unknown=Unbekannt\:
-exception.nocompare=Erwarte Vergleich f\u00FCr QBF.
+exception.nocompare=Erwarte Vergleich f\u00fcr QBF.
-exception.nodelete=Keine Datensatz gel\u00F6scht.
+exception.nodelete=Keine Datensatz gel\u00f6scht.
exception.noupdate=Keine Datensatz erneuert.
-exception.noinsert=Keine Satensatz eingef\u00FCgt.
+exception.noinsert=Keine Satensatz eingef\u00fcgt.
-message.changeslost=\u00C4nderungen gehen Verloren,trotzdem fortfahren?
+message.changeslost=\u00c4nderungen gehen Verloren,trotzdem fortfahren?
title.editor=Nachricht des Editors
-message.wannasave=\u00C4nderungen vorm Verlassen Sichern?
+message.wannasave=\u00c4nderungen vorm Verlassen Sichern?
label.imagefiles=Bild Dateien
-message.resizeimage=Das ausgew\u00E4hlte Bild ist zu gro\u00DF. Soll es angepasst werden?
+message.resizeimage=Das ausgew\u00e4hlte Bild ist zu gro\u00df. Soll es angepasst werden?
-qbf.re=Regul\u00E4rer Ausdruck
+qbf.re=Regul\u00e4rer Ausdruck
label.sortby=Sortiert auf
label.andby=und auf
-message.nosort=Die Sortierkriterien sind Ung\u00FCltig!
+message.nosort=Die Sortierkriterien sind Ung\u00fcltig!
caption.sort=Sortieren
exception.iofile=Fehler beim lesen Datei
-exception.xmlfile=Analyse Fehler, XML Datei ung\u00FCltig
+exception.xmlfile=Analyse Fehler, XML Datei ung\u00fcltig
exception.parserconfig=XML Analisierer Fehler, Bitte dministrator kontaktieren
diff --git a/locales/data_messages_en_US.properties b/locales/data_messages_en_US.properties
index f3d69e1c..91fec705 100644
--- a/locales/data_messages_en_US.properties
+++ b/locales/data_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/data_messages_es.properties b/locales/data_messages_es.properties
index 435e702b..1b4a7071 100644
--- a/locales/data_messages_es.properties
+++ b/locales/data_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/data_messages_es_AR.properties b/locales/data_messages_es_AR.properties
index 0585835b..6e33c2b4 100644
--- a/locales/data_messages_es_AR.properties
+++ b/locales/data_messages_es_AR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/data_messages_es_MX.properties b/locales/data_messages_es_MX.properties
index 7ba61b05..23ae2c36 100644
--- a/locales/data_messages_es_MX.properties
+++ b/locales/data_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/data_messages_et.properties b/locales/data_messages_et.properties
index a7301b7f..eedb2848 100644
--- a/locales/data_messages_et.properties
+++ b/locales/data_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/data_messages_fr.properties b/locales/data_messages_fr.properties
index 4b0443c1..3a5a77b9 100644
--- a/locales/data_messages_fr.properties
+++ b/locales/data_messages_fr.properties
@@ -1,37 +1,36 @@
-# Openbravo POS is a point of sales application designed for touch screens.
-# Copyright (C) 2007-2009 Openbravo, S.L.
-# http://sourceforge.net/projects/openbravopos
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
-# This file is part of Openbravo POS.
+# This file is part of chromis oPOS
#
-# Openbravo POS is free software: you can redistribute it and/or modify
+# Chromis POS is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
-# Openbravo POS is distributed in the hope that it will be useful,
+# Chromis POS is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with Openbravo POS. If not, see .
+# along with Chromis POS. If not, see .
-exception.noupdatecount=Mise \u00E0 jour du compte non d\u00E9finie.
+exception.noupdatecount=Mise \u00e0 jour du compte non d\u00e9finie.
-exception.nodataset=Ensemble de donn\u00E9es non d\u00E9finis
+exception.nodataset=Ensemble de donn\u00e9es non d\u00e9finis
-exception.nonegativelimits=Limites n\u00E9gatives non autoris\u00E9es.
+exception.nonegativelimits=Limites n\u00e9gatives non autoris\u00e9es.
exception.outofbounds=Hors limites.
exception.noreadfile=Erreur de lecture du fichier.
-exception.nofinishedfile=Fichier non termin\u00E9.
+exception.nofinishedfile=Fichier non termin\u00e9.
-exception.notnull=La valeur doit \u00EAtre non null.
+exception.notnull=La valeur doit \u00eatre non null.
-exception.noparamtype=Type de param\u00E8tre non autoris\u00E9
+exception.noparamtype=Type de param\u00e8tre non autoris\u00e9
qbf.none=Aucun
@@ -43,15 +42,15 @@ qbf.equals=Egal
qbf.distinct=Distinct
-qbf.greater=Sup\u00E9rieur
+qbf.greater=Sup\u00e9rieur
-qbf.less=Inf\u00E9rieur
+qbf.less=Inf\u00e9rieur
-qbf.greaterequals=Sup\u00E9rieur ou \u00E9gal
+qbf.greaterequals=Sup\u00e9rieur ou \u00e9gal
-qbf.lessequals=Inf\u00E9rieur ou \u00E9gal
+qbf.lessequals=Inf\u00e9rieur ou \u00e9gal
label.findwhat=Rechercher
-label.where=O\u00F9
+label.where=O\u00f9
label.match=Correspond
label.casesensitive=Respecter la casse
button.ok=OK
@@ -59,29 +58,29 @@ button.cancel=Annuler
title.find=Chercher
-list.startfield=D\u00E9but du champ
+list.startfield=D\u00e9but du champ
list.wholefield=Champ complet
-list.anypart=N'importe o\u00F9 dans le champ
+list.anypart=N'importe o\u00f9 dans le champ
-list.re=Expression reguli\u00E8re
-title.message=Message gestionnaire base de donn\u00E9e
+list.re=Expression reguli\u00e8re
+title.message=Message gestionnaire base de donn\u00e9e
button.information=Information
message.norecord=Enregistrement introuvable.
-message.nolistdata=Introuvable dans les donn\u00E9es selectionn\u00E9es.
+message.nolistdata=Introuvable dans les donn\u00e9es selectionn\u00e9es.
-message.noreload=Impossible de recharger les donn\u00E9es.
+message.noreload=Impossible de recharger les donn\u00e9es.
-message.nomove=Impossible de passer \u00E0 l'autre enregistrement.
+message.nomove=Impossible de passer \u00e0 l'autre enregistrement.
-message.nosave=Enregistrement non sauvegard\u00E9
+message.nosave=Enregistrement non sauvegard\u00e9
message.nodelete=Impossible de marquer l'enregistrement pour la suppression.
-message.nonew=Impossible de cr\u00E9er un nouvel enregistrement
+message.nonew=Impossible de cr\u00e9er un nouvel enregistrement
sgn.danger=Danger\:
@@ -93,35 +92,35 @@ sgn.notice=Notification\:
sgn.important=Important\:
-sgn.success=Succ\u00E9s:
+sgn.success=Succ\u00e9s:
sgn.unknown=Inconnu\:
exception.nocompare=Comparateur attendu pour QBF.
-exception.nodelete=Pas d'enregistrements supprim\u00E9
+exception.nodelete=Pas d'enregistrements supprim\u00e9
-exception.noupdate=Pas d'enregistrements mis \u00E0 jour.
+exception.noupdate=Pas d'enregistrements mis \u00e0 jour.
-exception.noinsert=Pas d'enregistrements cr\u00E9es.
+exception.noinsert=Pas d'enregistrements cr\u00e9es.
message.changeslost=Les modifications seront perdues. Voulez-vous continuer ?
-title.editor=Message \u00E9diteur
+title.editor=Message \u00e9diteur
message.wannasave=Voulez-vous enregistrer les modifications avant de quitter ?
label.imagefiles=Fichiers images
-message.resizeimage=L'image selectionn\u00E9e est plus grande que la taille du champ. Voulez-vous redimensionner l'image ?
+message.resizeimage=L'image selectionn\u00e9e est plus grande que la taille du champ. Voulez-vous redimensionner l'image ?
-qbf.re=Expression reguli\u00E8re
+qbf.re=Expression reguli\u00e8re
label.sortby=Trier par
label.andby=Et par
-message.nosort=La condition de tri d\u00E9finie n'est pas valide
+message.nosort=La condition de tri d\u00e9finie n'est pas valide
caption.sort=Trier
diff --git a/locales/Croatian/locales/data_messages_hr.properties b/locales/data_messages_hr.properties
similarity index 97%
rename from locales/Croatian/locales/data_messages_hr.properties
rename to locales/data_messages_hr.properties
index 5cda2da0..1e22dc65 100644
--- a/locales/Croatian/locales/data_messages_hr.properties
+++ b/locales/data_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/data_messages_it.properties b/locales/data_messages_it.properties
index 35994394..41420386 100644
--- a/locales/data_messages_it.properties
+++ b/locales/data_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/data_messages_nl.properties b/locales/data_messages_nl.properties
index 58981f07..87b7fad4 100644
--- a/locales/data_messages_nl.properties
+++ b/locales/data_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/data_messages_pt.properties b/locales/data_messages_pt.properties
index 2a8c88e3..10a22aae 100644
--- a/locales/data_messages_pt.properties
+++ b/locales/data_messages_pt.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/data_messages_pt_BR.properties b/locales/data_messages_pt_BR.properties
index 6efd9729..e7e89d37 100644
--- a/locales/data_messages_pt_BR.properties
+++ b/locales/data_messages_pt_BR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/erp_messages.properties b/locales/erp_messages.properties
index 2917646d..f18eed9c 100644
--- a/locales/erp_messages.properties
+++ b/locales/erp_messages.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/erp_messages_al_SQ.properties b/locales/erp_messages_al_SQ.properties
index 0e04770b..7c2987f2 100644
--- a/locales/erp_messages_al_SQ.properties
+++ b/locales/erp_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/erp_messages_ar.properties b/locales/erp_messages_ar.properties
index 5a92173b..9d0599a1 100644
--- a/locales/erp_messages_ar.properties
+++ b/locales/erp_messages_ar.properties
@@ -1,43 +1,38 @@
-# uniCenta oPOS - Touch Friendly Point Of Sale
-# Copyright (c) 2009-2010 uniCenta
-# http://sourceforge.net/projects/unicentaopos
-# Copyright (c) 2007 openTrends Solucions i Sistemes, S.L
-# Modified by Openbravo SL on March 22, 2007
-# These modifications are copyright Openbravo SL
-# Author/s: A. Romero
-# You may contact Openbravo SL at: http://www.openbravo.com
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
-# This file is part of uniCenta oPOS.
+# This file is part of chromis oPOS
#
-# uniCenta oPOS is free software: you can redistribute it and/or modify
+# Chromis POS is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
-# uniCenta oPOS is distributed in the hope that it will be useful,
+# Chromis POS is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with uniCenta oPOS. If not, see .
+# along with Chromis POS. If not, see .
-label.configerp=\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u064a \u0627\u0631 \u0628\u064a
-label.erpurl=\u0631\u0627\u0628\u0637 \u0627\u0644\u062e\u062f\u0645\u0629
-label.erpid=\u0631\u0645\u0632 \u0627\u0644\u0645\u0624\u0633\u0633\u0629
-label.erporg=\u0631\u0642\u0645 \u0627\u0644\u0645\u0646\u0634\u0627\u0629
-label.erppos=\u0631\u0642\u0645 \u0646\u0642\u0637\u0629 \u0627\u0644\u0628\u064a\u0639
-label.erpuser=\u0627\u0633\u0645 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645
+
+label.configerp=\u062a\u0643\u0648\u064a\u0646 \u062a\u062e\u0637\u064a\u0637 \u0645\u0648\u0627\u0631\u062f \u0627\u0644\u0645\u0624\u0633\u0633\u0627\u062a
+label.erpurl=URL \u062e\u062f\u0645\u0627\u062a
+label.erpid=\u0643\u0648\u062f \u0627\u0644\u0645\u0646\u0634\u0623\u0629
+label.erporg=\u0631\u0645\u0632 \u0627\u0644\u0645\u0646\u0638\u0645\u0629
+label.erppos=\u0643\u0648\u062f \u0646\u0642\u0627\u0637 \u0627\u0644\u0628\u064a\u0639
+label.erpuser=\u0645\u0633\u062a\u062e\u062f\u0645
label.erppassword=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
-message.urlnotdefined=\u0644\u0645 \u064a\u062a\u0645 \u062a\u062d\u062f\u064a\u062f \u0631\u0627\u0628\u0637 \u062e\u062f\u0645\u0629 \u0627\u0644\u0645\u0632\u0627\u0645\u0646\u0629.
-message.syncordersok=\u062a\u0645 \u0628\u0646\u062c\u0627\u062d \u0627\u0645\u0631 \u0627\u0644\u0645\u0632\u0627\u0645\u0646\u0629.
-message.syncordersinfo={0} \u0627\u0648\u0645\u0627\u0631 \u062a\u0645\u062a \u0645\u0632\u0627\u0645\u0646\u062a\u0647\u0627.
-message.syncproductsok=\u062a\u0645\u062a \u0627\u0644\u0645\u0632\u0627\u0645\u0646\u0629 \u0628\u0646\u062c\u0627\u062d.
-message.syncproductsinfo={0} \u0645\u0646\u062a\u062c \u0645\u0632\u0627\u0645\u0646.\n{1} \u0639\u0645\u064a\u0644 \u0645\u0632\u0627\u0645\u0646.
-message.remoteexception=\u062e\u0637\u0627\u0621 \u0641\u064a \u0627\u0644\u0627\u062a\u0635\u0627\u0644.
-message.serviceexception=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0627\u0644\u062e\u062f\u0645\u0629.
-message.malformedurlexception=\u0631\u0627\u0628\u0637 \u0627\u0644\u062e\u062f\u0645\u0629 \u063a\u064a\u0631 \u0635\u062d\u064a\u062d.
-message.returnnull=\u0645\u0639\u0637\u064a\u0627\u062a \u0627\u0644\u0645\u0632\u0627\u0645\u0646\u0629 \u063a\u064a\u0631 \u0635\u062d\u064a\u062d\u0629.
-message.zeroproducts=\u0644\u0627\u062a\u0648\u062c\u062f \u0628\u064a\u0627\u0646\u0627\u062a \u0644\u0645\u0632\u0627\u0646\u062a\u0647\u0627.
-message.zeroorders=\u0644\u0627\u062a\u0648\u062c\u062f \u0627\u0648\u0627\u0645\u0631 \u0644\u0645\u0632\u0627\u0645\u0646\u062a\u0647\u0627.
-message.propsnotdefined=\u0645\u0635\u062f\u0631 \u062e\u0635\u0627\u0626\u0635 \u0627\u0644\u0645\u0632\u0627\u0645\u0646\u0629 "openbravo.properties" \u063a\u064a\u0631 \u0645\u0639\u0631\u0641.
\ No newline at end of file
+message.urlnotdefined=\u0644\u0645 \u064a\u062a\u0645 \u062a\u0639\u0631\u064a\u0641 URL \u062e\u062f\u0645\u0629 \u0627\u0644\u062a\u0632\u0627\u0645\u0646.
+message.syncordersok=\u0643\u0627\u0646 \u0623\u0648\u0627\u0645\u0631 \u0627\u0644\u062a\u0632\u0627\u0645\u0646 \u0646\u0627\u062c\u062d\u0629.
+message.syncordersinfo={0} \u0623\u0648\u0627\u0645\u0631 \u0645\u062a\u0632\u0627\u0645\u0646\u0629.
+message.syncproductsok=\u062a\u0645 \u062a\u0632\u0627\u0645\u0646 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u0628\u0646\u062c\u0627\u062d.
+message.syncproductsinfo={0} \u0645\u0646\u062a\u062c\u0627\u062a \u0645\u062a\u0632\u0627\u0645\u0646\u0629.\r\n{1} \u0645\u0632\u0627\u0645\u0646\u0629 \u0627\u0644\u0639\u0645\u0644\u0627\u0621.
+message.remoteexception=\u062e\u0637\u0623 \u0641\u064a \u0627\u0644\u0627\u062a\u0635\u0627\u0644.
+message.serviceexception=\u0644\u0627 \u064a\u0645\u0643\u0646 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0627\u0644\u062e\u062f\u0645\u0629.
+message.malformedurlexception=\u0639\u0646\u0648\u0627\u0646 URL \u062e\u062f\u0645\u0629 \u062e\u0627\u0637\u0626.
+message.returnnull=\u0645\u0639\u0644\u0645\u0627\u062a \u0645\u0632\u0627\u0645\u0646\u0629 \u062e\u0627\u0637\u0626\u0629.
+message.zeroproducts=\u0644\u0627 \u062a\u0648\u062c\u062f \u0628\u064a\u0627\u0646\u0627\u062a \u0644\u0644\u0645\u0632\u0627\u0645\u0646\u0629.
+message.zeroorders=\u0644\u0627 \u062a\u0648\u062c\u062f \u0623\u0648\u0627\u0645\u0631 \u0644\u0644\u0645\u0632\u0627\u0645\u0646\u0629.
+message.propsnotdefined=\u0644\u0645 \u064a\u062a\u0645 \u062a\u0639\u0631\u064a\u0641 \u062e\u0635\u0627\u0626\u0635 \u0645\u0648\u0627\u0631\u062f \u0627\u0644\u062a\u0632\u0627\u0645\u0646 \"chromispos.properties.
\ No newline at end of file
diff --git a/locales/erp_messages_de.properties b/locales/erp_messages_de.properties
index bd0f993b..25f923b6 100644
--- a/locales/erp_messages_de.properties
+++ b/locales/erp_messages_de.properties
@@ -1,27 +1,20 @@
-# Openbravo POS is a point of sales application designed for touch screens.
-# http://sourceforge.net/projects/
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
-# Copyright (c) 2007 openTrends Solucions i Sistemes, S.L
-# Modified by Openbravo SL on March 22, 2007
-# These modifications are copyright Openbravo SL
-# Author/s: A. Romero
-# You may contact Openbravo SL at: http://www.openbravo.com
+# This file is part of chromis oPOS
#
-# This program is free software; you can redistribute it and/or modify
+# Chromis POS is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
-# This program is distributed in the hope that it will be useful,
+# Chromis POS is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# Translations by Sebastian Muszytowski S.Muszytowski@googlemail.com
+# along with Chromis POS. If not, see .
label.configerp=ERP Konfiguration
@@ -59,4 +52,4 @@ message.zeroproducts=Es gibt keine Produkte zum Synchronisieren.
message.zeroorders=Es gibt keine Bestellungen zum Synchronisieren.
-message.propsnotdefined=Die Synchronisationsquelle "openbravo.properties" ist undefiniert.
+message.propsnotdefined=Die Synchronisationsquelle "chromis.properties" ist undefiniert.
diff --git a/locales/erp_messages_en_US.properties b/locales/erp_messages_en_US.properties
index 0e04770b..7c2987f2 100644
--- a/locales/erp_messages_en_US.properties
+++ b/locales/erp_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/erp_messages_es.properties b/locales/erp_messages_es.properties
index fa8fcedf..c6ebf86e 100644
--- a/locales/erp_messages_es.properties
+++ b/locales/erp_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/erp_messages_es_AR.properties b/locales/erp_messages_es_AR.properties
index 47ea9d8f..e2152201 100644
--- a/locales/erp_messages_es_AR.properties
+++ b/locales/erp_messages_es_AR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/erp_messages_es_MX.properties b/locales/erp_messages_es_MX.properties
index 7ba52ed9..22927260 100644
--- a/locales/erp_messages_es_MX.properties
+++ b/locales/erp_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/erp_messages_fr.properties b/locales/erp_messages_fr.properties
index 8f2cf3b5..3463e6a8 100644
--- a/locales/erp_messages_fr.properties
+++ b/locales/erp_messages_fr.properties
@@ -1,27 +1,26 @@
-# Openbravo POS is a point of sales application designed for touch screens.
-# Copyright (C) 2007-2009 Openbravo, S.L.
-# http://sourceforge.net/projects/openbravopos
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
-# This file is part of Openbravo POS.
+# This file is part of chromis oPOS
#
-# Openbravo POS is free software: you can redistribute it and/or modify
+# Chromis POS is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
-# Openbravo POS is distributed in the hope that it will be useful,
+# Chromis POS is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with Openbravo POS. If not, see .
+# along with Chromis POS. If not, see .
label.configerp=Configuration ERP
label.erpurl=Services URL
-label.erpid=Code entit\u00E9
+label.erpid=Code entit\u00e9
label.erporg=Code organisation
@@ -31,26 +30,26 @@ label.erpuser=Utilisateur
label.erppassword=Mot de passe
-message.urlnotdefined=L'URL du service de synchronisation n'est pas d\u00E9finie.
+message.urlnotdefined=L'URL du service de synchronisation n'est pas d\u00e9finie.
-message.syncordersok=La synchronisation des commandes s'est bien deroul\u00E9e.
+message.syncordersok=La synchronisation des commandes s'est bien deroul\u00e9e.
-message.syncordersinfo={0} commandes synchronis\u00E9es.
+message.syncordersinfo={0} commandes synchronis\u00e9es.
-message.syncproductsok=La synchronisation des produits s'est bien deroul\u00E9e.
+message.syncproductsok=La synchronisation des produits s'est bien deroul\u00e9e.
-message.syncproductsinfo={0} produits synchronis\u00E9s.
+message.syncproductsinfo={0} produits synchronis\u00e9s.
message.remoteexception=Erreur de transmission.
message.serviceexception=Connexion au service impossible.
-message.malformedurlexception=L'URL du service est erron\u00E9e.
+message.malformedurlexception=L'URL du service est erron\u00e9e.
-message.returnnull=Les parametres de synchronisation sont erron\u00E9s.
+message.returnnull=Les parametres de synchronisation sont erron\u00e9s.
-message.zeroproducts=Pas de produits \u00E0\u00A0synchroniser.
+message.zeroproducts=Pas de produits \u00e0\u00a0synchroniser.
-message.zeroorders=Pas de commandes \u00E0\u00A0synchroniser.
+message.zeroorders=Pas de commandes \u00e0\u00a0synchroniser.
-message.propsnotdefined=La ressource pour les propri\u00E9t\u00E9s de synchronisation "openbravo.properties" n'est pas d\u00E9finie.
+message.propsnotdefined=La ressource pour les propri\u00e9t\u00e9s de synchronisation "chromis.properties" n'est pas d\u00e9finie.
diff --git a/locales/Croatian/locales/erp_messages_hr.properties b/locales/erp_messages_hr.properties
similarity index 95%
rename from locales/Croatian/locales/erp_messages_hr.properties
rename to locales/erp_messages_hr.properties
index db8ba4f0..584a6714 100644
--- a/locales/Croatian/locales/erp_messages_hr.properties
+++ b/locales/erp_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/erp_messages_it.properties b/locales/erp_messages_it.properties
index 714046ce..26a98376 100644
--- a/locales/erp_messages_it.properties
+++ b/locales/erp_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/erp_messages_nl.properties b/locales/erp_messages_nl.properties
index 2a08d194..58c11904 100644
--- a/locales/erp_messages_nl.properties
+++ b/locales/erp_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/erp_messages_pt.properties b/locales/erp_messages_pt.properties
index 8ed258e3..9a617202 100644
--- a/locales/erp_messages_pt.properties
+++ b/locales/erp_messages_pt.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/erp_messages_pt_BR.properties b/locales/erp_messages_pt_BR.properties
index 86de340a..2b5de28e 100644
--- a/locales/erp_messages_pt_BR.properties
+++ b/locales/erp_messages_pt_BR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
diff --git a/locales/permissions_messages.properties b/locales/permissions_messages.properties
index f7308bb8..841fb93f 100644
--- a/locales/permissions_messages.properties
+++ b/locales/permissions_messages.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis
+# Copyright (c) (c) 2015-2016 2016 Chromis
#
# This file is part of chromis oPOS
#
@@ -28,7 +28,7 @@ label.sectionstock=Stock
label.sectionsalereports=Sales
label.sectionmaintenance=Maintenance
label.sectionpresence=Presence Management
-
+label.sectionsync=Synchronisation
label.displayname1=Sales Panel
label.description1=Allows the user access to the sales panel, this is required to sell items.
@@ -199,9 +199,7 @@ label.description83=Grants the user access to the Sales with Tax Summary Report.
label.displayname84=Product Time Series Report
label.description84=Grants the user access to the Sales with Product Time Series Report.
label.displayname85=Top 10 Sales Chart
-label.description85=Grants the user access to the Sales with Top 10 Sales Chart. (Will not work with MySQL database).
-label.displayname86=Top 10 Sales Chart
-label.description86=Grants the user access to the Sales with Top 10 Sales Chart (for MySQL).
+label.description85=Grants the user access to the Sales with Top 10 Sales Chart.
label.displayname87=System Maintenance
label.description87=Allows the user access to all the Maintenance options
label.displayname88=User Editor
@@ -270,23 +268,29 @@ label.displayname119=Accept Stock Changes
label.description119=Allows the user to audit and accept remote stock change requests.
label.displayname120=Stock Changes Report
label.description120=Allows the user to run the Stock Changes Audit Report.
-label.displayname121=Manage Promotions
-label.description121=Allows the user to manage promotions.
-label.displayname122=Promotions Report
-label.description122=Allows the user to run the promotions Report.
-
label.displayname121=Edit historic tickets
label.description121=Allows the user to edit historic tickets, in the current payment session.
-
-
-
-
-
-
-
-
-
-
-
-
-
+label.displayname122=Manage Promotions
+label.description122=Allows the user to manage promotions.
+label.displayname123=Promotions Report
+label.description123=Allows the user to run the promotions Report.
+#label.displayname124=Supplier management
+#label.description124=Allows the user to add suppliers.
+label.displayname125=Recipes
+label.description125=Allows the user to access recipes panel.
+label.displayname126=Reset Pickup counter
+label.description126=Allows the user to reset the pickup counter back to 1.
+label.displayname127=Best Sellers
+label.description127=Allows the user to run the best sellers report.
+label.displayname128=Product Lists
+label.description128=Allows the user to manage product lists.
+label.displayname129=Allows Custom Payment type
+label.description129=Allows the user to usde custom type payments when completing sale.
+label.displayname130=Refund Custom Payment type
+label.description130=Allows the user to use custom type payments when refunding sale.
+label.displayname131=Database Synchronisation
+label.description131=Allows the user to synchronise the database with the central server.
+label.displayname132=Synchronisation Panel
+label.description132=Allows the user access to synchronise panel.
+label.displayname133=Unlock Tables
+label.description133=Allows the user to unlock all tables in restaurant mode if required.
\ No newline at end of file
diff --git a/locales/pos_messages.properties b/locales/pos_messages.properties
index 6eba5705..1bac0247 100644
--- a/locales/pos_messages.properties
+++ b/locales/pos_messages.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -16,46 +16,43 @@
# You should have received a copy of the GNU General Public License
# along with Chromis POS. If not, see .
-Button.takeaway=Eat-In
-Button.addclass=Add new entry
-Button.deleteclass=Delete entry
-Button.Cancel=
-Button.logoff=Logout
+
+Button.Bordercolour=Border Colour (Full Panel)
+Button.Cancel=Cancel
Button.Close=Exit
Button.CloseCash=Close Cash
-Button.DeleteTicket=
+Button.ColourChooser=Select Colour
+Button.DeleteTicket=Delete
Button.ExecuteChart=Execute
Button.ExecuteReport=Run Report
Button.Exit=Exit
Button.Factory=Restore
-Button.NewTicket=New Ticket\u000a
+Button.NewTicket=New Ticket
+
+Button.No=No, Thanks
+Button.Yes=Yes, I am sure
Button.OK=OK
Button.PrintCash=Print
Button.Restore=Update db
Button.Save=Save
Button.Test=Test
-Button.newcustomer=Cancel
Button.UpdateProduct=Update
+Button.addclass=Add new entry
+Button.deleteclass=Delete entry
+Button.logoff=Logout
Button.newcustomer=Cancel
-Button.Bordercolour =Border Colour (Full Panel)
-Button.ColourChooser=Select Colour
-Button.NoPermissionsYes=Yes, I am sure
-Button.NoPermissionsNo=No, Thanks
-Message.adminpermissions1=You have removed all permissions for
-Message.adminpermissions2= . Are you sure that is what you intended?
-Message.adminwarning=Warning !!
+Button.takeaway=Eat-In
+Button.Retry=Retry
+Button.Configuration=Check Configuration
+
+
Database.ScriptError=Script Error
Database.ScriptWarning=Script Warning
Display.Null=Display not available
Display.Screen=Screen Display
Display.Window=Display
-label.removeentryfor=Remove entry for
-label.selectclass=Select classname
-label.addnewentry=Add new class entry
-label.entryclassname=New Classname
-label.entrydescription=Description of entry
-label.entrydisplayname=Displayed name
-label.entrysection=Entry section
+
+
Label.Alias=Short Name
Label.AlwaysAvailable=Always available
Label.Cash=Cash
@@ -70,11 +67,12 @@ Label.DbURL=URL
Label.DbUser=User
Label.EndDate=End Date
Label.InputCash=Given
+Label.List=List
Label.LoadError=Load Error
Label.MachineDisplay=Customer Display
Label.MachineName=Name
Label.MachinePrinter=Printer
-Label.MachinePrinter2=Printer 2
+Label.MachinePrinter2=Printer 2.
Label.MachinePrinter3=Printer 3
Label.MachinePrinter4=Printer 4
Label.MachinePrinter5=Printer 5
@@ -87,17 +85,12 @@ Label.StartDate=Start Date
Label.Tickets=Transactions
Label.Ticketsbag=Tickets
Label.ValidFrom=Valid From
+Label.alias=Name
Label.ticketsetupexample=Example
Label.ticketsetupnumber=Receipt number min' length
Label.ticketsetupprefix=Receipt number prefix
-label.tablebuttons=Transparent Buttons
-label.cleardrawertable=Number of days to maintain cash drawer table data
-label.discounted=Can be discounted
-label.hidecategory=Hide Empty Categories
-label.hidezerostock=Hide 0 Stock Items
-label.refreshproductpanels=Refresh after Sale
-label.updatepricefromedit=Update price from line edit
-label.rightslevel=Permission Level
+
+
Menu.AttributeSets=Product Attribute Sets
Menu.AttributeUse=Product Attribute use
Menu.AttributeValues=Attribute values
@@ -105,6 +98,7 @@ Menu.Attributes=Product Attributes
Menu.Auxiliar=Auxiliary products
Menu.Backoffice=Administration
Menu.BarcodeSheet=Labels: Barcode
+Menu.BestSellers=Best Sellers
Menu.Breaks=Breaks
Menu.CSVImport=Import CSV File
Menu.CSVReset=Clear Import Database Log
@@ -120,13 +114,14 @@ Menu.CloseTPV=Close Cash
Menu.ClosedProducts=Product Sales: Product
Menu.ClosedProducts1=Product Sales: Product II
Menu.Closing=Cash Closed
+Menu.CreateCleanDB=Create Clean Database
Menu.Closing1=Cash Closed (Export)
Menu.Closing2=Cash Closed (Export)
Menu.Configuration=Configuration
Menu.Customers=Customers
-Menu.CustomersDebtors=Customer Debtors
Menu.Customers.Reports=Reports
Menu.CustomersBReport=Debtors (Card Style)
+Menu.CustomersDebtors=Customer Debtors
Menu.CustomersDiary=Customers Diary
Menu.CustomersExport=Customers List (Export)
Menu.CustomersList=Customers List
@@ -138,6 +133,7 @@ Menu.DailyScheduleReport=Daily Schedule
Menu.ERPOrders=ERP Order Synchronisation
Menu.ERPProducts=POS Synchronisation
Menu.Employees.Reports=Reports
+Menu.EmployeeTimeSheet=Employee Time Sheet
Menu.Exit=Logout
Menu.ExtendedByProducts=Product Sales: Customer
Menu.ExtendedCashRegisterLog=Transaction Log: Extended
@@ -160,6 +156,7 @@ Menu.Maintenance=Maintenance
Menu.Maintenance.ERP=Chromis ERP
Menu.Maintenance.POS=Point Of Sale
Menu.Maintenance.Reports=Reports
+Menu.Migration=Database Migration
Menu.MissingData=Missing Data or Bad Price in File
Menu.NewProducts=New Products Added
Menu.PaymentReport=Payments
@@ -168,18 +165,15 @@ Menu.PerformanceReport=Performance
Menu.PresenceManagement=Presence Management
Menu.Printer=Printers
Menu.ProductCatalog=Product Catalogue (List)
+Menu.ProductCategorySalesPieChart=Category Pie
Menu.ProductLabels=Product Labels
+Menu.ProductList=Product List
+Menu.ProductPacks=Product Packs
Menu.ProductSales=Product Sales
-Menu.ProductCategorySalesPieChart=Category Pie
Menu.Products=Products
-Menu.ProductList=Product List
Menu.ProductsWarehouse=Product Location
-Menu.ProductPacks=Product Packs
-Menu.StockChanges=Stock Changes
-Menu.StockChangesReport=Stock Changes Report
Menu.Promotions=Promotions
-Menu.PromotionsReport=Promotions Report
-
+Menu.Recipe=Recipes
Menu.ReportTaxes=Tax: Summary
Menu.Reports=Reports
Menu.Resetpickup=Reset pickup Counter
@@ -191,10 +185,12 @@ Menu.SaleTaxes=Tax: Sales
Menu.SalesByCustomer=Sales By Customer
Menu.SalesChart=Sales
Menu.SalesManagement=Sales
-Menu.SalesManagement.Reports=Reports
Menu.SalesManagement.Charts=Charts
+Menu.SalesManagement.Reports=Reports
Menu.SalesProfit=Product Sales: Profit
Menu.ShelfEdgeLabels=Labels: Shelf-Edge Labels
+Menu.StockChanges=Stock Changes
+Menu.StockChangesReport=Stock Changes Report
Menu.StockDiary=Stock Diary
Menu.StockManagement=Stock
Menu.StockManagement.Edit=Maintenance
@@ -202,8 +198,8 @@ Menu.StockManagement.Reports=Reports
Menu.StockMovement=Stock Movement
Menu.System=System
Menu.Tables=Tables
-Menu.TaxCategories=Tax Categories
Menu.TaxCatSales=Tax: Category Sales
+Menu.TaxCategories=Tax Categories
Menu.TaxCustCategories=Customer Tax Categories
Menu.Taxes=Taxes
Menu.ThirdParties=Suppliers
@@ -214,18 +210,30 @@ Menu.TicketRefund=Refunds
Menu.TimeSeriesProduct=Product Time Series
Menu.Tools=Tools
Menu.Top10Sales=Top 10 Sales
-Menu.Update= Manual Database Update
-Menu.UpdatedPrices= Price Changes
+Menu.Update=Manual Database Update
+Menu.UpdatedPrices=Price Changes
Menu.UserSells=Sales by User
Menu.Users=Users
Menu.UsersReport=Users
Menu.Utilities=Utilities
Menu.UtilityOptions=Utilities Options
+Message.adminpermissions1=You have removed all permissions for
+Message.adminpermissions2=. Are you sure that is what you intended?
+Message.adminwarning=Warning !!
+Message.rightslevel=Rights level out range (0 - 9 are permitted values).
+message.customerdiscount=Customer gets a discount. Do you want to apply this to existing ticket lines?
+message.customerdiscountapplied=Warning!! Customer discounts have already been applied to this ticket and cannot be removed. You may want to start a new ticket.
+
+
+
Printer.Null=Printer Not Available
Printer.Screen=Screen Printer
Printer.Serial=Ticket Printer
+
+
Visor.Title=Chromis POS
+
button.Discount=Discount
button.ExecuteChart=Execute Chart
button.NewTicket=New
@@ -261,23 +269,33 @@ button.setperson=Waiter
button.tables=Tables
button.test=TEST
button.totaldiscount=Total Disc'
+
+
caption.split=Split Receipt
caption.tickets=Tickets
caption.upload=Upload Product List
+
+
database.ScriptError=Cannot execute the database creation script.
database.ScriptNotFound=Unable to find Updater.sql script.
database.ScriptWarning=Creation Script did not run successfully.
database.UnableToConnect=Unable to connect with database! Check database setting in configuration
database.UpdaterWarning=Cannot execute the database updater script.
datebase.ResetPickup=Cannot execute pickup reset
+
+
exception.unavailabledataset=Dataset not available
exception.unavailablefield=Field not defined: {0}
exception.unavailablefields=Fields not available
+
+
filter.dbdriverlib=Driver library (*.jar,*.zip)
form.customertitle=Customer List
form.productslist=Product List
form.selectprintertitle=Select Printer
form.tickettitle=Ticket List
+
+
label.CatalogueNo=Excluded
label.CatalogueStatus=In Catalogue?
label.CatalogueStatusNo=Not In Catalogue
@@ -286,12 +304,15 @@ label.CatalogueYes=Included
label.Closing1=Cash Closed: Export
label.Infopanel=Hide Footer Status Bar
label.LoadError=Error trying to show this functionality
-label.SCOnOff=Enable Service Charge
+label.Money=Money
+label.SCOnOff=Service Charge Enabled
label.SCRate=Service Charge Rate
-label.SCRestaurant=Restaurant mode only?
+label.SCRestaurant=In Restaurant mode only
label.SCZero=%
label.SChargepanel=Service Charge
label.Transactions=Transactions
+label.addcurrentstock=Create table data
+label.addnewentry=Add new class entry
label.address=Address Line 1
label.address2=Address Line 2
label.addsplitpayment=Add Split Payment
@@ -301,12 +322,12 @@ label.attributes=Attributes
label.attributeset=Attribute Set
label.autoloffrestaurant=In Restaurant Mode - return to tables
label.autolofftime=Auto LogOff after inactive time
+label.autologoff=Logoff After Each Sale
label.autologoffpanel=Auto LogOff
label.autologoffzero=Timer in seconds
label.autologonoff=Enable Auto LogOff
label.btndisplay=Button Display Text
label.bybarcode=By Barcode
-label.prodbarcodetype=Barcode Type
label.bycustomer=By Customer
label.bydates=By Date
label.byform=By Form
@@ -318,12 +339,17 @@ label.cardexpdate=Expiry Date
label.cardholder=Holder's Name
label.cardnumber=Card Number
label.cascade=Cascade
+label.casesensitive=Case sensitive
+label.cash=Cash
+label.categoryorder=Use categories number
+label.categoryordernumber=Category Order Number
label.catid=ID
label.catimage=Image
label.catname=Category
label.certificatepath=Secret Key
label.certificatepwd=Account ID
label.city=Town/City
+label.cleardrawertable=Number of days to maintain cash drawer table data
label.closeoptions=Close Options
label.commerceid=Commerce ID
label.commercepwd=Commerce P/wd
@@ -359,8 +385,10 @@ label.curdebt=Current Debt
label.currency=Currency
label.currencybutton=HidePayments text overlay
label.customer=Customer
+label.customerTotalSales=Total Sales
label.customer_export=Customer Export List
label.customer_list=Customer List
+label.customerscreen=Use ticket lines in display
label.custtaxcategory=Customer Tax Category
label.cvsbadcats=Bad Categories
label.cvsinvalid=Invalid Products
@@ -370,7 +398,9 @@ label.datestitle=Dates
label.datetime=Date Time
label.dbdriverlib=Driver Library
label.debt=Debt
+label.default=Disable Product PopUp
label.deletesplitpayment=Delete Split Payment
+label.discounted=Can be discounted
label.display=Display
label.double=Double
label.dutyid=ID
@@ -378,6 +408,10 @@ label.dutyname=Tax Name
label.dutyrate=Rate
label.editline=Edit Line
label.email=email
+label.entryclassname=New Classname
+label.entrydescription=Description of entry
+label.entrydisplayname=Displayed name
+label.entrysection=Entry section
label.epm.employee=Employee
label.epm.employee.id=Employee ID
label.epm.enddate=End Date
@@ -397,9 +431,14 @@ label.fontsizesmall=Font Size: small
label.fontweight=Bold Text
label.general=General
label.grossprofit=Gross Profit
+label.hidecategory=Hide Empty Categories
+label.hidezerostock=Hide 0 Stock Items
+label.iconcolour=Icon Colour
label.image=Image
+label.inactivity=Enable Inactivity Timer
label.inputamount=Input box above keypad
label.integer=Integer
+label.ispack=Is Pack
label.item=Item
label.item2=Description
label.javapos.drawer=Drawer
@@ -410,7 +449,9 @@ label.locale=Locale
label.location=Address
label.locationaddress=Address
label.locationid=ID
-label.locationname=Name
+label.locationname=Location Name
+label.logoffafterprinting=Logoff After Printing
+label.logoffaftersendtokitchen=Logoff After Sending To Kitchen
label.looknfeel=Skin
label.loyaltycardnumber=Card Number
label.loyaltyproducts=Loyalty details
@@ -418,21 +459,16 @@ label.machinedisplayconn=Mode
label.machinedisplayport=Port
label.machineprinterport=Port
label.magcardreader=Mag Card Reader
+label.managestock=Manage Stock Level
label.mandatory=Mandatory
label.margin=Margin
label.marine=Use Marina option
-label.maxdebt=Credit Limit
+label.maxdebt=Maximum Debt
+label.discount=Discount
label.maximum=Maximum
label.merchantcode=Merchant Code
label.minimum=Minimum
label.money=Total
-
-label.packsinstock=In stock
-label.packof= packs of
-label.packstosplit=Packs to split
-label.productinpack=Product in pack
-label.split=Split
-
label.mooringcreatebtn=Create Ticket
label.mooringscreatefor=Create ticket for
label.name=Name
@@ -441,6 +477,10 @@ label.notes=Notes
label.noticketstoclose=No Bills to Close
label.nullcategory=(No Category)
label.order=Order
+label.packof=packs of
+label.packsinstock=In stock
+label.packsof=Pack Size
+label.packstosplit=Packs to split
label.passwordnew=New Password
label.passwordold=Old Password
label.passwordrepeat=Repeat Password
@@ -470,18 +510,21 @@ label.pricewith00=Use 00 keypad button
label.printtokitchen=Print to Remote Printer
label.prodaux=Auxiliary (Modifier)?
label.prodbarcode=Barcode
+label.prodbarcodetype=Barcode Type
label.prodbuttonhtml=Sales screen Button HTML
label.prodcategory=Category
label.prodcost=Cost
label.proddefaultcategory=Default Cat'
label.prodgeneral=General
label.prodincatalog=Include Catalogue?
-label.prodminmax=Minimum and Maximum product levels are maintained in Product \u000aLocation along with Units sold
+label.prodminmax=Minimum and Maximum product levels are maintained in Product
+Location along with Units sold
label.prodname=Name
label.prodorder=Order in Catalogue
label.prodpricebuy=Buy Price
label.prodpricesell=Sell Price
label.prodpriceselltax=Sell Price + Tax
+label.prodproperties=Properties
label.prodref=Reference
label.prodscale=Scale
label.prodstock=Stock
@@ -490,7 +533,8 @@ label.prodstockmax=Maximum Level
label.prodstocksec=Minimum Level
label.prodstockvol=Stock Volume
label.prodtaxcode=Tax
-label.producthtmlguide=\u000a
You can customise the Sales screen Product buttons here. \u000aIf you have even a little HTML knowlege you're more than halfway there!
\u000a
Hover over the text to your right to see the HTML code for the effect you want on your Button
+label.producthtmlguide=
You can customise the Sales screen Product buttons here. If you have even a little HTML knowlege you're more than halfway there!
Hover over the text to your right to see the HTML code for the effect you want on your Button
+label.productinpack=Product in pack
label.productreceipt=Receipt Required for Warranty
label.produnits=Units
label.prodvaluebuy=Buy Value
@@ -502,14 +546,17 @@ label.receiptprinter=Receipt Printer
label.recorddeleted=(Record Deleted)
label.recordeof=(No Records)
label.recordnew=(New Record)
+label.refreshproductpanels=Refresh after Sale
label.refunds=Refunds
label.region=State/County
label.remainingcash=Remaining
+label.removeentryfor=Remove entry for
label.reportsprinter=Reports Printer
label.resetpickup=Reset Pickup Counter
label.resname=Resource
label.restaurantcustomer=Receiving Customer {0}. Select an empty table.
label.restaurantmove=Moving table {0}. Select another Table or the original Table
+label.rightslevel=Permission Level
label.role=Role
label.roletabldescription=Desc
label.roletableallowed=Allowed
@@ -522,14 +569,20 @@ label.scaleinput=Enter Weight
label.scanner=Scanner
label.search=Search
label.searchkey=Search Key
+label.selectclass=Select classname
label.sequence=Sequence
label.sha=SHA
+label.split=Split
label.splitpayment=Split Payment
label.startuplogo=Logo
label.startuppanel=Start Up Screen
label.startuptext=Text
+label.stockchangeadjust=Adjust value
+label.stockchangenewrecord=New record
+label.stockchangenewvalue=New value
+label.stockchangeset=Set value
label.stockdate=Date
-label.stockproduct=Product
+label.stockproduct=Reference
label.stockreason=Reason
label.stocktaker=Entered by
label.stockunits=In Stock
@@ -537,6 +590,7 @@ label.storename=URL
label.subcategorytitle=Display name in panel
label.subtotalcash=Subtotal
label.table=Table
+label.tablebuttons=Transparent Buttons
label.tabledisplayoptions=Table Display
label.tableshowcustomerdetails=Show Customer details on table
label.tableshowwaiterdetails=Show Waiter detail on table
@@ -551,31 +605,35 @@ label.terminal=Terminal
label.textclourtablename=Table Name text colour
label.textcolourcustomer=Customer text colour
label.textcolourwaiter=Waiter text colour
+label.texttip=Text Tip Message
label.ticketid=Ticket #
label.time=Time
+label.total=Total
label.totalcash=Total
+label.totaldiscount=Total Disc'
label.totalnet=Net
label.totaltax=Taxes
-label.totaldiscount=Total Disc'
label.type=Type
label.units=Units
label.units2=Quantity
+label.updatepricefromedit=Update price from line edit
label.uploadingproducts=Uploading Products. Please wait...
label.user=User
label.value=Value
label.value2=Price
label.variableprice=Variable Price Product
label.visible=Visible
-label.warehouse=Location
+label.warehouse=Description
+
-message.addnewentryerror=Only the description field can be left blank
message.BadPassword=Invalid Password. Please Retry
message.CannotMove=Unable to Move to Record
message.DBDefault=
The Default database shipped with Chromis POS is Apache Derby Embedded. It is intended for stand-alone, single-user, low-volume transaction installs only.
If you need multiple terminals to connect to a central database then select from the Database dropdown list above.
If you have selected an alternative database then you must ensure it is installed and configured correctly before trying to connect Chromis POS
More information can be found on the Chromis web site
+message.addnewentryerror=Only the description field can be left blank
message.at=at
message.breakoverandcheckedin='s Break is over and Checked In at
message.breakoverandcheckedout='s break is over and Checked Out at
-message.cannotcalculatetaxes=Unable to calculate Receipt taxes.\u000aOne or more Products Taxes is not configured properly
+message.cannotcalculatetaxes=Unable to calculate Receipt taxes.One or more Products Taxes is not configured properly
message.cannotchangepassword=Cannot change Password
message.cannotcheckin=Cannot Check In
message.cannotcheckout=Cannot Check Out
@@ -607,10 +665,8 @@ message.checkedout=has Checked Out at
message.closecashok=Cash Closed OK
message.configfactory=Are you sure you want to Restore Factory Values?
message.configrestore=Are you sure you want to Undo Changes?
-message.createdatabase=A working database cannot be detected. A default database will be created. Do you want to continue?
+message.createdatabase=A working database cannot be detected. A default database will be created.\n\nDo you want to continue?
message.createdatabasejl=New database information needs to be created for John L changes. This will now be done. Do you want to continue? If not, you will be unable to use the system.
-message.customerdebtexceded=Customer Credit Limit exceeded
-
message.customeradd=Add Customer to this Ticket?
message.customeraddnew=Complete Customer detail and Save to add to this Ticket?
message.customerassign=Assign Customer to this Ticket?
@@ -618,13 +674,15 @@ message.customerchange=Change Customer for this Ticket?
message.customerchangeyn=Are you sure you want to change Customer for this Ticket?
message.customercheck=Some text in the Search Key field is required
message.customerclear=Are you sure? Cancel will clear Customer from Ticket.
-
+message.customerdebtexceded=Customer Credit Limit exceeded
message.databaseconnectionerror=Unable to connect to database: Database not available
+message.databaseconnectsuccess=
You're Connected!
You're ready to migrate your existing Database
message.databasedrivererror=Unable to connect to database: Database driver not found
message.databasenotsupported=Database "{0}" not supported
message.databasesuccess=
You're Connected!
Restart Chromis POS to load your Database Connection
-message.databaseconnectsuccess=
You're Connected!
You're ready to migrate your existing Database
+message.deleteauxiliaryitem=Can not delete auxiliary item on its own Select main item then delete
message.deleteclass=Are you sure you wish to delete the class?
+message.invaliddobdate=Date of birth cannot be set the same as the System Date or after it
message.invalidenddate=End Date cannot be set before System or Start Date
message.invalidstartdate=Start Date cannot be before System Date
message.leavecontrol=is on leave. To check In: contact your Manager to Cancel leave
@@ -636,9 +694,8 @@ message.nigratemessage=Database Migration
message.nocard=User Card not found. Please Retry
message.nocardreader=Card Reader is not configured
message.nocustomer=Customer code does not exist
-message.nocustomernodebt=The Sale is not assigned to a Customer Account.\u000aIt cannot be put on Account
+message.nocustomernodebt=The Sale is not assigned to a Customer Account.It cannot be put on Account
message.nopaymentgateway=Payment Gateway is not configured
-message.novprice=
Variable-price Product! Enter price then Select Product
message.noprinters=No Printers installed
message.noproduct=This Product Code does not exist
message.nosaveticket=Unable to Save Sales Ticket
@@ -649,6 +706,7 @@ message.notexiststickettitle=Receipt Message
message.noticket=Receipt no longer exists
message.notpermissions=You are not allowed to Execute this task
message.noupdatescript=A database from another version has been detected. It is not possible to upgrade the database automatically. Chromis POS will exit now.
+message.novprice=
Variable-price Product! Enter price then Select Product
message.noweight=Weighing has not been possible
message.nullticket=You cannot create an empty ticket layaway! Please add something to this Sale
message.paymentcashneg=Make the Refund. Then press OK
@@ -667,20 +725,20 @@ message.preparescanner=Prepare the ScanPal scanner to upload the Product List th
message.printererror=Unable to print Receipt
message.probleminbreak=Error in break
message.productnotselected=No Product selected
-message.stockchangesactioned=Stock Changes Actioned
-
+message.refundable=No refundable items left on receipt
+message.refundauxiliaryitem=Can not refund auxiliary item on its own Select main item then
message.restartchanges=Configuration Saved successfully. Changes will be applied on next system Restart
message.scannerfail=Product List Upload failed
message.scannerfail2=Product List Download failed
message.scannerok=Product List Upload successful
message.startupText=Changing the content of the default Startup Text and not declaring that this is free software is in violation of the Free Software Foundation's GNU General Public License GPL
+message.stockchangesactioned=Stock Changes Actioned
message.systemclosecas=jCheckBox1
message.systemclosecash=Move Close Cash buttons
message.tableempty=Table is now empty
message.tablefull=Table is now full
message.title=Cash Register message
-message.updatedatabase=A database from a previous Chromis POS version has been detected. The database will be upgraded automatically. DATA MAY BE LOST. FIRST CREATE A BACKUP. Do you want to continue?
-message.updatedatabasejl=New database changes are required (John l changes). The database will be upgraded automatically. DATA MAY BE LOST. FIRST CREATE A BACKUP. Do you want to continue? If not, you will be unable to use the system.
+message.updatedatabase=A database from a previous Chromis POS version has been detected. The database will be upgraded automatically.\n\nDATA MAY BE LOST. CREATE A BACKUP FIRST.\n\nDo you want to continue?
message.wannaclosecash=Are you sure you want to Close Cash?
message.wannadelete=Are you sure you want to Delete the current Order?
message.wannasave=Save changes before exit?
@@ -690,7 +748,13 @@ migration.warning=Migration SQL Error
migration.warningjl=Create JL features not found
migration.warningnodefault=Create Database not found
migration.warningnofk=Drop Foreign Key not found
+message.retryorconfig=Failed to find a working database.\n\nThis may be caused by :\n - A communications failure.\n - A problem with the database server.\n - A configuration issue with this till\n
+message.updatefailure=Database failed to update. With the error above.\n\nThe application can not be started until this has been resolved.\n\n
+message.createfailure=Unable to create a database.\n\n
+
payment.title=Payment
+
+
resource.binary=Binary
resource.image=Image
resource.text=Text
@@ -698,22 +762,26 @@ rest.label.chairs=Chairs
rest.label.customer=Customer
rest.label.date=Booking
rest.label.notes=Notes
+
+
scale.invalidvalue=Scale invalid value
scale.notdefined=Scale not Defined
scale.weighitem=Weigh Item
-
stock.in.movement=(In) Movement
+stock.in.openpack=(In) Open Pack
stock.in.purchase=(In) Purchase
stock.in.refund=(In) Refund
+stock.in.stockchange=(In) Stock Change
+stock.in.recipes=(In) Recipe Item
stock.out.break=(Out) Breakage
stock.out.crossing=Crossing
stock.out.movement=(Out) Movement
+stock.out.openpack=(Out) Open Pack
stock.out.refund=(Out) Refund
stock.out.sale=(Out) Sale
-stock.in.openpack=(In) Open Pack
-stock.out.openpack=(Out) Open Pack
-stock.in.stockchange=(In) Stock Change
stock.out.stockchange=(Out) Stock Change
+stock.out.recipes=(Out) Recipe Item
+
tab.bank=Bank
tab.cash=Cash
@@ -724,6 +792,7 @@ tab.debt=Debt
tab.free=Free
tab.magcard=Card
tab.paper=Voucher
+tab.custom=Custom
title.CSVImport=Status
title.changepassword=Change Password
title.editor=Info' message
@@ -748,30 +817,149 @@ transpayment.magcard=Card
transpayment.magcardrefund=Card Refund
transpayment.paperin=Voucher - Redeemed
transpayment.paperout=Voucher - Bought
-label.cash=Cash
-label.Money=Money
-label.total=Total
-label.customerTotalSales=Total Sales
-Label.alias=Name
-Message.rightslevel=Rights level out range (0 - 9 are permitted values).
-label.stockchangeadjust=Adjust value
-label.stockchangenewvalue=New value
-label.stockchangenewrecord=New record
-label.stockchangeset=Set value
-label.packsof=Pack Size
-label.ispack=Is Pack
-label.prodproperties=Properties
-label.texttip=Text Tip Message
-label.default=Disable Product PopUp
-label.casesensitive=Case sensitive
-label.logoffafterprinting=Logoff After Printing
-label.logoffaftersendtokitchen=Logoff After Sending To Kitchen
-label.addcurrentstock=Create table data
-label.inactivity=Enable Inactivity Timer
-label.autologoff=Logoff After Each Sale
-label.customerscreen=Use Customer Screen
-message.refundable=No refundable items left on receipt
-message.deleteauxiliaryitem= Can not delete auxiliary item on its own \n Select main item then delete
-message.refundauxiliaryitem=Can not refund auxiliary item on its own \n Select main item then
-label.categoryordernumber=Category Order Number
-label.categoryorder=Use categories number
+transpayment.customin=Custom - Redeemed
+transpayment.customout=Custom - Bought
+label.layaway=Use PickUp Id for layaway tickets
+label.createonorder=Create on order only in restaurant mode
+label.createcat=Create category if not present
+label.salestaxexcluded=taxes excluded
+message.largechange=Please check amount tendered. Exceeded change limit.
+label.maxchange=Maximum change
+tiptext.openfolder=Open Folder
+tiptext.removepicture=Remove Picture
+tiptext.zoomin=Zoom In
+tiptext.zoomout=Zoom Out
+tiptext.addnew=Add New
+tiptext.delete=Delete
+tiptext.save=Save
+tiptext.clearkey=Clear Key
+tiptext.createkey=Create Key
+tiptext.customeraccount=Customer Account
+tiptext.payaccount=Pay Account
+tiptext.createkep=Create Key
+tiptext.executefilter=Execute Filter
+tiptext.clearfilter=Clear Filter
+tiptext.openclosemenu=Open/Close Menu
+tiptext.searchproductlist=Search Product List
+tiptext.getbarcode=Get Barcode
+tiptext.enterproductid=Edit Product
+tiptext.productattributes=Product Attributes
+tiptext.opencalendar=Open Calendar
+tiptext.scrollup=Scroll Up a Line
+tiptext.scrolldown=Scroll Down a Line
+tiptext.removeline=Remove Line
+tiptext.attributes=Attributes
+tiptext.downfrommobile=Download from Mobile Device
+tiptext.searchproduct=Search Product
+tiptext.opencustomers=Open Customers
+tiptext.addpartpayment=Add Part Payment
+tiptext.deletepartpayment=Delete Part Payment
+tiptext.printreceipt=Print Receipt
+tiptext.hideshowfilter=Hide/Show Filter
+tiptext.executereport=Execute Report
+tiptext.getcustomers=Get Customers
+tiptext.logout=Logout
+tiptext.gotocustomers=Go to Customers
+tiptext.findcustomers=Find Customers
+tiptext.splitsale=Split Sale
+tiptext.reprintlastticket=Reprint Last Ticket
+tiptext.productsearch=Product Search
+tiptext.editline=Edit Line
+tiptext.chooseattributes=Choose Attributes
+tiptext.scale=Scale
+tiptext.sendtokitchen=Send to Kichen Printer
+tiptext.refundanitem=Refund An Item
+tiptext.refundaline=Refund A Line
+tiptext.refundeverything=Refund Everything
+tiptext.searchtickets=Search Tickets
+tiptext.editcurrentticket=Edit current Ticket
+tiptext.receiptrefund=Receipt Refund
+tiptext.reprintreceipt=Reprint Receipt
+tiptext.enterreceiptandfind=Enter Receipt and touch to Find by Number
+tiptext.deletecurrent=Delete current Ticket
+tiptext.cancelaction=Cancel Action
+tiptext.splitall=Split All Line Items
+tiptext.splitoneitem=Split only one of the Line Items
+tiptext.unsplititem=Un-Split only one of the Line Items
+tiptext.unsplitall=Un-Split All Line Items
+tiptext.showcustomers=Show Customers
+tiptext.deletecurrentorder=Delete Current Order
+tiptext.movetable=Move Table
+tiptext.gototableplan=Go to Table Plan
+tiptext.openreservationsscreen=Open Reservations screen
+tiptext.reloadtabledata=Reload table information
+tiptext.prebooked=Receive pre-Booked Customer
+tiptext.newsale=New Sale
+tiptext.cancelsale=Cancel Sale
+tiptext.layaways=Layaways
+tiptext.deletecurrentsale=Delete current Sale
+tiptext.showsalesonly=Show Sales Only
+tiptext.showrefundsonly=Show Refunds Only
+button.layout=Enable Layout
+button.disablelayout=Disable Layout
+message.enablechange=Enable Max Change
+label.showlayways=Show layways on login
+label.allowlongnames=Allow long names in product panel
+label.enabletablepositions=Allow tables relocation
+label.autorefresh=Auto refresh tables
+label.layawaypopup=Automatically Open Layaways
+label.customerrorsounds=Custom Error sound
+message.createproduct=Product not found. Do you want to create a new product?
+label.discount=Discount
+label.dob=Date of Birth
+label.age=Age
+label.stocklevel=Stock level
+label.bystock=By Stock Level
+label.bystockatwarehouse=Stock by Location
+label.prodpricesellexcludingtax=Sell Price (excl')
+label.New=New Ticket
+label.importlist=Import
+label.exportlist=Export
+label.newlist=New
+label.deletelist=Delete List
+message.asklistname=Enter List Name
+message.nameexists=Name already exists
+message.confirmdeletelist=Are you sure you want to delete this list?
+label.syncservertype=Synchronisation Type
+label.syncstatus=Synchronisation Status
+label.syncstats=Synchronisation Stats
+label.syncprocess=Synchronisation Process
+button.activatesync=Run Sychronisation Process
+Menu.Sync=Synchronisation
+Menu.DatabaseSync=Database Synchronisation
+label.selectresource=Resource Name :
+button.restoreresource=Restore
+title.keep=Retain the following
+label.stockrecords=Current Stock Levels
+label.roles=User Roles
+label.resources=All Resources
+label.people=All User Details
+label.permissions=Database Permissions
+label.floorplans=Floor Plans
+label.locations=Location Details
+label.sitename=Store Name
+label.active=Site Active
+label.databaseconnection=Site Database
+label.centraldatabase=Central Database
+Menu.Sites=Sites
+message.tableopen=, currently has the table open and in use.
+message.tablelocked=Table Locked!
+Menu.UnlockAllTables= Unlock all tables
+Menu.Unlocktables=Release Table Locks
+label.unlocktables=Remove Table Locks
+label.tickettype=Ticket Type
+label.from=From
+transpayment.ticket=Ticket
+button.discount=Discount
+label.timeperiod=Period
+label.to=To
+label.prodtax=Tax
+label.timeframe=Date
+tab.ticket=Ticket
+display.Window=Display
+display.Null=Display not available
+button.discountticket=Discount Ticket
+display.Screen=Screen Display
+label.bystore=By Store details
+Button.deleteclassallsites=Delete entry from All Sites
+label.epm.name=Break Name
diff --git a/locales/pos_messages_al_SQ.properties b/locales/pos_messages_al_SQ.properties
index 1869ad68..fc4fe375 100644
--- a/locales/pos_messages_al_SQ.properties
+++ b/locales/pos_messages_al_SQ.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -16,7 +16,8 @@
# You should have received a copy of the GNU General Public License
# along with Chromis POS. If not, see .
-
+Button.Retry=Retry
+Button.Configuration=Configuration
button.memberdiscount=Member Disc
Button.Cancel=
button.catalogadd=Po
@@ -176,6 +177,7 @@ Label.DbPassword=Fjalkalimi
Label.DbURL=URL
Label.DbUser=Perdorues
label.debt=Borxh
+label.discount=Discount
label.double=Dyfish
label.dutyid=ID
label.dutyname=Emri i Tatimit
@@ -438,8 +440,8 @@ Menu.ExtendedSales=Shitjet e Vazhduara
Menu.Floors=Floors
-Menu.Import=CSV Import
-Menu.Import.Reports=CSV importo Raportin
+Menu.Import=Import
+Menu.Import.Reports=importo Raportin
Menu.InvalidData=Invalid or duplicate data found
Menu.Inventory=Stoku
Menu.Inventory2=Gjendja Aktuale
@@ -468,6 +470,8 @@ Menu.Products=Produktet
Menu.ProductSales=Shitja e Produkteve
Menu.ProductsWarehouse=Lokacioni i Produkteve
Menu.ProductPacks=Product Packs
+Menu.StockChanges=Stock Changes
+Menu.StockChangesReport=Stock Changes Report
Menu.Reports=Raportet
Menu.ReportTaxes=Permbledhja e Tatimeve
@@ -540,7 +544,7 @@ message.changeserver=Ndrysho Serveri eshte ne Zhvillimi
message.closecashok=Paraja u mbyll me sukses
message.configfactory=A jeni te sigurt se deshironi te riktheni vlerat fillestare?
message.configrestore=A jeni te sigurt se doni ta asgjesoni ndryshimin?
-message.createdatabase=Nuk mund te gjindet Baza funksionale, nje Baze e te dhenave standarde do te krijohet. A deshironi te vazhdoni?
+message.createdatabase=Nuk mund te gjindet Baza funksionale, nje Baze e te dhenave standarde do te krijohet.\n\nA deshironi te vazhdoni?
message.createdatabasejl=Informatat e reja per bazen e te dhenave duhet te krijohen. Kjo do te ndodh tani. A deshironi te vazhdoni? Nese jo, perdorimi i Sistemit do te jete e pamundur.
message.customerdebtexceded=Klienti ka mbikaluar limitin e lejuar te kreditit.
@@ -586,7 +590,7 @@ message.paymentrefundsnotsupported=Rimburesimi nuk mbeshtetet
message.preparescanner=Pergadit Skanerin ScanPal scanner per te ndarkuar listen e produkteve dhe shtyp OK
message.printererror=Nuk mund te shtypet Fatura
message.productnotselected=Ska produkt te selektuar
-
+message.stockchangesactioned=Stock Changes Actioned
message.restartchanges=Ndryshimi eshte ruajtur me sukses. Ndryshimet do te aplikohen pas ristartimit te sistemit
message.scannerfail=Ngarkimi i listes se produkteve deshtoj
@@ -599,8 +603,8 @@ message.tableempty=Table is now empty
message.tablefull=Table is now full
message.title=Cash Register message
-message.updatedatabase=A database from a previous version has been detected. The database will be upgraded automatically. DATA MAY BE LOST. FIRST CREATE A BACKUP. Do you want to continue?
-message.updatedatabasejl=New database changes are required (John l changes). The database will be upgraded automatically. DATA MAY BE LOST. FIRST CREATE A BACKUP. Do you want to continue? If not, you will be unable to use the system.
+message.updatedatabase=A database from a previous Chromis POS version has been detected. The database will be upgraded automatically.\n\nDATA MAY BE LOST. CREATE A BACKUP FIRST.\n\nDo you want to continue?
+
message.wannaclosecash=A jeni te sigurt se deshironi te mbyllni paran e gatshme?
message.wannadelete=A jeni te sigurt se deshironi te shlyeni porosin aktuale?
@@ -642,6 +646,9 @@ stock.out.refund=(Dalje) Kthim
stock.out.sale=(Dalje) Shitje
stock.in.openpack=(In) Open Pack
stock.out.openpack=(Out) Open Pack
+stock.in.stockchange=(In) Stock Change
+stock.out.stockchange=(Out) Stock Change
+
tab.bank=Bank
tab.cash=Para te gatshme
@@ -739,3 +746,13 @@ label.CatalogueStatusYes=Ne Katalog
label.CatalogueStatusNo=Nuk gjindet Katalog
label.Transactions=Transaksion
label.photo=Foto
+message.retryorconfig=Failed to find a working database.\n\nThis may be caused by :\n - A communications failure.\n - A problem with the database server.\n - A configuration issue with this till\n
+message.updatefailure=Database failed to update. With the error above.\n\nThe application can not be started until this has been resolved.\n\n
+message.createfailure=Unable to create a database.\n\n
+label.syncservertype=Synchronisation Type
+label.syncstatus=Synchronisation Status
+label.syncstats=Synchronisation Stats
+label.syncprocess=Synchronisation Process
+button.activatesync=Run Sychronisation Process
+Menu.Sync=Synchronisation
+Menu.DatabaseSync=Database Synchronisation
\ No newline at end of file
diff --git a/locales/pos_messages_ar.properties b/locales/pos_messages_ar.properties
index f766d667..f28e3e48 100644
--- a/locales/pos_messages_ar.properties
+++ b/locales/pos_messages_ar.properties
@@ -27,10 +27,10 @@ button.catalogadd=\u0627\u0636\u0627\u0641\u0629
button.catalogdel=\u0627\u0632\u0627\u0644\u0629
button.clean=\u0645\u0633\u062d
Button.Close=\u062e\u0631\u0648\u062c
-Button.CloseCash=\u0627\u063a\u0644\u0627\u0642 \u0627\u0644\u0635\u0646\u062f\u0648\u0642
+Button.CloseCash=\u0627\u063a\u0644\u0627\u0642 \u0627\u0644\u0643\u0627\u0634
button.Discount=\u062e\u0635\u0645
Button.DeleteTicket=\u062d\u0630\u0641
-button.edit=\u062a\u062d\u0631\u064a\u0631
+button.edit=\u0645\u0631\u062a\u062c\u0639 \u0628\u064a\u0639
button.ExecuteChart=\u062a\u0646\u0641\u064a\u0630 \u0627\u0644\u0645\u062e\u0637\u0637
button.executefilter=\u062a\u0646\u0641\u064a\u0630 \u0627\u0644\u0641\u0631\u0632
Button.ExecuteReport=\u062a\u0646\u0641\u064a\u0630 \u0627\u0644\u062a\u0642\u0631\u064a\u0631
@@ -108,7 +108,7 @@ label.catimage=\u0627\u0644\u0635\u0648\u0631\u0629
label.catname=\u0627\u0644\u062a\u0635\u0646\u064a\u0641
label.certificatepwd=\u0643\u0644\u0645\u0629 \u0645\u0631\u0648\u0631 \u0645\u0648\u062b\u0642\u0629
label.certificatepath=\u0648\u062b\u064a\u0642\u0629
-Label.ChangeCash=\u062a\u063a\u064a\u064a\u0631
+Label.ChangeCash=\u0628\u0627\u0642\u064a \u0645\u0628\u0644\u063a
label.city=\u0628\u0644\u062f\u0629/\u0645\u062f\u064a\u0646\u0629
label.commerceid=\u0627\u0644\u0631\u0645\u0632 \u0627\u0644\u062a\u062c\u0627\u0631\u064a
label.commercepwd=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631 \u0627\u0644\u062a\u062c\u0627\u0631\u064a\u0629
@@ -131,6 +131,7 @@ Label.DbPassword=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
Label.DbURL=\u0631\u0627\u0628\u0637
Label.DbUser=\u0645\u0633\u062a\u062e\u062f\u0645
label.debt=\u0627\u064a\u062f\u0627\u0639
+label.discount=discount
label.double=\u0645\u0632\u062f\u0648\u062c
label.dutyid=\u0631\u0645\u0632
label.dutyname=\u0627\u0633\u0645 \u0627\u0644\u0636\u0631\u064a\u0628\u0629
@@ -147,7 +148,7 @@ label.floorid=\u0631\u0645\u0632
label.floorname=\u0637\u0627\u0628\u0642
label.image=\u0635\u0648\u0631\u0629
-Label.InputCash=\u0645\u0642\u062f\u0645
+Label.InputCash=\u062a\u0645 \u062f\u0641\u0639 \u0645\u0628\u0644\u063a
label.integer=\u0639\u062f\u062f \u0635\u062d\u064a\u062d
label.item=\u0635\u0646\u0641
@@ -279,7 +280,7 @@ label.ticketid=\u062a\u0630\u0643\u0631\u0629 #
Label.Tickets=\u0645\u062f\u0641\u0648\u0639\u0627\u062a
Label.Ticketsbag=\u062a\u0630\u0627\u0643\u0631
label.time=\u0648\u0642\u062a
-label.totalcash=\u0627\u062c\u0645\u0627\u0644\u064a
+label.totalcash=\u0627\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u0643\u0627\u0634
label.totaldiscount=\u0627\u062c\u0645\u0627\u0644\u064a \u0627\u0644\u062e\u0635\u0645'
label.type=\u0646\u0648\u0639
@@ -300,15 +301,16 @@ Menu.Auxiliar=\u0627\u0644\u0645\u0646\u062a\u062c\u0627\u062a \u0627\u0644\u064
Menu.Backoffice=\u0627\u0644\u0627\u062f\u0627\u0631\u0629
-Menu.CashFlow=\u062a\u062f\u0641\u0642 \u0627\u0644\u0646\u0642\u062f\u064a\u0629
+Menu.CashFlow=\u062a\u062f\u0641\u0642 \u0627\u0644\u0646\u0642\u062f
Menu.CashRegisterLog=\u0633\u062c\u0644 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a
-Menu.CategorySales=\u062a\u0635\u0646\u064a\u0641 \u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a
+Menu.CategorySales=\u0643\u0634\u0641 \u0627\u0644\u0645\u062c\u0645\u0648\u0639\u0627\u062a
Menu.Catalog=\u0643\u0627\u062a\u0644\u0648\u062c
Menu.Categories=\u062a\u0635\u0646\u064a\u0641\u0627\u062a
Menu.CategoryProductSalesChart=\u0642\u0648\u0627\u0626\u0645 \u062a\u0635\u0646\u064a\u0641 \u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a
Menu.ChangePassword=\u062a\u063a\u064a\u064a\u0631 \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
Menu.ClosedProducts=\u0645\u0628\u064a\u0639\u0627\u062a \u0645\u0646\u062a\u062c
-Menu.CloseTPV=\u0627\u063a\u0644\u0627\u0642 \u0627\u0644\u0635\u0646\u062f\u0648\u0642
+Menu.ClosedProducts1= \u0643\u0634\u0641 \u0645\u0628\u064a\u0639\u0627\u062a1
+Menu.CloseTPV=\u0627\u063a\u0644\u0627\u0642 \u0627\u0644\u0643\u0627\u0634
Menu.Closing=\u0627\u0644\u0635\u0646\u062f\u0648\u0642 \u0645\u063a\u0644\u0642
Menu.Configuration=\u0627\u0639\u062f\u0627\u062f\u0627\u062a
Menu.Customers=\u0639\u0645\u0644\u0627\u0621
@@ -322,7 +324,7 @@ Menu.CustomersReport=\u0639\u0645\u0644\u0627\u0621
Menu.ERPOrders=\u0627\u0645\u0631 \u0645\u0632\u0627\u0645\u0646\u0629 \u0627\u064a \u0627\u0631 \u0628\u064a
Menu.ERPProducts=\u0645\u0632\u0627\u0645\u0629 \u0646\u0642\u0637\u0629 \u0627\u0644\u0628\u064a\u0639
Menu.Exit=\u062e\u0631\u0648\u062c
-Menu.ExtendedByProducts=\u0645\u0628\u064a\u0639\u0627\u062a \u0645\u0646\u062a\u062c \u0645\u0648\u0633\u0639
+Menu.ExtendedByProducts=\u0643\u0634\u0641 \u0645\u0628\u064a\u0639\u0627\u062a \u062a\u0641\u0635\u064a\u0644\u064a
Menu.ExtendedCashRegisterLog=\u0633\u062c\u0644 \u0627\u0644\u0639\u0645\u0644\u064a\u0627\u062a \u0645\u0648\u0633\u0639
Menu.ExtendedSales=\u0645\u0628\u064a\u0639\u0627\u062a \u0645\u0648\u0633\u0639
@@ -335,7 +337,7 @@ Menu.InventoryDiff=\u0627\u0644\u062c\u0631\u062f: \u0627\u0644\u0641\u0631\u064
Menu.InventoryDiffDetail=\u0627\u0644\u062c\u0631\u062f: \u062a\u0641\u0627\u0635\u064a\u0644 \u0627\u0644\u0641\u0631\u0648\u0642\u0627\u062a
Menu.InventoryListDetail=\u0627\u0644\u062c\u0631\u062f: \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u062a\u0641\u0627\u0635\u064a\u0644
-Menu.Locations=\u0627\u0644\u0645\u0648\u0627\u0642\u0639
+Menu.Locations=\u062a\u062d\u062f\u064a\u062f \u0643\u0645\u064a\u0629 \u0627\u0644\u0628\u0636\u0627\u0639\u0629
Menu.Main=\u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629
Menu.Maintenance=\u0635\u064a\u0627\u0646\u0629
@@ -349,7 +351,7 @@ Menu.Printer=\u0637\u0627\u0628\u0642\u0629
Menu.ProductLabels=\u0645\u0633\u0645\u064a\u0627\u062a \u0627\u0644\u0645\u0646\u062a\u062c
Menu.Products=\u0645\u0646\u062a\u062c\u0627\u062a
Menu.ProductSales=\u0645\u0628\u064a\u0639\u0627\u062a \u0645\u0646\u062a\u062c
-Menu.ProductsWarehouse=\u0645\u0648\u0642\u0639 \u0627\u0644\u0645\u0646\u062a\u062c
+Menu.ProductsWarehouse=\u062a\u062d\u062f\u064a\u062f \u0643\u0645\u064a\u0629 \u0627\u0644\u0628\u0636\u0627\u0639\u0629
Menu.Reports=\u062a\u0642\u0627\u0631\u064a\u0631
Menu.ReportTaxes=\u0645\u0644\u062e\u0635 \u0627\u0644\u0636\u0631\u0627\u0626\u0628
@@ -357,10 +359,10 @@ Menu.Resources=\u0645\u0635\u0627\u062f\u0631
Menu.Roles=\u0627\u062f\u0648\u0627\u0631
Menu.SalesByCustomer=\u0645\u0628\u064a\u0639\u0627\u062a \u0627\u0644\u0639\u0645\u0644\u0627\u0621
-Menu.SalesChart=\u0627\u0639\u0645\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a
+Menu.SalesChart=\u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a \u0628\u0631\u0633\u0645 \u0628\u064a\u0627\u0646\u064a
Menu.SalesManagement=\u0645\u0628\u064a\u0639\u0627\u062a
Menu.SalesManagement.Reports=\u062a\u0642\u0627\u0631\u064a\u0631
-Menu.SalesProfit=\u0627\u0631\u0628\u0627\u062d \u0645\u0628\u064a\u0639\u0627\u062a \u0627\u0644\u0645\u0646\u062a\u062c
+Menu.SalesProfit=\u062a\u0642\u0631\u064a\u0631 \u0627\u0644\u0623\u0631\u0628\u0627\u062d
Menu.SaleTaxes=\u0636\u0631\u0627\u0626\u0628 \u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a
Menu.StockDiary=\u064a\u0648\u0645\u064a\u0627\u062a \u0627\u0644\u062c\u0631\u062f
Menu.StockManagement=\u062c\u0631\u062f
@@ -376,7 +378,7 @@ Menu.TaxCategories=\u062a\u0635\u0646\u064a\u0641\u0627\u062a \u0627\u0644\u0636
Menu.ThirdParties=\u0627\u0644\u0645\u0648\u0631\u062f\u064a\u0646
Menu.ThirdPartiesManagement=\u0627\u062f\u0627\u0631\u0629 \u0627\u0644\u0645\u0648\u0631\u062f\u064a\u0646
Menu.Ticket=\u0645\u0628\u064a\u0639\u0627\u062a
-Menu.TicketEdit=\u062a\u062d\u0631\u064a\u0631 \u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a
+Menu.TicketEdit=\u062a\u0639\u062f\u064a\u0644 \u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a
Menu.TicketRefund=\u0645\u0631\u062a\u062c\u0639
Menu.Top10Sales=\u0627\u0639\u0644\u0649 \u0639\u0634\u0631\u0629 \u0645\u0628\u064a\u0639\u0627\u062a
@@ -410,10 +412,10 @@ message.cardnew=\u0633\u064a\u062a\u0645 \u062a\u063a\u064a\u064a\u0631 \u0642\u
message.cardremove=\u0642\u064a\u0645\u0629 \u0627\u0644\u0628\u0637\u0627\u0642\u0629 \u0627\u0644\u0627\u0626\u062a\u0645\u0627\u0646\u064a\u0629 \u0633\u062a\u062d\u0630\u0641 \u0647\u0644 \u0627\u0646\u062a \u0645\u062a\u0627\u0643\u062f
message.changepassworddistinct=\u062a\u0627\u0643\u064a\u062f \u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631
-message.closecashok=\u0627\u063a\u0644\u0627\u0642 \u0627\u0644\u0635\u0646\u062f\u0648\u0642 \u0646\u0627\u062c\u062d
+message.closecashok=\u062a\u0645 \u0625\u063a\u0644\u0627\u0642 \u0627\u0644\u0643\u0627\u0634 \u0648\u062a\u0635\u0641\u064a\u0631 \u0627\u0644\u0645\u0628\u064a\u0639\u0627\u062a
message.configfactory=\u0647\u0644 \u0627\u0646\u062a \u0645\u062a\u0627\u0643\u062f \u0645\u0646 \u0627\u0633\u062a\u0639\u0627\u062f\u0629 \u0627\u0639\u062f\u0627\u062f\u0627\u062a \u0627\u0644\u0645\u0635\u0646\u0639
message.configrestore=\u0647\u0644 \u0627\u0646\u062a \u0645\u062a\u0627\u0643\u062f \u0645\u0646 \u0639\u0645\u0644\u064a\u0629 \u0627\u0644\u062a\u0631\u0627\u062c\u0639 \u0639\u0646 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a
-message.createdatabase=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0635\u0627\u0644\u062d\u0629 \u0633\u064a\u062a\u0645 \u0627\u0646\u0634\u0627\u0621 \u0642\u0627\u0639\u062f\u0629 \u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629 \u0647\u0644 \u062a\u0631\u064a\u062f \u0627\u0644\u0627\u0633\u062a\u0645\u0631\u0627\u0631
+message.createdatabase=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0635\u0627\u0644\u062d\u0629 \u0633\u064a\u062a\u0645 \u0627\u0646\u0634\u0627\u0621 \u0642\u0627\u0639\u062f\u0629 \u0627\u0641\u062a\u0631\u0627\u0636\u064a\u0629\n\n\u0647\u0644 \u062a\u0631\u064a\u062f \u0627\u0644\u0627\u0633\u062a\u0645\u0631\u0627\u0631
message.customerdebtexceded=\u062a\u0645 \u062a\u062c\u0627\u0648\u0632 \u0627\u0644\u062d\u062f \u0627\u0644\u0627\u0626\u062a\u0645\u0627\u0646\u064a \u0644\u0644\u0639\u0645\u064a\u0644
message.databaseconnectionerror=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0627\u0644\u0627\u062a\u0635\u0627\u0644 \u0628\u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a - \u0642\u0627\u0639\u062f\u0629 \u0627\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u063a\u064a\u0631 \u0645\u062a\u0648\u0641\u0631\u0629
@@ -434,7 +436,7 @@ message.nosaveticket=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u
message.notactive=\u062e\u0637\u0627\u0621 \u0641\u064a \u062a\u062d\u0645\u064a\u0644 \u0627\u0644\u0644\u0648\u062d\u0629
message.notexiststicket=\u0627\u0644\u0641\u0627\u062a\u0648\u0631\u0629 \u063a\u064a\u0631 \u0645\u0648\u062c\u0648\u062f\u0629
message.noticket=\u0627\u0644\u0641\u0627\u062a\u0648\u0631\u0629 \u063a\u064a\u0631 \u0645\u0648\u062c\u0648\u062f\u0629 \u0645\u0637\u0644\u0642\u0627
-message.notpermissions=\u0627\u0646\u062a \u063a\u064a\u0631 \u0645\u0635\u0631\u062d \u0644\u0643 \u0644\u062a\u0646\u0641\u064a\u0630 \u0647\u0630\u0627 \u0627\u0644\u0627\u062c\u0631\u0627\u0621
+message.notpermissions=\u063a\u064a\u0631 \u0645\u0633\u0645\u0648\u062d
message.noupdatescript=\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0642\u062f\u064a\u0645\u0629 \u0644\u0643\u0646 \u0644\u0627\u064a\u0645\u0643\u0646 \u062a\u062d\u062f\u064a\u062b \u0627\u0644\u0649 \u0627\u0644\u0627\u0635\u062f\u0627\u0631 \u0627\u0644\u062c\u062f\u064a\u062f \u0633\u0648\u0641 \u064a\u062a\u0645 \u0627\u063a\u0644\u0627\u0642 \u0627\u0644\u0646\u0638\u0627\u0645 \u0627\u0644\u0627\u0646
message.noweight=\u0648\u0632\u0646 \u063a\u064a\u0631 \u0645\u0645\u0643\u0646
@@ -454,7 +456,7 @@ message.preparescanner=\u0642\u0645 \u0628\u062a\u062c\u0647\u064a\u0632 \u0627\
message.printererror=\u0644\u0645 \u064a\u062a\u0645\u0643\u0646 \u0645\u0646 \u0637\u0628\u0627\u0639\u0629 \u0627\u0644\u0641\u0627\u062a\u0648\u0631\u0629
message.productnotselected=\u0644\u0645 \u064a\u062a\u0645 \u062a\u062d\u062f\u064a\u062f \u0645\u0646\u062a\u062c
-message.restartchanges=\u062a\u0645 \u062d\u0641\u0638 \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u0628\u0646\u062c\u0627\u062d \u0633\u0648\u0641 \u062a\u0638\u0647\u0631 \u0627\u0644\u0646\u062a\u0627\u0626\u062c \u0628\u0639\u062f \u0627\u0639\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0628\u0631\u0646\u0627\u0645\u062c
+message.restartchanges=\u062a\u0645 \u062d\u0641\u0638 \u0627\u0644\u0627\u0639\u062f\u0627\u062f\u0627\u062a \u0628\u0646\u062c\u0627\u062d \u0633\u0648\u0641 \u062a\u0638\u0647\u0631 \u0627\u0644\u0646\u062a\u0627\u0626\u062c \u0628\u0639\u062f \u0627\u0639\u0627\u062f\u0629 \u062a\u0634\u063a\u064a\u0644 \u0627\u0644\u0628\u0631\u0646\u0627\u0645\u062c
message.scannerfail=P\u0641\u0634\u0644 \u062a\u062d\u0645\u064a\u0644 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u0646\u062a\u062c\u0627\u062a
message.scannerfail2=\u0641\u0634\u0644 \u062a\u0646\u0632\u064a\u0644 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u0645\u0646\u062a\u062c\u0627\u062a
@@ -464,10 +466,10 @@ message.tableempty=\u0627\u0644\u0637\u0627\u0648\u0644\u0629 \u0641\u0627\u0631
message.tablefull=\u0627\u0644\u0637\u0627\u0648\u0644\u0629 \u0645\u0645\u062a\u0644\u0626\u0629 \u0627\u0644\u0627\u0646
message.title=\u0631\u0633\u0627\u0644\u0629 \u0633\u062c\u0644 \u0627\u0644\u0646\u0642\u062f\u064a\u0629
-message.updatedatabase=\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0642\u062f\u064a\u0645\u0629 \u0648\u0633\u064a\u062a\u0645 \u0627\u0644\u062a\u062d\u062f\u064a\u062b \u062a\u0644\u0642\u0627\u0626\u064a\u0627 \u0642\u062f \u064a\u062d\u062f\u062b \u0641\u0642\u062f\u0627\u0646 \u0644\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u062a\u0627\u0643\u062f \u0645\u0646 \u0627\u0644\u0646\u0633\u062e\u0629 \u0627\u0644\u0627\u062d\u062a\u064a\u0627\u0637\u064a\u0629 \u0647\u0644 \u062a\u0631\u064a\u062f \u0627\u0644\u0627\u0633\u062a\u0645\u0631\u0627
+message.updatedatabase=\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0642\u0627\u0639\u062f\u0629 \u0628\u064a\u0627\u0646\u0627\u062a \u0642\u062f\u064a\u0645\u0629 \u0648\u0633\u064a\u062a\u0645 \u0627\u0644\u062a\u062d\u062f\u064a\u062b \u062a\u0644\u0642\u0627\u0626\u064a\u0627 \u0642\u062f \u064a\u062d\u062f\u062b \u0641\u0642\u062f\u0627\u0646 \u0644\u0644\u0628\u064a\u0627\u0646\u0627\u062a \u062a\u0627\u0643\u062f \u0645\u0646 \u0627\u0644\u0646\u0633\u062e\u0629 \u0627\u0644\u0627\u062d\u062a\u064a\u0627\u0637\u064a\u0629\n\n\u0647\u0644 \u062a\u0631\u064a\u062f \u0627\u0644\u0627\u0633\u062a\u0645\u0631\u0627
-message.wannaclosecash=\u0647\u0644 \u0627\u0646\u062a \u0645\u062a\u0627\u0643\u062f \u0627\u0646\u0643 \u062a\u0631\u064a\u062f \u0627\u063a\u0644\u0627\u0642 \u0627\u0644\u0635\u0646\u062f\u0648\u0642
-message.wannadelete=\u0647\u0644 \u0627\u0646\u062a \u0645\u062a\u0627\u0643\u062f \u0627\u0646\u0643 \u062a\u0631\u064a\u062f \u0627\u0644\u063a\u0627\u0621 \u0627\u0644\u0637\u0644\u0628 \u0627\u0644\u062d\u0627\u0644\u064a
+message.wannaclosecash=\u0647\u0644 \u0627\u0646\u062a \u0645\u062a\u0627\u0643\u062f \u0627\u0646\u0643 \u062a\u0631\u064a\u062f \u0627\u063a\u0644\u0627\u0642 \u0627\u0644\u0643\u0627\u0634\u061f\u061f
+message.wannadelete=\u0647\u0644 \u0627\u0646\u062a \u0645\u062a\u0627\u0643\u062f \u0627\u0646\u0643 \u062a\u0631\u064a\u062f \u0627\u0644\u063a\u0627\u0621 \u0627\u0644\u0637\u0644\u0628 \u0627\u0644\u062d\u0627\u0644\u064a\u061f\u061f
message.wannasave=\u062d\u0641\u0638 \u0627\u0644\u062a\u063a\u064a\u064a\u0631\u0627\u062a \u0642\u0628\u0644 \u0627\u0644\u062e\u0631\u0648\u062c
payment.title=\u0645\u062f\u0641\u0648\u0639\u0627\u062a
@@ -489,11 +491,11 @@ scale.notdefined=\u0627\u0644\u0642\u064a\u0633 \u063a\u064a\u0631 \u0645\u0639\
scale.invalidvalue=\u0642\u064a\u0627\u0633 \u0642\u064a\u0645\u0629 \u063a\u064a\u0631 \u0635\u062d\u064a\u062d\u0629
stock.in.movement=(\u062f\u0627\u062e\u0644) \u062d\u0631\u0643\u0629
-stock.in.purchase=(\u062f\u0627\u062e\u0644) \u0645\u0634\u062a\u0631\u0648\u0627\u062a
+stock.in.purchase=(\u062f\u0627\u062e\u0644) \u0645\u0634\u062a\u0631\u064a\u0627\u062a
stock.in.refund=(\u062f\u0627\u062e\u0644) \u0645\u0631\u062a\u062c\u0639
stock.out.break=(\u062e\u0627\u0631\u062c) \u0643\u0633\u0631
stock.out.crossing=\u062a\u0642\u0627\u0637\u0639
-stock.out.movement=(\u062e\u0627\u0631\u062c) \u062d\u0631\u0643\u0629
+stock.out.movement= \u0625\u062e\u0631\u0627\u062c
stock.out.refund=(\u062e\u0627\u0631\u062c) \u0645\u0631\u062c\u0639
stock.out.sale=(\u062e\u0627\u0631\u062c) \u0628\u064a\u0639
@@ -523,4 +525,27 @@ transpayment.paperout=\u0645\u0630\u0643\u0631\u0629 \u062e\u0631\u0648\u062c
transpayment.debt=\u0627\u064a\u062f\u0627\u0639
transpayment.debtpaid=\u0627\u064a\u062f\u0627\u0639 \u0645\u062f\u0641\u0648\u0639
-Visor.Title=\u0646\u0642\u0627\u0637 \u0628\u064a\u0639 \u064a\u0648\u0646\u064a \u0633\u0646\u062a\u0631\u0627
\ No newline at end of file
+Visor.Title=\u0646\u0642\u0627\u0637 \u0628\u064a\u0639 \u064a\u0648\u0646\u064a \u0633\u0646\u062a\u0631\u0627
+button.moorings=Moorings
+label.managestock=Manage Stock Level
+Label.List=List
+label.New=New Ticket
+label.importlist=Import
+label.exportlist=Export
+label.newlist=New
+label.deletelist=Delete List
+message.asklistname=Enter List Name
+message.nameexists=Name already exists
+message.confirmdeletelist=Are you sure you want to delete this list?
+Button.Retry=Retry
+Button.Configuration=Configuration
+message.retryorconfig=Failed to find a working database.\n\nThis may be caused by :\n - A communications failure.\n - A problem with the database server.\n - A configuration issue with this till\n
+message.updatefailure=Database failed to update. With the error above.\n\nThe application can not be started until this has been resolved.\n\n
+message.createfailure=Unable to create a database.\n\n
+label.syncservertype=Synchronisation Type
+label.syncstatus=Synchronisation Status
+label.syncstats=Synchronisation Stats
+label.syncprocess=Synchronisation Process
+button.activatesync=Run Sychronisation Process
+Menu.Sync=Synchronisation
+Menu.DatabaseSync=Database Synchronisation
\ No newline at end of file
diff --git a/locales/pos_messages_de.properties b/locales/pos_messages_de.properties
index ec912ea9..96d760e2 100644
--- a/locales/pos_messages_de.properties
+++ b/locales/pos_messages_de.properties
@@ -1,21 +1,20 @@
-# Openbravo POS is a point of sales application designed for touch screens.
-# Copyright (C) 2008 Openbravo, S.L.
-# http://sourceforge.net/projects/
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
-# This program is free software; you can redistribute it and/or modify
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
-# This program is distributed in the hope that it will be useful,
+# Chromis POS is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-#
+# along with Chromis POS. If not, see .
# Translations by Sebastian Muszytowski S.Muszytowski@googlemail.com
# Translations edited by Dennis Lorek dennis.lorek@cashregisterstore.de
@@ -208,6 +207,9 @@ Menu.Maintenance.POS=Kassensystem
Menu.Payments=Ein-/Auszahlungen
Menu.Printer=Drucker
Menu.Products=Produkte
+Menu.StockChanges=Stock Changes
+Menu.StockChangesReport=Stock Changes Report
+
Menu.Reports=Berichte
Menu.ReportTaxes=Steuern
Menu.Resources=Quellkode
@@ -249,7 +251,7 @@ message.changepassworddistinct=Das Kennwort stimmt nicht mit vorherigen Kennwort
message.closecashok=Die Kasse wurde geschlossen.
message.configfactory=Zur\u00fcck zu den Standardeinstellungen. Aktuelle Einstellungen werden gel\u00f6scht. Fortsetzen?
message.configrestore=Ver\u00e4nderte Einstellungen werden zur\u00fcckgesetzt. Fortsetzen?
-message.createdatabase=Datenbank nicht gefunden. Eine neue wurde erstellt. Fortsetzen?
+message.createdatabase=Datenbank nicht gefunden. Eine neue wurde erstellt.\n\nFortsetzen?
message.databaseconnectionerror=Datenbank ist nicht verf\u00fcgbar. Verbinden nicht m\u00f6glich.
message.databasedrivererror=Verbinden zur Datenbank nicht m\u00f6glich. Treiber fehlt!
message.databasenotsupported=Datenbank "{0}" wird nicht unterst\u00fctzt.
@@ -274,7 +276,7 @@ message.scannerfail=Der Produktscan schlug fehl.
message.scannerfail2=Der Produktdownload schlug fehl.
message.scannerok=Der Produktdownload war erfolgreich.
message.title=Kassenregister Meldung
-message.updatedatabase=Eine alte Datenbankversion wurde entdeckt.Die Datenbank wird Automatisch konvertiert. Die Daten gehen aber m\u00f6glicherweise verloren.Bitte machen Sie vorher ein Backup. M\u00f6chten Sie diesen Vorgang fortsetzen?
+message.updatedatabase=Eine alte Datenbankversion wurde entdeckt. Die Datenbank wird Automatisch konvertiert.\n\nDie Daten gehen aber m\u00f6glicherweise verloren.Bitte machen Sie vorher ein Backup.\n\nM\u00f6chten Sie diesen Vorgang fortsetzen?
message.wannaclosecash=Sind Sie sich sicher, dass sie die Kasse schlie\u00dfen wollen?
message.wannadelete=M\u00f6chten sie den Beleg wirklich l\u00f6schen?
payment.title=Bezahlung
@@ -296,6 +298,11 @@ stock.out.crossing=\u00dcbertragung
stock.out.movement=Aus Buchung
stock.out.refund=Aus Erstattung
stock.out.sale=Aus Verkauf
+stock.in.openpack=(In) Open Pack
+stock.out.openpack=(Out) Open Pack
+stock.in.stockchange=(In) Stock Change
+stock.out.stockchange=(Out) Stock Change
+
tab.cash=Bar
tab.cashrefund=R\u00fcckerstattung
tab.cheque=Scheck
@@ -318,7 +325,7 @@ transpayment.magcardrefund=Karten R\u00fcckerstattung
transpayment.paperin=Gutschein Eingabe
transpayment.paperout=Gutschein Ausgabe
transpayment.ticket=Rechnung
-Visor.Title=uniCenta oPOS
+Visor.Title=Chromis POS
message.paymentgatewayswipe=Bitte Karte einf\u00fchren und auf OK dr\u00fccken.
@@ -329,6 +336,7 @@ label.placeid=ID
message.noticket=Der Beleg existiert nicht mehr.
Menu.ProductsWarehouse=Produkte nach Lagerort
+Menu.ProductPacks=Product Packs
message.noproduct=Ein Produkt mit diesem Produktcode existiert nicht!
@@ -354,12 +362,14 @@ label.time=Zeit
label.datetime=Datum/Zeit
scale.notdefined=Menge ist undefiniert
scale.invalidvalue=Menge ung\u00fcltiger Wert
+scale.weighitem=Weigh Item
+
message.noweight=Die Bedeutung ist nicht m\u00f6glich.
label.scaleinput=Menge einf\u00fchren.
message.cannotloadticket=Kann Rechnung nicht laden.
message.notexiststicket=Der Beleg existiert nicht.
label.catimage=Bild
-message.noupdatescript=Eine \u00e4ltere Datenbankversion wurde entdeckt. Ein Konvertieren ist jedoch nicht m\u00f6glich! Openbravo POS schlie\u00dft nun.
+message.noupdatescript=Eine \u00e4ltere Datenbankversion wurde entdeckt. Ein Konvertieren ist jedoch nicht m\u00f6glich! Chromis POS schlie\u00dft nun.
label.visible=Sichtbar
label.name=Name
label.address=Adress Zeille 1
@@ -431,6 +441,7 @@ Menu.CustomersBReport=S\u00e4umige Kunden
Menu.Maintenance.Reports=Berichte
Menu.UsersReport=Nutzer
Menu.InventoryListDetail=Lager Details
+Menu.InventoryReOrder=Inventory: Re-Order
Menu.InventoryDiffDetail=Lager Details
message.mergetable=Tabellen zusammenf\u00fcgen
message.mergetablequestion=Sind Sie sicher bei Tabellen zusammenf\u00fcgen?
@@ -453,6 +464,13 @@ label.certificatepath=Zertifikat
label.properties=Eigenschaften
label.refunds=R\u00fcckerstattung
label.money=Total
+
+label.packsinstock=In stock
+label.packof= packs of
+label.packstosplit=Packs to split
+label.productinpack=Product in pack
+label.split=Split
+
label.search=Suchen
label.merchantcode=Kode merchant
label.sha=SHA
@@ -465,6 +483,8 @@ label.all=Alle
form.tickettitle=Rechnung Liste
form.selectprintertitle=W\u00e4hle Drucker
message.printererror=Der Rechnung kan nicht gedruckt werden
+message.stockchangesactioned=Stock Changes Actioned
+
message.noprinters=Keine Drucker definiert
label.byproduct=Auf Produkt
Menu.Auxiliar=Zus\u00e4tzliche Produkte
@@ -479,3 +499,26 @@ button.totaldiscount=Rabatt
database.ScriptWarning=Sch\u00f6pfung Schriftart ist nicht erfolgreich gelaufen.
database.ScriptError=Kann die Datenbanksch\u00f6pfungsschriftart nicht durchf\u00fchren.
message.probleminbreak=label.lindediscount
+label.discount=Rabatt
+label.managestock=Manage Stock Level
+Label.List=List
+label.New=New Ticket
+label.importlist=Import
+label.exportlist=Export
+label.newlist=New
+label.deletelist=Delete List
+message.asklistname=Enter List Name
+message.nameexists=Name already exists
+message.confirmdeletelist=Are you sure you want to delete this list?
+Button.Retry=Retry
+Button.Configuration=Configuration
+message.retryorconfig=Failed to find a working database.\n\nThis may be caused by :\n - A communications failure.\n - A problem with the database server.\n - A configuration issue with this till\n
+message.updatefailure=Database failed to update. With the error above.\n\nThe application can not be started until this has been resolved.\n\n
+message.createfailure=Unable to create a database.\n\n
+label.syncservertype=Synchronisation Type
+label.syncstatus=Synchronisation Status
+label.syncstats=Synchronisation Stats
+label.syncprocess=Synchronisation Process
+button.activatesync=Run Sychronisation Process
+Menu.Sync=Synchronisation
+Menu.DatabaseSync=Database Synchronisation
\ No newline at end of file
diff --git a/locales/pos_messages_en_US.properties b/locales/pos_messages_en_US.properties
index 13e08104..b7171b38 100644
--- a/locales/pos_messages_en_US.properties
+++ b/locales/pos_messages_en_US.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -127,6 +127,7 @@ Label.DbPassword=Password
Label.DbURL=URL
Label.DbUser=User
label.debt=Debt
+label.discount=Discount
label.double=Double
label.dutyid=ID
label.dutyname=Tax Name
@@ -176,11 +177,10 @@ label.minimum=Minimum
label.money=Total
label.packsinstock=In stock
-label.packof= Packs of
+label.packof= packs of
label.packstosplit=Packs to split
label.productinpack=Product in pack
label.split=Split
-label.ispack=Is Pack
label.name=Name
Label.Name=Name
@@ -265,7 +265,7 @@ label.sequence=Sequence
label.sha=SHA
Label.StartDate=Start Date
label.stockdate=Date
-label.stockproduct=Product
+label.stockproduct=In Stock
label.stockreason=Reason
label.storename=Store Name
label.subtotalcash=Subtotal
@@ -293,7 +293,7 @@ label.user=User
label.value=Value
label.visible=Visible
-label.warehouse=Product
+label.warehouse=Location
Menu.Attributes=Product Attributes
Menu.AttributeSets=Product Attribute Sets
@@ -329,6 +329,7 @@ Menu.Exit=Logout
Menu.ExtendedByProducts=Extended Product Sales
Menu.ExtendedCashRegisterLog=Extended Transaction Log
Menu.ExtendedSales=Extended Sales
+Menu.EmployeeTimeSheet=Employee Time Sheet
Menu.Floors=Floors
@@ -347,7 +348,7 @@ Menu.Maintenance=Maintenance
Menu.Maintenance.ERP=Chromis ERP
Menu.Maintenance.POS=Point Of Sale
Menu.Maintenance.Reports=Reports
-
+Menu.Migration=Database Migration
Menu.PaymentReport=Payments
Menu.Payments=Payments
Menu.Printer=Printers
@@ -356,6 +357,8 @@ Menu.Products=Products
Menu.ProductSales=Product Sales
Menu.ProductsWarehouse=Product Location
Menu.ProductPacks=Product Packs
+Menu.StockChanges=Stock Changes
+Menu.StockChangesReport=Stock Changes Report
Menu.Reports=Reports
Menu.ReportTaxes=Tax Summary
@@ -421,7 +424,7 @@ message.changeserver=Change current Server is in Development
message.closecashok=Cash Closed OK
message.configfactory=Are you sure you want to Restore Factory Values?
message.configrestore=Are you sure you want to Undo Changes?
-message.createdatabase=A working database cannot be detected. A default database will be created. Do you want to continue?
+message.createdatabase=A working database cannot be detected. A default database will be created.\n\nDo you want to continue?
message.customerdebtexceded=Customer Credit Limit exceeded
message.databaseconnectionerror=Unable to connect to database: Database not available
@@ -461,6 +464,7 @@ message.paymentrefundsnotsupported=Refunds not supported
message.preparescanner=Prepare the ScanPal scanner to upload the Product List then press OK
message.printererror=Unable to print Receipt
message.productnotselected=No Product selected
+message.stockchangesactioned=Stock Changes Actioned
message.restartchanges=Configuration Saved successfully. Changes will be applied on next system Restart
@@ -472,7 +476,7 @@ message.tableempty=Table is now empty
message.tablefull=Table is now full
message.title=Cash Register message
-message.updatedatabase=A database from a previous version has been detected. The database will be upgraded automatically. DATA MAY BE LOST. FIRST CREATE A BACKUP. Do you want to continue?
+message.updatedatabase=A database from a previous Chromis POS version has been detected. The database will be upgraded automatically.\n\nDATA MAY BE LOST. CREATE A BACKUP FIRST.\n\nDo you want to continue?
message.wannaclosecash=Are you sure you want to Close Cash?
message.wannadelete=Are you sure you want to Delete the current Order?
@@ -507,6 +511,8 @@ stock.out.refund=(Out) Refund
stock.out.sale=(Out) Sale
stock.in.openpack=(In) Open Pack
stock.out.openpack=(Out) Open Pack
+stock.in.stockchange=(In) Stock Change
+stock.out.stockchange=(Out) Stock Change
tab.bank=Bank
tab.cash=Cash
@@ -554,6 +560,7 @@ label.epm.enddate=End Date
label.epm.notes=Notes
label.epm.visible=Visible
message.cannotfindemployee=Cannot find employee
+message.invaliddobdate=Date of birth cannot be set the same as the System Date or after it
message.invalidenddate=End Date cannot be set before System or Start Date
message.invalidstartdate=Start Date cannot be before System Date
message.leavefor=left for
@@ -586,3 +593,398 @@ label.timeframe=Date
label.timeperiod=Period
tab.ticket=Ticket
transpayment.ticket=Ticket
+
+
+tiptext.openfolder=Open Folder
+tiptext.removepicture=Remove Picture
+tiptext.zoomin=Zoom In
+tiptext.zoomout=Zoom Out
+tiptext.addnew=Add New
+tiptext.delete=Delete
+tiptext.save=Save
+tiptext.clearkey=Clear Key
+tiptext.createkey=Create Key
+tiptext.customeraccount=Customer Account
+tiptext.payaccount=Pay Account
+tiptext.createkep=Create Key
+tiptext.executefilter=Execute Filter
+tiptext.clearfilter=Clear Filter
+tiptext.openclosemenu=Open/Close Menu
+tiptext.searchproductlist=Search Product List
+tiptext.getbarcode=Get Barcode
+tiptext.enterproductid=Edit Product
+tiptext.productattributes=Product Attributes
+tiptext.opencalendar=Open Calendar
+tiptext.scrollup=Scroll Up a Line
+tiptext.scrolldown=Scroll Down a Line
+tiptext.removeline=Remove Line
+tiptext.attributes=Attributes
+tiptext.downfrommobile=Download from Mobile Device
+tiptext.searchproduct=Search Product
+tiptext.opencustomers=Open Customers
+tiptext.addpartpayment=Add Part Payment
+tiptext.deletepartpayment=Delete Part Payment
+tiptext.printreceipt=Print Receipt
+tiptext.hideshowfilter=Hide/Show Filter
+tiptext.executereport=Execute Report
+tiptext.getcustomers=Get Customers
+tiptext.logout=Logout
+tiptext.gotocustomers=Go to Customers
+tiptext.findcustomers=Find Customers
+tiptext.splitsale=Split Sale
+tiptext.reprintlastticket=Reprint Last Ticket
+tiptext.productsearch=Product Search
+tiptext.editline=Edit Line
+tiptext.chooseattributes=Choose Attributes
+tiptext.scale=Scale
+tiptext.sendtokitchen=Send to Kichen Printer
+tiptext.refundanitem=Refund An Item
+tiptext.refundaline=Refund A Line
+tiptext.refundeverything=Refund Everything
+tiptext.searchtickets=Search Tickets
+tiptext.editcurrentticket=Edit current Ticket
+tiptext.receiptrefund=Receipt Refund
+tiptext.reprintreceipt=Reprint Receipt
+tiptext.enterreceiptandfind=Enter Receipt and touch to Find by Number
+tiptext.deletecurrent=Delete current Ticket
+tiptext.cancelaction=Cancel Action
+tiptext.splitall=Split All Line Items
+tiptext.splitoneitem=Split only one of the Line Items
+tiptext.unsplititem=Un-Split only one of the Line Items
+tiptext.unsplitall=Un-Split All Line Items
+tiptext.showcustomers=Show Customers
+tiptext.deletecurrentorder=Delete Current Order
+tiptext.movetable=Move Table
+tiptext.gototableplan=Go to Table Plan
+tiptext.openreservationsscreen=Open Reservations screen
+tiptext.reloadtabledata=Reload table information
+tiptext.prebooked=Receive pre-Booked Customer
+tiptext.newsale=New Sale
+tiptext.cancelsale=Cancel Sale
+tiptext.layaways=Layaways
+tiptext.deletecurrentsale=Delete current Sale
+tiptext.showsalesonly=Show Sales Only
+tiptext.showrefundsonly=Show Refunds Only
+label.customerrorsounds=Custom Error sound
+message.createproduct=Product not found. Do you want to create a new product?
+label.managestock=Manage Stock Level
+Label.List=List
+label.New=New Ticket
+label.importlist=Import
+label.exportlist=Export
+label.newlist=New
+label.deletelist=Delete List
+message.asklistname=Enter List Name
+message.nameexists=Name already exists
+message.confirmdeletelist=Are you sure you want to delete this list?
+Button.Retry=Retry
+Button.Configuration=Configuration
+message.retryorconfig=Failed to find a working database.\n\nThis may be caused by :\n - A communications failure.\n - A problem with the database server.\n - A configuration issue with this till\n
+message.updatefailure=Database failed to update. With the error above.\n\nThe application can not be started until this has been resolved.\n\n
+message.createfailure=Unable to create a database.\n\n
+button.layout=Enable Layout
+button.disablelayout=Disable Layout
+message.enablechange=Enable Max Change
+label.syncservertype=Synchronisation Type
+label.syncstatus=Synchronisation Status
+label.syncstats=Synchronisation Stats
+label.syncprocess=Synchronisation Process
+button.activatesync=Run Sychronisation Process
+Menu.Sync=Synchronisation
+Menu.DatabaseSync=Database Synchronisation
+Button.Bordercolour=Border Colour (Full Panel)
+label.autoloffrestaurant=In Restaurant Mode - return to tables
+label.companyemail=Email Address
+stock.in.recipes=(In) Recipe Item
+label.fontsize=SMALL TEXT
+label.deletesplitpayment=Delete Split Payment
+label.stockchangenewvalue=New value
+label.unlocktables=Remove Table Locks
+label.mandatory=Mandatory
+label.inputamount=Input box above keypad
+label.productreceipt=Receipt Required for Warranty
+Message.adminpermissions1=You have removed all permissions for
+Message.adminpermissions2=. Are you sure that is what you intended?
+label.CatalogueYes=Included
+Label.MachinePrinter4=Printer 4
+Label.MachinePrinter5=Printer 5
+Label.MachinePrinter6=Printer 6
+label.dob=Date of Birth
+label.csvrecordsfound=Records Found
+label.autologoff=Logoff After Each Sale
+label.entrysection=Entry section
+migration.warning=Migration SQL Error
+label.Transactions=Transactions
+database.UnableToConnect=Unable to connect with database! Check database setting in configuration
+label.refreshproductpanels=Refresh after Sale
+message.databaseconnectsuccess=
You're Connected!
You're ready to migrate your existing Database
+label.grossprofit=Gross Profit
+label.prodpricesellexcludingtax=Sell Price (excl')
+label.createcat=Create category if not present
+label.roletabledescription=Description
+Label.AlwaysAvailable=Always available
+message.customerdiscount=Customer gets a discount. Do you want to apply this to existing ticket lines?
+label.closeoptions=Close Options
+Menu.Sites=Sites
+Menu.Tools=Tools
+label.csvbad=Bad Price
+label.companywww=Web site
+label.companyaddr2=Address line2
+Menu.ClosedProducts1=Product Sales: Product II
+label.companyaddr3=Town
+label.companyaddr1=Street
+label.sitename=Site Name
+label.iconcolour=Icon Colour
+message.tablelocked=Table Locked!
+Menu.NewProducts=New Products Added
+message.cannotdeletesentline=You do not have permission to delete items sent to the kitchen
+datebase.ResetPickup=Cannot execute pickup reset
+label.csvmissing=Missing Data
+label.centraldatabase=Central Database
+label.autologoffpanel=Auto LogOff
+button.moorings=mooring
+label.margin=Margin
+label.inactivity=Enable Inactivity Timer
+label.customer_export=Customer Export List
+label.marine=Use Marina option
+label.rightslevel=Permission Level
+label.prodbuttonhtml=Sales screen Button HTML
+tooltip.fontsize=small
+label.loyaltyproducts=Loyalty details
+message.nigratemessage=Database Migration
+label.addcurrentstock=Create table data
+message.notexiststickettitle=Receipt Message
+label.companyaddr4=PostCode
+label.startuppanel=Start Up Screen
+message.novprice=
Variable-price Product! Enter price then Select Product
+stock.out.recipes=(Out) Recipe Item
+Button.Exit=Exit
+Menu.CustomersExport=Customers List (Export)
+button.test=TEST
+label.pickupcodesize=Length of Pickup Number
+label.totaltax=Taxes
+Button.newcustomer=Cancel
+Menu.Resetpickup=Reset pickup Counter
+label.mooringcreatebtn=Create Ticket
+button.restoreresource=Restore
+label.roletableallowed=Allowed
+message.tableopen=, currently has the table open and in use.
+Menu.ProductCatalog=Product Catalogue (List)
+Button.No=No, Thanks
+label.stockrecords=Current Stock Levels
+label.hidecategory=Hide Empty Categories
+message.refundable=No refundable items left on receipt
+migration.warningnodefault=Create Database not found
+Menu.Import=Import
+label.removeentryfor=Remove entry for
+Button.Yes=Yes, I am sure
+label.Closing1=Cash Closed: Export
+Button.ColourChooser=Select Colour
+label.prodminmax=Minimum and Maximum product levels are maintained in Product
+label.csvclearlog=Clear Import Log
+Location=along with Units sold
+message.customerdiscountapplied=Warning!! Customer discounts have already been applied to this ticket and cannot be removed. You may want to start a new ticket.
+label.tablebuttons=Transparent Buttons
+label.stockunits=In Stock
+label.addnewentry=Add new class entry
+label.csvsellingintax=Sell Price includes Tax?
+Menu.Closing1=Cash Closed (Export)
+Button.UpdateProduct=Update
+Button.addclass=Add new entry
+Button.deleteclass=Delete entry
+Button.logoff=Logout
+Button.takeaway=Eat-In
+Button.Test=Test
+Label.ChangesSalesScreen=Use New Sales Screen
+Label.ConsolidatedScreen=Consolidate Screen
+Label.Alias=Short Name
+Label.alias=Name
+Label.ticketsetupexample=Example
+Label.ticketsetupnumber=Receipt number min' length
+Label.ticketsetupprefix=Receipt number prefix
+Menu.BarcodeSheet=Labels: Barcode
+Menu.BestSellers=Best Sellers
+Menu.CSVImport=Import CSV File
+Menu.CSVReset=Clear Import Database Log
+Menu.CreateCleanDB=Create Clean Database
+Menu.Closing2=Cash Closed (Export)
+Menu.CustomersDebtors=Customer Debtors
+Menu.Import.Reports=Import Reports
+Menu.InvalidData=Invalid or duplicate data found
+Menu.MissingData=Missing Data or Bad Price in File
+Menu.ProductCategorySalesPieChart=Category Pie
+Menu.ProductList=Product List
+Menu.Promotions=Promotions
+Menu.Recipe=Recipes
+Menu.RolesOriginal=Roles (Checkbox Based)
+Menu.SalesManagement.Charts=Charts
+Menu.ShelfEdgeLabels=Labels: Shelf-Edge Labels
+Menu.TaxCatSales=Tax: Category Sales
+Menu.TimeSeriesProduct=Product Time Series
+Menu.Update=Manual Database Update
+Menu.UpdatedPrices=Price Changes
+Menu.Utilities=Utilities
+Menu.UtilityOptions=Utilities Options
+Message.adminwarning=Warning !!
+Message.rightslevel=Rights level out range (0 - 9 are permitted values).
+button.htmltest=Display Text
+button.memberdiscount=Member Disc
+button.migrate=Migrate Database
+button.newcustomer=Customer Database
+database.ScriptNotFound=Unable to find Updater.sql script.
+database.UpdaterWarning=Cannot execute the database updater script.
+label.CatalogueNo=Excluded
+label.CatalogueStatus=In Catalogue?
+label.CatalogueStatusNo=Not In Catalogue
+Menu.UnlockAllTables=Unlock all tables
+Menu.Unlocktables=Release Table Locks
+label.databaseconnection=Site Database
+label.active=Site Active
+label.locations=Location Details
+label.floorplans=Floor Plans
+label.permissions=Database Permissions
+label.people=All User Details
+label.resources=All Resources
+label.roles=User Roles
+title.keep=Retain the following
+label.selectresource=Resource Name :
+label.bystockatwarehouse=Stock by Location
+label.bystock=By Stock Level
+label.stocklevel=Stock level
+label.age=Age
+label.layawaypopup=Automatically Open Layaways
+label.autorefresh=Auto refresh tables
+label.enabletablepositions=Allow tables relocation
+label.allowlongnames=Allow long names in product panel
+label.showlayways=Show layways on login
+label.maxchange=Maximum change
+message.largechange=Please check amount tendered. Exceeded change limit.
+label.salestaxexcluded=taxes excluded
+label.createonorder=Create on order only in restaurant mode
+label.layaway=Use PickUp Id for layaway tickets
+transpayment.customout=Custom - Bought
+transpayment.customin=Custom - Redeemed
+tooltip.fontsizesmall=small
+tooltip.fontsizelarge=Large
+tooltip.fontitalic=Italic Text
+tooltip.fontexample=Display TWO LINES ON YOUR BUTTON
+tooltip.fontcolour=
+tooltip.fontbold=Bold
+title.CSVImport=Status
+tab.custom=Custom
+migration.ScriptNotFound=Migration Script not Found
+migration.notvalidversion=The new database type is not supported
+migration.warningjl=Create JL features not found
+migration.warningnofk=Drop Foreign Key not found
+message.systemclosecash=Move Close Cash buttons
+message.systemclosecas=jCheckBox1
+message.startupText=Changing the content of the default Startup Text and not declaring that this is free software is in violation of the Free Software Foundation's GNU General Public License GPL
+message.refundauxiliaryitem=Can not refund auxiliary item on its own Select main item then
+message.nullticket=You cannot create an empty ticket layaway! Please add something to this Sale
+label.CatalogueStatusYes=In Catalogue
+label.Infopanel=Hide Footer Status Bar
+label.Money=Money
+label.SCOnOff=Service Charge Enabled
+label.SCRate=Service Charge Rate
+label.SCRestaurant=In Restaurant mode only
+label.SCZero=%
+label.SChargepanel=Service Charge
+label.addsplitpayment=Add Split Payment
+label.autolofftime=Auto LogOff after inactive time
+label.autologoffzero=Timer in seconds
+label.autologonoff=Enable Auto LogOff
+label.btndisplay=Button Display Text
+message.migratenotsupported=Database Migration type not supported
+label.casesensitive=Case sensitive
+label.logoffafterprinting=Logoff After Printing
+label.csvresetimport=Reset Import Data
+label.packsof=Pack Size
+label.tableshowwaiterdetails=Show Waiter detail on table
+label.discounted=Can be discounted
+message.DBDefault=
The Default database shipped with Chromis POS is Apache Derby Embedded. It is intended for stand-alone, single-user, low-volume transaction installs only.
If you need multiple terminals to connect to a central database then select from the Database dropdown list above.
If you have selected an alternative database then you must ensure it is installed and configured correctly before trying to connect Chromis POS
More information can be found on the Chromis web site
+label.roletabldescription=Desc
+label.selectclass=Select classname
+label.proddefaultcategory=Default Cat'
+label.csvread=Read Header
+label.cvsnotchanged=Not Changed
+label.entryclassname=New Classname
+label.stockchangeset=Set value
+label.total=Total
+label.categoryordernumber=Category Order Number
+label.companyFax=Fax number
+label.textclourtablename=Table Name text colour
+label.receiptprint=Receipt Print Off
+label.tableshowcustomerdetails=Show Customer details on table
+label.fontsizelarge=Large Text
+label.csvimpostbtn=Import CSV
+label.customerscreen=Use ticket lines in display
+label.units2=Quantity
+label.customerTotalSales=Total Sales
+label.item2=Description
+label.cvsinvalid=Invalid Products
+label.fontweight=Bold Text
+label.texttip=Text Tip Message
+label.pricewith00=Use 00 keypad button
+label.customer_list=Customer List
+label.hidezerostock=Hide 0 Stock Items
+label.totalnet=Net
+label.startuplogo=Logo
+message.customerclear=Are you sure? Cancel will clear Customer from Ticket.
+label.roletableclass=Class
+label.general=General
+label.csvpriceupdated=Prices Updated
+label.entrydisplayname=Displayed name
+label.csvenableclear=Enable Clear Import Button
+label.loyaltycardnumber=Card Number
+label.variableprice=Variable Price Product
+label.csvnewproducts=New Products
+label.cash=Cash
+label.categoryorder=Use categories number
+label.cleardrawertable=Number of days to maintain cash drawer table data
+label.companyname=Company Name
+label.companytax=VAT number
+label.companytelephone=Phone 1
+label.configreceipt=Receipt Setup
+label.csvdelimit=Separator
+label.csvfile=File
+label.currencybutton=HidePayments text overlay
+label.cvsbadcats=Bad Categories
+label.default=Disable Product PopUp
+label.display=Display
+label.entrydescription=Description of entry
+label.fontcolour=Text Colour
+label.fontexample=Display TWO LINES ON YOUR BUTTON
+label.fontitalic=Italic Text
+label.fontsizesmall=Font Size: small
+label.ispack=Is Pack
+label.logoffaftersendtokitchen=Logoff After Sending To Kitchen
+label.mooringscreatefor=Create ticket for
+label.nocashsales=No Sale - Drawer Openings
+label.prodbarcodetype=Barcode Type
+label.prodtaxcode=Tax
+label.producthtmlguide=
You can customise the Sales screen Product buttons here. If you have even a little HTML knowlege you're more than halfway there!
Hover over the text to your right to see the HTML code for the effect you want on your Button
+label.resetpickup=Reset Pickup Counter
+label.taxincluded=Set Tax Included on startup
+label.textcolourcustomer=Customer text colour
+label.textcolourwaiter=Waiter text colour
+label.updatepricefromedit=Update price from line edit
+label.value2=Price
+message.addnewentryerror=Only the description field can be left blank
+message.createdatabasejl=New database information needs to be created for John L changes. This will now be done. Do you want to continue? If not, you will be unable to use the system.
+message.customeradd=Add Customer to this Ticket?
+message.customeraddnew=Complete Customer detail and Save to add to this Ticket?
+message.customerassign=Assign Customer to this Ticket?
+message.customerchange=Change Customer for this Ticket?
+message.customerchangeyn=Are you sure you want to change Customer for this Ticket?
+message.customercheck=Some text in the Search Key field is required
+message.databasesuccess=
You're Connected!
Restart Chromis POS to load your Database Connection
+message.deleteauxiliaryitem=Can not delete auxiliary item on its own Select main item then delete
+message.deleteclass=Are you sure you wish to delete the class?
+label.photo=Photo
+label.splitpayment=Split Payment
+label.startuptext=Text
+label.stockchangeadjust=Adjust value
+label.stockchangenewrecord=New record
+label.stocktaker=Entered by
+label.subcategorytitle=Display name in panel
+label.tabledisplayoptions=Table Display
diff --git a/locales/pos_messages_es.properties b/locales/pos_messages_es.properties
index d4d15c9f..ae21b26e 100644
--- a/locales/pos_messages_es.properties
+++ b/locales/pos_messages_es.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -176,6 +176,7 @@ Label.DbPassword=Clave de acceso
Label.DbURL=Cadena de conexi\u00f3n
Label.DbUser=Usuario
label.debt=A cuenta
+label.discount=Discount
label.double=Decimal
label.dutyid=Identificador
label.dutyname=Impuesto
@@ -413,19 +414,22 @@ Menu.Categories=Categor\u00edas
Menu.CategoryProductSalesChart=Gr\u00e1fica de Ventas por Categor\u00eda
Menu.ChangePassword=Cambiar clave
Menu.ClosedProducts=Ventas de productos
+Menu.ClosedProducts1=Ventas de Productos II
Menu.CloseTPV=Cerrar caja
Menu.Closing=Cierres de caja
+Menu.Closing1=Cierre de Caja (Exportar)
Menu.Configuration=Configuraci\u00f3n
Menu.CSVImport=Importar Archivo CSV
Menu.CSVReset=Borrar Registro Importaciones
Menu.Customers=Clientes
Menu.Customers.Reports=Informes
+Menu.CustomersDebtors=Estado Cuentas Clientes
Menu.CustomersBReport=Clientes morosos
Menu.CustomersDiary=Diario de clientes
Menu.CustomersList=Listado de Clientes
-Menu.CustomersManagement=Clientes
-Menu.CustomersPayment=Clientes
-Menu.CustomersReport=Clientes
+Menu.CustomersManagement=Gesti\u00f3n Clientes
+Menu.CustomersPayment=Pago de Clientes
+Menu.CustomersReport=Informe de Clientes
message.DBDefault=
The Default database shipped with Chromis POS is Apache Derby Embedded. It is intended for stand-alone, single-user installs only.
\n
If you need multiple terminals to connect to a central database then select from the Database dropdown list above.
\n
If you have selected an alternative database then you must ensure it is installed and configured correctly before trying to connect Chromis POS
\n
@@ -438,16 +442,19 @@ Menu.ExtendedSales=Ventas Extendidas
Menu.Floors=Plantas
-Menu.Import=Importar CSV
-Menu.Import.Reports=Informes de Importaci\u00f3n CSV
+Menu.Import=Importar
+Menu.Import.Reports=Informes de Importaci\u00f3n
Menu.InvalidData=Datos Inv\u00e1lidos o Duplicados
+Menu.BarcodeSheet=Etiquetas: C\u00f3digo de Barras
Menu.Inventory=Almacenes
Menu.Inventory2=Existencias
Menu.InventoryBroken=Existencias bajo m\u00ednimos
Menu.InventoryDiff=Diario de existencias
Menu.InventoryDiffDetail=Detalle de diario de existencias
Menu.InventoryListDetail=Detalle de existencias
-Menu.InventoryReOrder=Inventory: Re-Order
+Menu.InventoryReOrder=Inventario: Reordenar
+Menu.ProductCatalog=Cat\u00e1logo de Productos
+Menu.ShelfEdgeLabels=Etiquetas de Estanter\u00eda
Menu.Locations=Almacenes
@@ -456,7 +463,7 @@ Menu.Maintenance.ERP=Chromis ERP
Menu.Maintenance.POS=Terminal de venta
Menu.Maintenance.Reports=Informes
Menu.Maintenance=Mantenimiento
-Menu.MissingData=Faltan Dato o Precio Mal en el Archivo
+Menu.MissingData=Faltan Datos o Precio Err\u00f3neo en el Archivo
Menu.NewProducts=A\u00f1adidos Nuevos Productos
@@ -467,7 +474,11 @@ Menu.ProductLabels=Etiquetas de productos
Menu.Products=Productos
Menu.ProductSales=Ventas de productos
Menu.ProductsWarehouse=Productos por almac\u00e9n
-Menu.ProductPacks=Product Packs
+Menu.ProductPacks=Packs de Productos
+Menu.ProductCategorySalesPieChart=Ventas por Categor\u00eda
+Menu.Promotions=Promociones
+Menu.StockChanges=Cambios de Inventario
+Menu.StockChangesReport=Informe de Cambios de Inventario
Menu.Reports=Informes
Menu.ReportTaxes=Impuestos
@@ -493,6 +504,8 @@ Menu.Tables=Mesas
Menu.Taxes=Impuestos
Menu.TaxCustCategories=Categor\u00edas de impuestos por cliente
Menu.TaxCategories=Categor\u00edas de impuestos
+Menu.TaxCatSales=Ventas por Impuestos y Categor\u00eda
+Menu.TimeSeriesProduct=Producto Por Series de Tiempo
Menu.ThirdParties=Proveedores
Menu.ThirdPartiesManagement=Gesti\u00f3n de proveedores
Menu.Ticket=Ventas
@@ -540,8 +553,8 @@ message.changeserver=Cambio Servidor actual en Desarrollo
message.closecashok=La caja se ha cerrado con \u00e9xito.
message.configfactory=Se restaurar\u00e1n los valores de f\u00e1brica y se perder\u00e1n los actuales. \u00bfDesea continuar?
message.configrestore=Se restaurar\u00e1n los valores iniciales y se perder\u00e1n los cambios. \u00bfDesea continuar?
-message.createdatabase=No se ha detectado una base de datos en funcionamiento. Se creara una base de datos por defecto. \u00bfDesea continuar?
-message.createdatabasejl=New database information needs to be created for John L changes. This will now be done. Do you want to continue? If not, you will be unable to use the system.
+message.createdatabase=No se ha detectado una base de datos en funcionamiento. Se creara una base de datos por defecto.\n\n\u00bfDesea continuar?
+
message.customerdebtexceded=El cliente supera la deuda permitida.
message.databaseconnectionerror=No se puede conectar con la base de datos. Base de datos no disponible.
@@ -583,9 +596,10 @@ message.paymentgatewayswipe=Pase la tarjeta por el lector y pulse Aceptar.
message.paymentgatewaytype=Escriba los datos de la tarjeta y pulse Aceptar.
message.paymentnotauthorised=Transacci\u00f3n no autorizada.
message.paymentrefundsnotsupported=No se pueden realizar devoluciones.
-message.preparescanner=Prepare the scanner to upload the products list and press OK.
+message.preparescanner=Prepare el scanner para cargar la lista de productos y pulse OK.
message.printererror=No se ha podido imprimir el recibo.
message.productnotselected=No se ha seleccionado el producto.
+message.stockchangesactioned=Accionado Cambio de Inventario
message.restartchanges=La configuraci\u00f3n se ha guardado correctamente. Los cambios se realizar\u00e1n al reiniciar la aplicaci\u00f3n.
@@ -599,8 +613,7 @@ message.tableempty=La mesa est\u00e1 ahora vac\u00eda.
message.tablefull=La mesa est\u00e1 ahora vac\u00eda.
message.title=Mensaje de la registradora
-message.updatedatabase=Se ha detectado una versi\u00f3n anterior de la base de datos. Se actualizar\u00e1 la base de datos autom\u00e1ticamente. SE PUEDEN PERDER DATOS. PRIMERO HAGA UNA COPIA DE SEGURIDAD. \u00bfDesea continuar?
-message.updatedatabasejl=New database changes are required (John l changes). The database will be upgraded automatically. DATA MAY BE LOST. FIRST CREATE A BACKUP. Do you want to continue? If not, you will be unable to use the system.
+message.updatedatabase=Se ha detectado una versi\u00f3n anterior de la base de datos.\n Se actualizar\u00e1 la base de datos autom\u00e1ticamente.\n\nSE PUEDEN PERDER DATOS. PRIMERO HAGA UNA COPIA DE SEGURIDAD.\n\n\u00bfDesea continuar?
message.wannaclosecash=\u00bfEst\u00e1 seguro que desea cerrar la caja?
message.wannadelete=\u00bfEst\u00e1 seguro que desea borrar el recibo actual?
@@ -636,12 +649,15 @@ stock.in.movement=(entrada) Traspaso
stock.in.purchase=(entrada) compra
stock.in.refund=(entrada) devoluci\u00f3n
stock.out.break=(salida) rotura
-stock.out.crossing=Traspaso
+stock.out.crossing=(Salida) Traspaso
stock.out.movement=(salida) Traspaso
stock.out.refund=(salida) devoluci\u00f3n
stock.out.sale=(salida) venta
-stock.in.openpack=(In) Open Pack
-stock.out.openpack=(Out) Open Pack
+stock.in.openpack=(Entrada) Paquete Abierto
+stock.out.openpack=(Salida) PAquete Abierto
+stock.in.stockchange=(Entrada) Cambio Inventario
+stock.out.stockchange=(Salida) Cambio Inventario
+
tab.cash=Efectivo
tab.cashrefund=Devoluci\u00f3n
tab.cheque=Cheque
@@ -738,3 +754,96 @@ label.CatalogueStatusYes=En Cat\u00e1logo
label.CatalogueStatusNo=No en Cat\u00e1logo
label.Transactions=Transacciones
label.photo=Foto
+tiptext.openfolder=Abrir Carpeta
+tiptext.removepicture=Borrar Imagen
+tiptext.zoomin=Agrandar Imagen
+tiptext.zoomout=Disminuir Imagen
+tiptext.addnew=A\u00f1adir Nuevo
+tiptext.delete=Borrar
+tiptext.save=Guardar
+tiptext.clearkey=Borrar Clave
+tiptext.createkey=Crear Clave
+tiptext.customeraccount=Cuenta Cliente
+tiptext.payaccount=Pagar a Cuenta
+tiptext.createkep=Crear Clave
+tiptext.executefilter=Ejecutar Filtro
+tiptext.clearfilter=Borrar Filtro
+tiptext.openclosemenu=Abrir/Cerrar Menu
+tiptext.searchproductlist=Buscar en Lista de Productos
+tiptext.getbarcode=Leer C\u00f3digo de Barras
+tiptext.enterproductid=Entrar ID de Producto
+tiptext.productattributes=Atributos de Producto
+tiptext.opencalendar=Abrir Calendario
+tiptext.scrollup=Subir una Linea
+tiptext.scrolldown=Bajar una Linea
+tiptext.removeline=Borrar Linea
+tiptext.attributes=Atributos
+tiptext.downfrommobile=Volcar desde Scanner
+tiptext.searchproduct=Buscar Producto
+tiptext.opencustomers=Abrir Clientes
+tiptext.addpartpayment=A\u00c3\u00b1adir Parte del Pago
+tiptext.deletepartpayment=Borrar Parte del Pago
+tiptext.printreceipt=Imprimir Ticket
+tiptext.hideshowfilter=Ocultar/Mostrar Filtro
+tiptext.executereport=Ejecutar Informe
+tiptext.getcustomers=Ir a Clientes
+tiptext.logout=Cerrar SesI\u00f3n
+tiptext.gotocustomers=Ir a Clientes
+tiptext.findcustomers=Buscar Clientes
+tiptext.splitsale=Venta Dividia
+tiptext.reprintlastticket=Volver a Imprimir \u00daLtimo Ticket
+tiptext.productsearch=B\u00fasqueda de Productos
+tiptext.editline=Editar Linea
+tiptext.chooseattributes=Escoger Atributos
+tiptext.scale=Balanza
+tiptext.sendtokitchen=Enviar a Impresora de Cocina
+tiptext.refundanitem=Reembolsar un Art\u00edculo
+tiptext.refundaline=Reembolsar una Linea
+tiptext.refundeverything=Reembolsar Todo
+tiptext.searchtickets=Buscar Tickets
+tiptext.editcurrentticket=Editar Ticket Actual
+tiptext.receiptrefund=Reembolsar Ticket
+tiptext.reprintreceipt=Volver a Imprimir Ticket
+tiptext.enterreceiptandfind=Entrar N \u00famero de Ticket y Pulsar para Buscar
+tiptext.deletecurrent=Borrar Ticket Actual
+tiptext.cancelaction=Cancelar Acci\u00f3n
+tiptext.splitall=Dividir Todos los Art\u00edculos de la Linea
+tiptext.splitoneitem=Dividir un Art\u00edculo de la Linea
+tiptext.unsplititem=A\u00f1adir un Art\u00edculo de la Linea
+tiptext.unsplitall=A\u00f1adir Todos los Art\u00edculos de la Linea
+tiptext.showcustomers=Mostrar Clientes
+tiptext.deletecurrentorder=Borrar Comanda Actual
+tiptext.movetable=Mover Mesa
+tiptext.gototableplan=Ir a Plano de Mesas
+tiptext.openreservationsscreen=Abrir Pantalla de Reservas
+tiptext.reloadtabledata=Volver a Cargar Informaci\u00f3n de Mesas
+tiptext.prebooked=Recibir a Cliente con Reserva
+tiptext.newsale=Nueva Venta
+tiptext.cancelsale=Cancelar Venta
+tiptext.layaways=Ventas Abiertas
+tiptext.deletecurrentsale=Borrar Venta Actual
+tiptext.showsalesonly=Mostrar S\u00f3lo Ventas
+tiptext.showrefundsonly=Mostrar S\u00f3lo Reembolsos
+
+label.managestock=Manage Stock Level
+Label.List=List
+label.New=New Ticket
+label.importlist=Import
+label.exportlist=Export
+label.newlist=New
+label.deletelist=Delete List
+message.asklistname=Enter List Name
+message.nameexists=Name already exists
+message.confirmdeletelist=Are you sure you want to delete this list?
+Button.Retry=Retry
+Button.Configuration=Configuration
+message.retryorconfig=Failed to find a working database.\n\nThis may be caused by :\n - A communications failure.\n - A problem with the database server.\n - A configuration issue with this till\n
+message.updatefailure=Database failed to update. With the error above.\n\nThe application can not be started until this has been resolved.\n\n
+message.createfailure=Unable to create a database.\n\n
+label.syncservertype=Synchronisation Type
+label.syncstatus=Synchronisation Status
+label.syncstats=Synchronisation Stats
+label.syncprocess=Synchronisation Process
+button.activatesync=Run Sychronisation Process
+Menu.Sync=Synchronisation
+Menu.DatabaseSync=Database Synchronisation
\ No newline at end of file
diff --git a/locales/pos_messages_es_AR.properties b/locales/pos_messages_es_AR.properties
index 9b72b455..c9a0e0cf 100644
--- a/locales/pos_messages_es_AR.properties
+++ b/locales/pos_messages_es_AR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -201,6 +201,8 @@ Menu.Maintenance.POS=Terminal de venta
Menu.Payments=Movimientos de caja
Menu.Printer=Impresora
Menu.Products=Productos
+Menu.StockChanges=Stock Changes
+
Menu.Reports=Informes
Menu.ReportTaxes=Impuestos
Menu.Resources=Recursos
@@ -242,7 +244,7 @@ message.changepassworddistinct=La clave de acceso repetida debe ser igual a la c
message.closecashok=La caja se ha cerrado con \u00e9xito.
message.configfactory=Se restaurar\u00e1n los valores de f\u00e1brica y se perder\u00e1n los actuales. \u00bfDesea continuar?
message.configrestore=Se restaurar\u00e1n los valores iniciales y se perder\u00e1n los cambios. \u00bfDesea continuar?
-message.createdatabase=No se ha detectado una base de datos en funcionamiento. Se creara una base de datos por defecto. \u00bfDesea continuar?
+message.createdatabase=No se ha detectado una base de datos en funcionamiento. Se creara una base de datos por defecto.\n\n\u00bfDesea continuar?
message.databaseconnectionerror=No se puede conectar con la base de datos. Base de datos no disponible.
message.databasedrivererror=No se puede conectar con la base de datos. Manejador no encontrado.
message.databasenotsupported=Base de datos "{0}" no soportada.
@@ -267,7 +269,7 @@ message.scannerfail=Se ha producido un error al subir la lista de productos.
message.scannerfail2=Se ha producido un error al descargar la lista de productos.
message.scannerok=Se ha subido con \u00e9xito la lista de productos.
message.title=Mensaje de la registradora
-message.updatedatabase=Se ha detectado una versi\u00f3n anterior de la base de datos. Se actualizar\u00e1 la base de datos autom\u00e1ticamente. SE PUEDEN PERDER DATOS. PRIMERO HAGA UNA COPIA DE SEGURIDAD. \u00bfDesea continuar?
+message.updatedatabase=Se ha detectado una versi\u00f3n anterior de la base de datos. Se actualizar\u00e1 la base de datos autom\u00e1ticamente.\n\nSE PUEDEN PERDER DATOS. PRIMERO HAGA UNA COPIA DE SEGURIDAD.\n\n\u00bfDesea continuar?
message.wannaclosecash=\u00bfEst\u00e1 seguro que desea cerrar la caja?
message.wannadelete=\u00bfEst\u00e1 seguro que desea eliminar el recibo actual?
payment.title=Pago
@@ -291,6 +293,9 @@ stock.out.refund=(salida) devoluci\u00f3n
stock.out.sale=(salida) venta
stock.in.openpack=(In) Open Pack
stock.out.openpack=(Out) Open Pack
+stock.in.stockchange=(In) Stock Change
+stock.out.stockchange=(Out) Stock Change
+
tab.cash=Efectivo
tab.cashrefund=Devoluci\u00f3n
tab.cheque=Cheque
@@ -457,6 +462,31 @@ message.mergetablequestion=\u00bfEst\u00e1 seguro que quiere unir las mesas?
message.productnotselected=No se ha seleccionado el producto.
form.selectprintertitle=Seleccionar impresora
message.printererror=No se ha podido imprimir el recibo.
+message.stockchangesactioned=Stock Changes Actioned
+
message.noprinters=No hay impresoras instaladas en el sistema.
label.all=Todos
label.byproduct=Por producto
+label.discount=Discount
+label.managestock=Manage Stock Level
+Label.List=List
+label.New=New Ticket
+label.importlist=Import
+label.exportlist=Export
+label.newlist=New
+label.deletelist=Delete List
+message.asklistname=Enter List Name
+message.nameexists=Name already exists
+message.confirmdeletelist=Are you sure you want to delete this list?
+Button.Retry=Retry
+Button.Configuration=Configuration
+message.retryorconfig=Failed to find a working database.\n\nThis may be caused by :\n - A communications failure.\n - A problem with the database server.\n - A configuration issue with this till\n
+message.updatefailure=Database failed to update. With the error above.\n\nThe application can not be started until this has been resolved.\n\n
+message.createfailure=Unable to create a database.\n\n
+label.syncservertype=Synchronisation Type
+label.syncstatus=Synchronisation Status
+label.syncstats=Synchronisation Stats
+label.syncprocess=Synchronisation Process
+button.activatesync=Run Sychronisation Process
+Menu.Sync=Synchronisation
+Menu.DatabaseSync=Database Synchronisation
\ No newline at end of file
diff --git a/locales/pos_messages_es_MX.properties b/locales/pos_messages_es_MX.properties
index d5a8a131..bcfe8b6c 100644
--- a/locales/pos_messages_es_MX.properties
+++ b/locales/pos_messages_es_MX.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -56,6 +56,7 @@ Label.Payment=Pagos
Label.StartDate=Fecha de inicio
Label.Tickets=Pagos
Label.Ticketsbag=Tickets
+label.discount=Discount
Menu.AttributeSets=Conjuntos de atributos de producto
Menu.AttributeUse=Atributos de producto por conjunto
Menu.AttributeValues=Valores de atributo
@@ -100,6 +101,8 @@ Menu.ProductSales=Ventas de productos
Menu.Products=Productos
Menu.ProductsWarehouse=Productos por almac\u00e9n
Menu.ProductPacks=Product Packs
+Menu.StockChanges=Stock Changes
+Menu.StockChangesReport=Stock Changes Report
Menu.ReportTaxes=Impuestos
Menu.Reports=Informes
@@ -368,7 +371,7 @@ message.changepassworddistinct=La clave de acceso repetida debe ser igual a la c
message.closecashok=La caja se ha cerrado con \u00e9xito.
message.configfactory=Se restaurar\u00e1n los valores de f\u00e1brica y se perder\u00e1n los actuales. \u00bfDesea continuar?
message.configrestore=Se restaurar\u00e1n los valores iniciales y se perder\u00e1n los cambios. \u00bfDesea continuar?
-message.createdatabase=No se ha detectado una base de datos en funcionamiento. Se creara una base de datos por defecto. \u00bfDesea continuar?
+message.createdatabase=No se ha detectado una base de datos en funcionamiento. Se creara una base de datos por defecto.\n\n\u00bfDesea continuar?
message.customerdebtexceded=El cliente supera la deuda permitida.
message.databaseconnectionerror=No se puede conectar con la base de datos. Base de datos no disponible.
message.databasedrivererror=No se puede conectar con la base de datos. Driver no encontrado.
@@ -405,6 +408,8 @@ message.paymentrefundsnotsupported=No se pueden realizar devoluciones.
message.preparescanner=Prepare the scanner to upload the products list and press OK.
message.printererror=El recibo no se pudo imprimir.
message.productnotselected=Producto no seleccionado.
+message.stockchangesactioned=Stock Changes Actioned
+
message.restartchanges=La configuraci\u00f3n se ha guardado correctamente. Los cambios se realizar\u00e1n al reiniciar la aplicaci\u00f3n.
message.scannerfail=Se ha producido un error al subir la lista de productos.
message.scannerfail2=Se ha producido un error al descargar la lista de productos.
@@ -412,7 +417,7 @@ message.scannerok=Se ha subido con \u00e9xito la lista de productos.
message.tableempty=La mesa est\u00e1 ahora vac\u00eda.
message.tablefull=La mesa est\u00e1 ahora vac\u00eda.
message.title=Mensaje de la registradora
-message.updatedatabase=Se ha detectado una versi\u00f3n anterior de la base de datos. Se actualizar\u00e1 la base de datos autom\u00e1ticamente. SE PUEDEN PERDER DATOS. PRIMERO HAGA UNA COPIA DE SEGURIDAD. \u00bfDesea continuar?
+message.updatedatabase=Se ha detectado una versi\u00f3n anterior de la base de datos. Se actualizar\u00e1 la base de datos autom\u00e1ticamente.\n\nSE PUEDEN PERDER DATOS. PRIMERO HAGA UNA COPIA DE SEGURIDAD.\n\n\u00bfDesea continuar?
message.wannaclosecash=\u00bfEst\u00e1 seguro que desea cerrar la caja?
message.wannadelete=\u00bfEst\u00e1 seguro que desea borrar el recibo actual?
message.wannasave=\u00bfDesea guardar los cambios antes de salir?
@@ -443,6 +448,9 @@ stock.out.refund=(salida) devoluci\u00f3n
stock.out.sale=(salida) venta
stock.in.openpack=(In) Open Pack
stock.out.openpack=(Out) Open Pack
+stock.in.stockchange=(In) Stock Change
+stock.out.stockchange=(Out) Stock Change
+
tab.cash=Efectivo
tab.cashrefund=Devoluci\u00f3n
tab.cheque=Cheque
@@ -480,3 +488,25 @@ transpayment.purchasepaymentout=(salida) Compra a proveedor
transpayment.revenuesin=(entrada) Utilidad
transpayment.revenuesout=(salida) Utilidad
transpayment.ticket=Ticket
+label.managestock=Manage Stock Level
+Label.List=List
+label.New=New Ticket
+label.importlist=Import
+label.exportlist=Export
+label.newlist=New
+label.deletelist=Delete List
+message.asklistname=Enter List Name
+message.nameexists=Name already exists
+message.confirmdeletelist=Are you sure you want to delete this list?
+Button.Retry=Retry
+Button.Configuration=Configuration
+message.retryorconfig=Failed to find a working database.\n\nThis may be caused by :\n - A communications failure.\n - A problem with the database server.\n - A configuration issue with this till\n
+message.updatefailure=Database failed to update. With the error above.\n\nThe application can not be started until this has been resolved.\n\n
+message.createfailure=Unable to create a database.\n\n
+label.syncservertype=Synchronisation Type
+label.syncstatus=Synchronisation Status
+label.syncstats=Synchronisation Stats
+label.syncprocess=Synchronisation Process
+button.activatesync=Run Sychronisation Process
+Menu.Sync=Synchronisation
+Menu.DatabaseSync=Database Synchronisation
\ No newline at end of file
diff --git a/locales/pos_messages_et.properties b/locales/pos_messages_et.properties
index 0767e1c7..7f3691c4 100644
--- a/locales/pos_messages_et.properties
+++ b/locales/pos_messages_et.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -34,6 +34,7 @@ button.listtickets=Loend
button.movetable=Siirda
button.NewTicket=Uus
Button.OK=OK
+label.discount=Discount
button.opendrawer=Laegas
button.pay=V\u00f5la tasumine
button.peoplepassword=Salas\u00f5na
@@ -319,6 +320,9 @@ Menu.Maintenance.POS=Kassat\u00f6\u00f6koht
Menu.Payments=Sisse-&v\u00e4ljamaks
Menu.Printer=Printerid
Menu.Products=Tooted
+Menu.StockChanges=Stock Changes
+Menu.StockChangesReport=Stock Changes Report
+
Menu.Reports=Aruanded
Menu.ReportTaxes=Maksude koond
Menu.Resources=Ressursid
@@ -394,7 +398,7 @@ message.changepassworddistinct=Kinnita salas\u00f5na
message.closecashok=Vahetuse l\u00f5petamine \u00f5nnestus
message.configfactory=Kas olete kindel, et algseadete taastamine on vajalik?
message.configrestore=Kas tahate t\u00f5esti tagasi v\u00f5tta tehtud muudatused?
-message.createdatabase=Kahjuks ei \u00f5nnestunud leida t\u00f6\u00f6tamiseks vajalikku andmebaasi. Sellel p\u00f5hjusel alustab programm n\u00fc\u00fcd vaikeseadetega andmebaasi loomist. Kas lubate programmil seda tegevust j\u00e4tkata?
+message.createdatabase=Kahjuks ei \u00f5nnestunud leida t\u00f6\u00f6tamiseks vajalikku andmebaasi. Sellel p\u00f5hjusel alustab programm n\u00fc\u00fcd vaikeseadetega andmebaasi loomist.\n\nKas lubate programmil seda tegevust j\u00e4tkata?
message.databaseconnectionerror=Andmebaasiga ei \u00f5nnestunud \u00fchendust luua: Andmebaas pole ligip\u00e4\u00e4setav
message.databasedrivererror=Andmebaasiga ei \u00f5nnestunud \u00fchendust luua: Andmebaaasi ajur on kuhugi kadunud
message.databasenotsupported=Andmebaasi "{0}" ei toetata
@@ -419,7 +423,7 @@ message.scannerfail=Toodete nimekirja \u00fcleslaadimine ei l\u00e4inud korda
message.scannerfail2=Toodete nimekirja allalaadimine ei l\u00e4inud korda
message.scannerok=Toodete nimekirja \u00fcleslaadimine l\u00e4ks korda
message.title=Teade kassaregistrilt
-message.updatedatabase=oPoS leidis varasema versiooni andmebaasi. Kl\u00f5psates OK algab katse andmebaasi automaatseks uuendamiseks. TEKIB OHT ANDMETE KAOTSIMINEKUKS. TEHKE ESMALT VARUKOOPIA. Kas soovite j\u00e4tkata uuendamisega n\u00fc\u00fcd ja kohe?
+message.updatedatabase=oPoS leidis varasema versiooni andmebaasi. Kl\u00f5psates OK algab katse andmebaasi automaatseks uuendamiseks.\n\nTEKIB OHT ANDMETE KAOTSIMINEKUKS. TEHKE ESMALT VARUKOOPIA.\n\nKas soovite j\u00e4tkata uuendamisega n\u00fc\u00fcd ja kohe?
message.wannaclosecash=Kas vahetuse l\u00f5petamiseks on t\u00f5esti \u00f5ige aeg?
message.wannadelete=Kas Te soovite kindlasti kustutada jooksva tellimuse?
message.paymentgatewayswipe=Loe kaart ja vajuta OK
@@ -447,6 +451,8 @@ message.cannotfindattributes=Selle tootega pole seotud \u00fchtki muutujat
message.productnotselected=\u00dchtki toodet pole valitud
message.printererror=T\u00f0eki tr\u00fckkimine ei \u00f5nnestunud
message.noprinters=\u00dchtegi printerit pole seadistatud
+message.stockchangesactioned=Stock Changes Actioned
+
message.cannotsaveinventorydata=Ei saanud salvestada kaupade andmeid
message.customerdebtexceded=Kliendile lubatud krediidipiir on \u00fcletatud
@@ -479,6 +485,9 @@ stock.out.refund=(V\u00e4lja) tagastus
stock.out.sale=(V\u00e4lja) m\u00fc\u00fck
stock.in.openpack=(In) Open Pack
stock.out.openpack=(Out) Open Pack
+stock.in.stockchange=(In) Stock Change
+stock.out.stockchange=(Out) Stock Change
+
tab.cash=Raha
tab.cashrefund=Tagastus
tab.cheque=T\u00f0ekk
@@ -508,3 +517,25 @@ transpayment.debtpaid=V\u00f5lg tasutud
Visor.Title=Chromis POS - proffessionaalne avatud l\u00e4htekoodiga tarkvara.
Button.NewTicket=Uus
Button.ExecuteChart=K\u00e4ivita graafik
+label.managestock=Manage Stock Level
+Label.List=List
+label.New=New Ticket
+label.importlist=Import
+label.exportlist=Export
+label.newlist=New
+label.deletelist=Delete List
+message.asklistname=Enter List Name
+message.nameexists=Name already exists
+message.confirmdeletelist=Are you sure you want to delete this list?
+Button.Retry=Retry
+Button.Configuration=Configuration
+message.retryorconfig=Failed to find a working database.\n\nThis may be caused by :\n - A communications failure.\n - A problem with the database server.\n - A configuration issue with this till\n
+message.updatefailure=Database failed to update. With the error above.\n\nThe application can not be started until this has been resolved.\n\n
+message.createfailure=Unable to create a database.\n\n
+label.syncservertype=Synchronisation Type
+label.syncstatus=Synchronisation Status
+label.syncstats=Synchronisation Stats
+label.syncprocess=Synchronisation Process
+button.activatesync=Run Sychronisation Process
+Menu.Sync=Synchronisation
+Menu.DatabaseSync=Database Synchronisation
\ No newline at end of file
diff --git a/locales/pos_messages_fr.properties b/locales/pos_messages_fr.properties
index c0c843aa..5a097203 100644
--- a/locales/pos_messages_fr.properties
+++ b/locales/pos_messages_fr.properties
@@ -1,26 +1,20 @@
-# Openbravo POS is a point of sales application designed for touch screens.
-# Copyright (C) 2007-2009 Openbravo, S.L.
-# http://sourceforge.net/projects/openbravopos
-# Copyright (c) 2007 openTrends Solucions i Sistemes, S.L
-# Modified by Openbravo SL on March 22, 2007
-# These modifications are copyright Openbravo SL
-# Author/s: A. Romero
-# You may contact Openbravo SL at: http://www.openbravo.com
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
-# This file is part of Openbravo POS.
+# This file is part of chromis oPOS
#
-# Openbravo POS is free software: you can redistribute it and/or modify
+# Chromis POS is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
-# Openbravo POS is distributed in the hope that it will be useful,
+# Chromis POS is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with Openbravo POS. If not, see .
+# along with Chromis POS. If not, see .
Button.Cancel=Annuler
button.catalogadd=Ajouter au catalogue
@@ -37,6 +31,7 @@ button.listtickets=Lister
button.movetable=D\u00e9placer
Button.NewTicket=Nouveau
Button.OK=OK
+label.discount=Discount
button.opendrawer=Ouvrir tiroir
button.peoplepassword=Mot de passe
button.print=Imprimer
@@ -203,11 +198,14 @@ Menu.InventoryDiff=Journal d'inventaire
Menu.Locations=Entrep\u00f4ts
Menu.Main=Menu principal
Menu.Maintenance=Maintenance
-Menu.Maintenance.ERP=ERP Openbravo
+Menu.Maintenance.ERP=ERP Chromis
Menu.Maintenance.POS=Point de vente
Menu.Payments=Mouvements caisse
Menu.Printer=Imprimante
Menu.Products=Produits
+Menu.StockChanges=Stock Changes
+Menu.StockChangesReport=Stock Changes Report
+
Menu.Reports=Rapports
Menu.ReportTaxes=Taxes
Menu.Resources=Ressources
@@ -249,7 +247,7 @@ message.changepassworddistinct=La v\u00e9rification du mot de passe \u00e0 \u00e
message.closecashok=La caisse est ferm\u00e9e.
message.configfactory=Les valeurs par d\u00e9faut seront restaur\u00e9es et les valeurs actuelles seront perdues. Voulez-vous continuer ?
message.configrestore=Les valeurs initiale seront restaur\u00e9es et tous les changements seront perdus. Voulez-vous continuer ?
-message.createdatabase=Base de donnees non d\u00e9tect\u00e9e. Une base de donn\u00e9es par d\u00e9faut sera cr\u00e9e. Voulez-vous continuer ?
+message.createdatabase=Base de donnees non d\u00e9tect\u00e9e. Une base de donn\u00e9es par d\u00e9faut sera cr\u00e9e.\n\nVoulez-vous continuer ?
message.databaseconnectionerror=Connexion impossible \u00e0 la base de donn\u00e9es. Base de donn\u00e9es non disponible.
message.databasedrivererror=Connexion impossible \u00e0 la base de donn\u00e9es. Pilote de base de donn\u00e9es introuvable.
message.databasenotsupported=Base de donnees "{0}" non support\u00e9e.
@@ -274,7 +272,7 @@ message.scannerfail=L'envoi de la liste des produits a \u00e9chou\u00e9
message.scannerfail2=Le t\u00e9l\u00e9chargement de la liste des produits a \u00e9chou\u00e9
message.scannerok=La liste des produis a \u00e9t\u00e9 transmise avec succ\u00e9s.
message.title=Messages de caisse
-message.updatedatabase=Une version ant\u00e9rieure de la base de donn\u00e9es a \u00e9t\u00e9 d\u00e9tect\u00e9. La base de donn\u00e9es va \u00eatre mise \u00e0 jour. ASSUREZ-VOUS DE DISPOSER D'UNE SAUVEGARDE DES DONNEES Voulez-vous continuer ?
+message.updatedatabase=Une version ant\u00e9rieure de la base de donn\u00e9es a \u00e9t\u00e9 d\u00e9tect\u00e9. La base de donn\u00e9es va \u00eatre mise \u00e0 jour.\n\nASSUREZ-VOUS DE DISPOSER D'UNE SAUVEGARDE DES DONNEES\n\nVoulez-vous continuer ?
message.wannaclosecash=Etes-vous sur de vouloir cl\u00f4turer la caisse ?
message.wannadelete=Etes-vous sur de vouloir supprimer le ticket en cours ?
payment.title=Encaissement
@@ -296,6 +294,8 @@ stock.out.crossing=Transfert
stock.out.movement=(sortie) Mouvement
stock.out.refund=(sortie) Remboursement
stock.out.sale=(sortie) Vente
+stock.in.openpack=(In) Open Pack
+stock.out.openpack=(Out) Open Pack
tab.cash=Esp\u00e8ces
tab.cashrefund=Remboursements
tab.cheque=Ch\u00e8que
@@ -318,7 +318,7 @@ transpayment.magcardrefund=Carte remboursement
transpayment.paperin=(entr\u00e9e) Coupons
transpayment.paperout=(sortie) Coupons
transpayment.ticket=Ticket
-Visor.Title=uniCenta oPOS
+Visor.Title=Chromis POS
message.paymentgatewayswipe=Glissez la carte et appuyez sur OK.
@@ -329,6 +329,7 @@ label.placeid=N\u00b0
message.noticket=Le ticket n'existe plus.
Menu.ProductsWarehouse=Produits par entrep\u00f4t
+Menu.ProductPacks=Product Packs
message.noproduct=Aucun produit ne correspond au code saisi
@@ -354,12 +355,14 @@ label.time=Heures
label.datetime=Date Heures
scale.notdefined=Balance non d\u00e9finie
scale.invalidvalue=Valeur de balance incorrecte
+scale.weighitem=Weigh Item
+
message.noweight=Le pesage n'a pas \u00e9t\u00e9 possible.
label.scaleinput=Entrez un poids.
message.cannotloadticket=Impossible de charger le re\u00e7u.
message.notexiststicket=Le re\u00e7u n'existe pas.
label.catimage=Image
-message.noupdatescript=Une base de donn\u00e9es d'une version ant\u00e9rieure a \u00e9t\u00e9 d\u00e9tect\u00e9 mais il est impossible de mettre \u00e0 jour la base de donn\u00e9es automatiquement. Openbravo ERP va se terminer.
+message.noupdatescript=Une base de donn\u00e9es d'une version ant\u00e9rieure a \u00e9t\u00e9 d\u00e9tect\u00e9 mais il est impossible de mettre \u00e0 jour la base de donn\u00e9es automatiquement. Chromis ERP va se terminer.
label.visible=Visible
label.name=Nom
label.address=Adresse ligne 1
@@ -397,6 +400,7 @@ label.attributes=Attributs
Menu.ProductSales=Ventes par produits
Menu.ProductLabels=Etiquette produit
Menu.InventoryListDetail=Inventaire actuel d\u00e9taill\u00e9
+Menu.InventoryReOrder=Inventory: Re-Order
Menu.InventoryDiffDetail=Journal d'inventaire d\u00e9taill\u00e9
caption.split=Fractionner le re\u00e7u
label.searchkey=Mot-cl\u00e9
@@ -455,6 +459,13 @@ label.timeframe=Calendrier
label.from=De
label.to=A
label.money=Montant
+
+label.packsinstock=In stock
+label.packof= packs of
+label.packstosplit=Packs to split
+label.productinpack=Product in pack
+label.split=Split
+
label.timeperiod=P\u00e9riode
label.search=Recherche
message.cannotfindattributes=Ce produit n'a pas d'attributs.
@@ -530,7 +541,31 @@ Menu.DailyPresenceReport=Pr\u00e9sence quotidienne
Menu.CategoryProductSalesChart=Ventes de cat\u00e9gorie
Menu.PerformanceReport=Performance
message.printererror=Incapable d'imprimer le Re\u00e7u
+message.stockchangesactioned=Stock Changes Actioned
+
label.prodtax=Taxe
transpayment.bank=Banque
message.breakoverandcheckedout=le repos est sur et Checkd Out \u00e0
display.Null=pas disponible
+label.managestock=Manage Stock Level
+Label.List=List
+label.New=New Ticket
+label.importlist=Import
+label.exportlist=Export
+label.newlist=New
+label.deletelist=Delete List
+message.asklistname=Enter List Name
+message.nameexists=Name already exists
+message.confirmdeletelist=Are you sure you want to delete this list?
+Button.Retry=Retry
+Button.Configuration=Configuration
+message.retryorconfig=Failed to find a working database.\n\nThis may be caused by :\n - A communications failure.\n - A problem with the database server.\n - A configuration issue with this till\n
+message.updatefailure=Database failed to update. With the error above.\n\nThe application can not be started until this has been resolved.\n\n
+message.createfailure=Unable to create a database.\n\n
+label.syncservertype=Synchronisation Type
+label.syncstatus=Synchronisation Status
+label.syncstats=Synchronisation Stats
+label.syncprocess=Synchronisation Process
+button.activatesync=Run Sychronisation Process
+Menu.Sync=Synchronisation
+Menu.DatabaseSync=Database Synchronisation
\ No newline at end of file
diff --git a/locales/Croatian/locales/pos_messages_hr.properties b/locales/pos_messages_hr.properties
similarity index 91%
rename from locales/Croatian/locales/pos_messages_hr.properties
rename to locales/pos_messages_hr.properties
index b4eee685..d28ff281 100644
--- a/locales/Croatian/locales/pos_messages_hr.properties
+++ b/locales/pos_messages_hr.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -31,6 +31,7 @@ button.listtickets=Popis
button.movetable=Makni
Button.NewTicket=Novo
Button.OK=U redu
+label.discount=Discount
button.opendrawer=Otvori ladicu
button.peoplepassword=Lozinka
button.print=Ispis
@@ -204,8 +205,6 @@ Menu.Printer=Pisa\u010d
Menu.Products=Artikli
Menu.StockChanges=Stock Changes
Menu.StockChangesReport=Stock Changes Report
-Menu.Promotions=Promotions
-Menu.PromotionsReport=Promotions Report
Menu.Reports=Izvje\u0161taji
Menu.ReportTaxes=Izvje\u0161taj poreza
@@ -248,7 +247,7 @@ message.changepassworddistinct=Unesena lozinka mora odgovarati novoj lozinki.
message.closecashok=Kasa je uspje\u0161no zatvorena.
message.configfactory=Tvorni\u010dke vrijednosti \u0107e biti ponovno u\u010ditane i trenutne vrijednosti \u0107e biti izgubljene. \u017delite li nastaviti?
message.configrestore=Po\u010detne vrijednosti \u0107e biti u\u010ditane i promjene \u0107e biti izgubljene. \u017delite li nastaviti?
-message.createdatabase=Nemogu\u0107e detektirati trenutnu bazu podataka. Po\u010detna baza \u0107e biti kreirana. \u017delite li nastaviti?
+message.createdatabase=Nemogu\u0107e detektirati trenutnu bazu podataka. Po\u010detna baza \u0107e biti kreirana.\n\n\u017delite li nastaviti?
message.databaseconnectionerror=Nemogu\u0107e spajanje sa bazom podataka. Baza podataka nije dostupna.
message.databasedrivererror=Nemogu\u0107e spajanje sa bazom podataka. Nije prona\u0111en upravlja\u010dki program baze podataka.
message.databasenotsupported=Baza podataka "{0}" nije podr\u017eana.
@@ -273,7 +272,7 @@ message.scannerfail=Nije uspjelo u\u010ditavanje popisa artikala.
message.scannerfail2=Nije uspjelo skidanje popisa artikala.
message.scannerok=Popis artikala je uspje\u0161no u\u010ditan.
message.title=Poruka kase
-message.updatedatabase=Baza podataka iz prethodne verzije je detektirana. Baza \u0107e automatski biti nadopunjena. MOGU\u0106 GUBITAK PODATAKA. PRVO KREIRAJTE BACKUP. \u017delite li nastaviti?
+message.updatedatabase=Baza podataka iz prethodne verzije je detektirana. Baza \u0107e automatski biti nadopunjena.\n\n MOGU\u0106 GUBITAK PODATAKA. PRVO KREIRAJTE BACKUP.\n\n\u017delite li nastaviti?
message.wannaclosecash=Jeste li sigurni da \u017eelite napraviti obra\u010dun kase?
message.wannadelete=Jeste li sigurni da \u017eelite izbrisati trenutni ra\u010dun?
payment.title=Pla\u0107anje
@@ -478,3 +477,25 @@ message.stockchangesactioned=Stock Changes Actioned
label.byproduct=Po artiklu
label.all=Sve
button.NewTicket=Novo
+label.managestock=Manage Stock Level
+Label.List=List
+label.New=New Ticket
+label.importlist=Import
+label.exportlist=Export
+label.newlist=New
+label.deletelist=Delete List
+message.asklistname=Enter List Name
+message.nameexists=Name already exists
+message.confirmdeletelist=Are you sure you want to delete this list?
+Button.Retry=Retry
+Button.Configuration=Configuration
+message.retryorconfig=Failed to find a working database.\n\nThis may be caused by :\n - A communications failure.\n - A problem with the database server.\n - A configuration issue with this till\n
+message.updatefailure=Database failed to update. With the error above.\n\nThe application can not be started until this has been resolved.\n\n
+message.createfailure=Unable to create a database.\n\n
+label.syncservertype=Synchronisation Type
+label.syncstatus=Synchronisation Status
+label.syncstats=Synchronisation Stats
+label.syncprocess=Synchronisation Process
+button.activatesync=Run Sychronisation Process
+Menu.Sync=Synchronisation
+Menu.DatabaseSync=Database Synchronisation
\ No newline at end of file
diff --git a/locales/pos_messages_it.properties b/locales/pos_messages_it.properties
index 9958bdf1..d563098d 100644
--- a/locales/pos_messages_it.properties
+++ b/locales/pos_messages_it.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -36,6 +36,7 @@ button.listtickets=Elenca
button.migrate=Migra Database
button.movetable=Muovi
button.NewTicket=Nuova
+label.discount=Discount
Button.OK=OK
button.opendrawer=Apri Cassetto
button.pay=Paga
@@ -438,8 +439,8 @@ Menu.ExtendedSales=Vendite esteso
Menu.Floors=Piani
-Menu.Import=Importa CSV
-Menu.Import.Reports=Rapporto Importazione CSV
+Menu.Import=Importa
+Menu.Import.Reports=Rapporto Importazione
Menu.InvalidData=Trovati dati non validi o duplicati
Menu.Inventory=Inventario
Menu.Inventory2=Inventario Corrente
@@ -468,6 +469,8 @@ Menu.Products=Prodotti
Menu.ProductSales=Vendite Prodotti
Menu.ProductsWarehouse=Posizione Prodotti
Menu.ProductPacks=Product Packs
+Menu.StockChanges=Stock Changes
+Menu.StockChangesReport=Stock Changes Report
Menu.Reports=Rapporti
Menu.ReportTaxes=Sommario Tasse
@@ -540,8 +543,7 @@ message.changeserver=Cambiare il server corrente \u00e8 in fase di sviluppo
message.closecashok=Cassa Chiusa OK
message.configfactory=Sei sicuro di voler ripristinare i valori di default?
message.configrestore=Sei sicuro di volere annullare i cambiamenti?
-message.createdatabase=Non \u00e8 stato trovato nessun database. Sar\u00e0 creato un database di default. Vuoi Continuare?
-message.createdatabasejl=Necessarie informazioni per creare il nuovo database cambiamenti per John L. Questo sar\u00e0 fatto. Vuoi Continuare? In caso contrario, non sar\u00e0 possibile utilizzare il sistema.
+message.createdatabase=Non \u00e8 stato trovato nessun database. Sar\u00e0 creato un database di default.\n\nVuoi Continuare?
message.customerdebtexceded=Limite Credito Cliente Superato
message.databaseconnectionerror=Impossibile connettersi al Database: Database non disponibile
@@ -586,6 +588,7 @@ message.paymentrefundsnotsupported=Rimborso non supportato
message.preparescanner=Preparare lo scanner ScanPal per caricare la lista prodotti, quindi premere OK
message.printererror=Impossibile Stampare La Ricevuta
message.productnotselected=Nessun prodotto Selezionato
+message.stockchangesactioned=Stock Changes Actioned
message.restartchanges=Configurazione salvata con successo. Le modifiche saranno applicate al prossimo avvio
@@ -599,8 +602,7 @@ message.tableempty=Tavolo Libero
message.tablefull=Tavolo Occupato
message.title=Messaggio registratore di cassa
-message.updatedatabase=\u00c8 stato rilevato un database da una versione precedente. Il database verr\u00e0 aggiornato automaticamente. I DATI POTREBBERO ANDARE PERSI. CREARE PRIMA UN BACKUP. Vuoi continuare?
-message.updatedatabasejl=Sono necessarie modifiche nuovo database (John l changes). Il database verr\u00e0 aggiornato automaticamente. I DATI POTREBBERO ANDARE PERSI. CREARE PRIMA UN BACKUP. Vuoi continuare? In caso contrario, non sar\u00e0 possibile utilizzare il sistema.
+message.updatedatabase=\u00c8 stato rilevato un database da una versione precedente. Il database verr\u00e0 aggiornato automaticamente.\n\nI DATI POTREBBERO ANDARE PERSI. CREARE PRIMA UN BACKUP.\n\nVuoi continuare?
message.wannaclosecash=Sei sicuro di voler chiudere la Cassa?
message.wannadelete=Sei sicuro di voler eliminare l'attuale ordine?
@@ -642,6 +644,9 @@ stock.out.refund=(Usc.) Rimborso
stock.out.sale=(Usc.) Vendita
stock.in.openpack=(In) Open Pack
stock.out.openpack=(Out) Open Pack
+stock.in.stockchange=(In) Stock Change
+stock.out.stockchange=(Out) Stock Change
+
tab.bank=Banca
tab.cash=Cassa
tab.cashrefund=Rimborso
@@ -738,3 +743,25 @@ label.CatalogueStatusYes=In Catalogo
label.CatalogueStatusNo=Non In Catalogo
label.Transactions=Transazioni
label.photo=Foto
+label.managestock=Manage Stock Level
+Label.List=List
+label.New=New Ticket
+label.importlist=Import
+label.exportlist=Export
+label.newlist=New
+label.deletelist=Delete List
+message.asklistname=Enter List Name
+message.nameexists=Name already exists
+message.confirmdeletelist=Are you sure you want to delete this list?
+Button.Retry=Retry
+Button.Configuration=Configuration
+message.retryorconfig=Failed to find a working database.\n\nThis may be caused by :\n - A communications failure.\n - A problem with the database server.\n - A configuration issue with this till\n
+message.updatefailure=Database failed to update. With the error above.\n\nThe application can not be started until this has been resolved.\n\n
+message.createfailure=Unable to create a database.\n\n
+label.syncservertype=Synchronisation Type
+label.syncstatus=Synchronisation Status
+label.syncstats=Synchronisation Stats
+label.syncprocess=Synchronisation Process
+button.activatesync=Run Sychronisation Process
+Menu.Sync=Synchronisation
+Menu.DatabaseSync=Database Synchronisation
\ No newline at end of file
diff --git a/locales/pos_messages_nl.properties b/locales/pos_messages_nl.properties
index 5a99c2ea..194e934d 100644
--- a/locales/pos_messages_nl.properties
+++ b/locales/pos_messages_nl.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -26,6 +26,7 @@ Button.CloseCash=Close Cash
Button.DeleteTicket=Delete
button.Discount=Discount
button.edit=Edit
+label.discount=Discount
button.ExecuteChart=Execute Chart
button.executefilter=Run Filter
Button.ExecuteReport=Run Report
@@ -332,6 +333,8 @@ Menu.ProductPriceList=Prijslijst
Menu.ProductSales=Product verkopen
Menu.ProductsWarehouse=Producten per warenhuis
Menu.ProductPacks=Product Packs
+Menu.StockChanges=Stock Changes
+Menu.StockChangesReport=Stock Changes Report
Menu.Reports=Rapporten
Menu.ReportTaxes=Belastingen
@@ -390,7 +393,7 @@ message.changepassworddistinct=Beide wachtwoorden dienen overeen te komen
message.closecashok=Deze kassa is nu afgesloten.
message.configfactory=Standaard waarden zullen worden hersteld. Veranderingen zullen hierdoor verloren gaan. Wilt u verder gaan?
message.configrestore=Initiele waarden zullen worden hersteld. Veranderingen zullen hierdoor verloren gaan. Wilt u verder gaan?
-message.createdatabase=Er kan geen bestaande database worden gevonden. Er wordt een standaard database gecre\u00ebrd. Wilt u verder gaan?
+message.createdatabase=Er kan geen bestaande database worden gevonden. Er wordt een standaard database gecre\u00ebrd.\n\nWilt u verder gaan?
message.customerdebtexceded=De klant zit boven toegestaan krediet.
message.databaseconnectionerror=Fout\: kan niet verbinden met database. Database niet beschikbaar
message.databasedrivererror=Fout\: kan niet verbinden met database. Database stuurprogramma niet gevonden.
@@ -426,6 +429,8 @@ message.paymentrefundsnotsupported=Teruggeven niet ondersteund.
message.preparescanner=Bereid de scanner voor om de productlijst te verzenden en druk op OK.
message.printererror=De rekening kan niet geprint worden
message.productnotselected=Geen product geselcteerd.
+message.stockchangesactioned=Stock Changes Actioned
+
message.restartchanges=De configuratie is weggeschreven.
message.scannerfail=Het verzenden van de productlijst is mislukt.
message.scannerfail2=U bent niet bevoegd om deze taak uit te voeren.
@@ -433,7 +438,7 @@ message.scannerok=Het verzenden van de productlijst is gelukt.
message.tableempty=De tafel is nu leeg.
message.tablefull=De tafel is nu bezet.
message.title=Kassa bericht
-message.updatedatabase=Een database van een eerdere versie werd gedetecteerd. De database zal opgewaardeed worden. ALLE GEGEVENS GAAN VERLOREN. MAAK EERST EEN BACKUP. Doorgaan?
+message.updatedatabase=Een database van een eerdere versie werd gedetecteerd. De database zal opgewaardeed worden.\n\nALLE GEGEVENS GAAN VERLOREN. MAAK EERST EEN BACKUP.\n\nDoorgaan?
message.wannaclosecash=Weet u zeker dat u deze kassa wilt afsluiten?
message.wannadelete=Weet u zeker dat deze kassabon verwijderd moet worden?
message.wannasave=Wilt U de wijzigingen opslaan alvorens af te sluiten?
@@ -467,6 +472,9 @@ stock.out.refund=(uit) Teruggave
stock.out.sale=(uit) Verkoop
stock.in.openpack=(In) Open Pack
stock.out.openpack=(Out) Open Pack
+stock.in.stockchange=(In) Stock Change
+stock.out.stockchange=(Out) Stock Change
+
tab.cash=Contant
tab.cashrefund=Teruggave
tab.cheque=Cheque
@@ -493,4 +501,26 @@ transpayment.magcardrefund=PIN teruggaaf
transpayment.paperin=Waardebon invoer
transpayment.paperout=Waardebon uitvoer
-Visor.Title=Chromis POS
\ No newline at end of file
+Visor.Title=Chromis POS
+label.managestock=Manage Stock Level
+Label.List=List
+label.New=New Ticket
+label.importlist=Import
+label.exportlist=Export
+label.newlist=New
+label.deletelist=Delete List
+message.asklistname=Enter List Name
+message.nameexists=Name already exists
+message.confirmdeletelist=Are you sure you want to delete this list?
+Button.Retry=Retry
+Button.Configuration=Configuration
+message.retryorconfig=Failed to find a working database.\n\nThis may be caused by :\n - A communications failure.\n - A problem with the database server.\n - A configuration issue with this till\n
+message.updatefailure=Database failed to update. With the error above.\n\nThe application can not be started until this has been resolved.\n\n
+message.createfailure=Unable to create a database.\n\n
+label.syncservertype=Synchronisation Type
+label.syncstatus=Synchronisation Status
+label.syncstats=Synchronisation Stats
+label.syncprocess=Synchronisation Process
+button.activatesync=Run Sychronisation Process
+Menu.Sync=Synchronisation
+Menu.DatabaseSync=Database Synchronisation
\ No newline at end of file
diff --git a/locales/pos_messages_pt.properties b/locales/pos_messages_pt.properties
index 597a228a..121b14c7 100644
--- a/locales/pos_messages_pt.properties
+++ b/locales/pos_messages_pt.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -30,6 +30,7 @@ Button.Factory=Valores de f\u00e1brica
button.listtickets=Lista
button.movetable=Mover
Button.NewTicket=Novo
+label.discount=Discount
Button.OK=Aceitar
button.opendrawer=Abrir gaveta
button.peoplepassword=Password
@@ -202,6 +203,9 @@ Menu.Maintenance.POS=Ponto de venda
Menu.Payments=Pagamentos
Menu.Printer=Impressora
Menu.Products=Produtos
+Menu.StockChanges=Stock Changes
+Menu.StockChangesReport=Stock Changes Report
+
Menu.Reports=Relat\u00f3rios
Menu.ReportTaxes=Taxas
Menu.Resources=Recursos
@@ -243,7 +247,7 @@ message.changepassworddistinct=A repeti\u00e7\u00e3o de password dever\u00e1 ser
message.closecashok=Caixa fechada com sucesso.
message.configfactory=Ser\u00e3o repostos os valores de f\u00e1brica e os valores correntes ser\u00e3o perdidos. Deja continuar?
message.configrestore=Initial values will be restored and changes will be lost. Do you want to continue?
-message.createdatabase=A working database cannot be detected. A default database will be created. Do you want to continue?
+message.createdatabase=A working database cannot be detected. A default database will be created.\n\nDo you want to continue?
message.databaseconnectionerror=Cannot connect to database. Database not available.
message.databasedrivererror=Cannot connect to database. Database driver not found
message.databasenotsupported=Database "{0}" not supported.
@@ -268,7 +272,7 @@ message.scannerfail=Error ao enviar lista de produtos.
message.scannerfail2=Erro ao receber lista de produtos.
message.scannerok=The products list has been uploaded successfully.
message.title=Menssagem de caixa registradora
-message.updatedatabase=A database from a previous version has been detected. The database will be upgraded automatically. DATA MAY BE LOST. CREATE FIRST A BACKUP. Do you want to continue?
+message.updatedatabase=A database from a previous version has been detected. The database will be upgraded automatically.\n\nDATA MAY BE LOST. CREATE FIRST A BACKUP.\n\nDo you want to continue?
message.wannaclosecash=Tem a certeza que deseja fechar caixa?
message.wannadelete=Tem a certeza que deseja apagar o recibo corrente?
payment.title=Pagamento
@@ -292,6 +296,9 @@ stock.out.refund=(sa\u00edda) Restitui\u00e7\u00e3o
stock.out.sale=(sa\u00edda) Venda
stock.in.openpack=(In) Open Pack
stock.out.openpack=(Out) Open Pack
+stock.in.stockchange=(In) Stock Change
+stock.out.stockchange=(Out) Stock Change
+
tab.cash=Caixa
tab.cashrefund=Restitui\u00e7\u00e3o
tab.cheque=Cheque
@@ -421,3 +428,25 @@ button.setperson=Gar\u00e7om
Button.PrintCash=Imprimir
database.ScriptError=N\u00e3o pode executar o manuscrito de cria\u00e7\u00e3o de base de dados.
database.ScriptWarning=Manuscrito de cria\u00e7\u00e3o n\u00e3o correu com \u00eaxito.
+label.managestock=Manage Stock Level
+Label.List=List
+label.New=New Ticket
+label.importlist=Import
+label.exportlist=Export
+label.newlist=New
+label.deletelist=Delete List
+message.asklistname=Enter List Name
+message.nameexists=Name already exists
+message.confirmdeletelist=Are you sure you want to delete this list?
+Button.Retry=Retry
+Button.Configuration=Configuration
+message.retryorconfig=Failed to find a working database.\n\nThis may be caused by :\n - A communications failure.\n - A problem with the database server.\n - A configuration issue with this till\n
+message.updatefailure=Database failed to update. With the error above.\n\nThe application can not be started until this has been resolved.\n\n
+message.createfailure=Unable to create a database.\n\n
+label.syncservertype=Synchronisation Type
+label.syncstatus=Synchronisation Status
+label.syncstats=Synchronisation Stats
+label.syncprocess=Synchronisation Process
+button.activatesync=Run Sychronisation Process
+Menu.Sync=Synchronisation
+Menu.DatabaseSync=Database Synchronisation
\ No newline at end of file
diff --git a/locales/pos_messages_pt_BR.properties b/locales/pos_messages_pt_BR.properties
index 109ceff4..75e04650 100644
--- a/locales/pos_messages_pt_BR.properties
+++ b/locales/pos_messages_pt_BR.properties
@@ -1,5 +1,5 @@
# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
#
# This file is part of chromis oPOS
#
@@ -31,6 +31,7 @@ button.listtickets=Lista
button.movetable=Mover
Button.NewTicket=Novo
Button.OK=OK
+label.discount=Discount
button.opendrawer=Abrir gaveta
button.peoplepassword=Senha
button.print=Imprimir
@@ -203,6 +204,9 @@ Menu.Maintenance.POS=Ponto de venda
Menu.Payments=Pagamentos
Menu.Printer=impressora
Menu.Products=Produtos
+Menu.StockChanges=Stock Changes
+Menu.StockChangesReport=Stock Changes Report
+
Menu.Reports=Relat\u00f3rios
Menu.ReportTaxes=Impostos
Menu.Resources=Recursos
@@ -244,7 +248,7 @@ message.changepassworddistinct=A senha deve ser igual a nova senha.
message.closecashok=O caixa foi fechado com sucesso.
message.configfactory=Valores de f\u00e1brica ser\u00e3o restaurados e os valores correntes ser\u00e3o perdidos. Deseja continuar?
message.configrestore=Valores iniciais ser\u00e3o restaurados e as modifica\u00e7\u00f5es ser\u00e3o perdidas. Deseja continuar?
-message.createdatabase=O banco de dados de trabalho n\u00e3o pode ser detectado. Um banco de dados padr\u00e3o ser\u00e1 criado. Deseja continuar ?
+message.createdatabase=O banco de dados de trabalho n\u00e3o pode ser detectado. Um banco de dados padr\u00e3o ser\u00e1 criado.\n\n Deseja continuar ?
message.databaseconnectionerror=N\u00e3o \u00e9 poss\u00edvel conectar ao banco de dados. Banco de dados n\u00e3o dispon\u00edvel.
message.databasedrivererror=N\u00e3o \u00e9 poss\u00edvel conectar ao banco de dados. Driver do banco de dados n\u00e3o encontrado
message.databasenotsupported=Database "{0}" n\u00e3o suportado.
@@ -269,7 +273,7 @@ message.scannerfail=Envio da lista de produto falhou.
message.scannerfail2=Recebimento da lista de produto falhou.
message.scannerok=A lista de produtos foi enviada com sucesso.
message.title=Mensagem de registro de caixa
-message.updatedatabase=Um banco de dados de uma vers\u00e3o pr\u00e9via foi encontrado. O banco de dados foi atualizado automaticamente. DADOS PODEM SER PERDIDOS. CRIE PRIMEIRAMENTE UMA C\u00d2PIA DE SEGURAN\u00c7A. Deseja continuar?
+message.updatedatabase=Um banco de dados de uma vers\u00e3o pr\u00e9via foi encontrado. O banco de dados foi atualizado automaticamente.\n\nDADOS PODEM SER PERDIDOS. CRIE PRIMEIRAMENTE UMA C\u00d2PIA DE SEGURAN\u00c7A.\n\nDeseja continuar?
message.wannaclosecash=Voc\u00ea esta certo de que deseja fechar o caixa?
message.wannadelete=Voc\u00ea tem certeza de que deseja eliminar o recebimento corrente?
payment.title=Pagamento
@@ -293,6 +297,9 @@ stock.out.refund=(saida) estorno
stock.out.sale=(saida) venda
stock.in.openpack=(In) Open Pack
stock.out.openpack=(Out) Open Pack
+stock.in.stockchange=(In) Stock Change
+stock.out.stockchange=(Out) Stock Change
+
tab.cash=Dinheiro
tab.cashrefund=Estorno
tab.cheque=Cheque
@@ -369,3 +376,25 @@ button.totaldiscount=Rabatt
caption.split=Divida recibo
database.ScriptError=N\u00e3o pode executar o manuscrito de cria\u00e7\u00e3o de base de dados.
database.ScriptWarning=Manuscrito de cria\u00e7\u00e3o n\u00e3o correu com \u00eaxito.
+label.managestock=Manage Stock Level
+Label.List=List
+label.New=New Ticket
+label.importlist=Import
+label.exportlist=Export
+label.newlist=New
+label.deletelist=Delete List
+message.asklistname=Enter List Name
+message.nameexists=Name already exists
+message.confirmdeletelist=Are you sure you want to delete this list?
+Button.Retry=Retry
+Button.Configuration=Configuration
+message.retryorconfig=Failed to find a working database.\n\nThis may be caused by :\n - A communications failure.\n - A problem with the database server.\n - A configuration issue with this till\n
+message.updatefailure=Database failed to update. With the error above.\n\nThe application can not be started until this has been resolved.\n\n
+message.createfailure=Unable to create a database.\n\n
+label.syncservertype=Synchronisation Type
+label.syncstatus=Synchronisation Status
+label.syncstats=Synchronisation Stats
+label.syncprocess=Synchronisation Process
+button.activatesync=Run Sychronisation Process
+Menu.Sync=Synchronisation
+Menu.DatabaseSync=Database Synchronisation
\ No newline at end of file
diff --git a/locales/reports_messages_es.properties b/locales/reports_messages_es.properties
new file mode 100644
index 00000000..5c872309
--- /dev/null
+++ b/locales/reports_messages_es.properties
@@ -0,0 +1,203 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+label.actualprofit=Beneficio Actual
+label.actualsalesvalue=Valor Actual de Ventas
+label.address=Domicilio
+label.address2=null
+label.amount=Suma
+label.axisx=Efectivo
+label.axisy=Ventas
+label.barcode=C\u00f3digo de Barras
+label.buy=Compra
+label.cash=Efectivo
+label.category=Categor\u00eda Err\u00f3nea
+label.catprice=Precio
+label.catsales=Ventas
+label.cattax=Impuesto
+label.cattotal=Total
+label.city=null
+label.closedate=Fechas de cierre
+label.closeddate=Fecha
+label.code=C\u00f3digo de Barras
+label.contact=null
+label.cost=Coste
+label.costvalue=null
+label.csverror=Mensaje de Error
+label.curdate=Fecha de d\u00e9bito
+label.curdebt=A cuenta
+label.customer=Cliente
+label.date=Fecha
+label.diff=Diferencia
+label.disc=Desc.
+label.discount=null
+label.email=null
+label.end=Final Ausencia
+label.enddate=Fecha Fin
+label.expectedprofit=Beneficio Esperado
+label.expectedsalesvalue=Valor Esperado de Ventas
+label.firstname=null
+label.gross=null
+label.gtotal=null
+label.host=Cajero
+label.hostsequence=Secuencia
+label.in=Entradas
+label.lastname=null
+label.location=Almac\u00e9n :
+label.margin=Margen
+label.max=M\u00e1ximo
+label.maxdebt=M\u00e1ximo a cuenta
+label.meanprice=Precio Medio
+label.money=null
+label.name=Nombre
+label.nocategory=(Sin Categor\u00eda definida)
+label.nocustomer=(Sin Cliente definido)
+label.noproduct=(Sin Producto definido)
+label.noreference=
+label.noreferency=
+label.notaxid=
+label.notes=Notas
+label.out=Salidas
+label.partialsubtotal=Subtotal
+label.partialtax=Impuestos
+label.partialtotal=Total
+label.payment=Pago
+label.paymentnotes=null
+label.paymenttype=Tipo de Pago
+label.period=Per\u00edodo
+label.phone=null
+label.pietitlecost=Coste Valor de Ventas
+label.pietitleunit=Cant Volumen de Ventas
+label.postal=null
+label.previousbuy=Precio de Compra Anterior
+label.previoussell=Precio de Venta Anterior
+label.price=Precio Neto
+label.pricebuy=Nuevo Precio de Compra
+label.pricesell=Nuevo Precio de Venta
+label.pricetax=Precio + IVA
+label.printed=Impreso
+label.prodpricebuy=Precio Compra
+label.prodpricesell=Precio Venta
+label.prodpriceselltax=Precio Venta + IVA
+label.prodref=Referencia
+label.prodstockcost=Coste Stock por A\u00f1o
+label.prodstockvol=Volumen Stock
+label.product=Producto
+label.productname=Producto
+label.produnitsales=Ventas por D\u00eda
+label.profitloss=Beneficio/P\u00e9rdida
+label.ptotal=null
+label.qty=Cant
+label.ref=Ref.
+label.reference=Referencia
+label.row=Fila en Fichero
+label.sales=Ventas
+label.sec=M\u00ednimo
+label.sell=Venta
+label.soldunits=null
+label.start=Inicio Ausencia
+label.startdate=Fecha Iinicio
+label.subtotal=Neto
+label.sum=Suma
+label.sumdiff=Total diferencia
+label.sumin=Total entradas
+label.sumout=Total salidas
+label.sumtotal=Total por Ventas
+label.supplierpin=PIN del Proveedor
+label.tax=Impuestos
+label.taxcategory=Categor\u00eda de Impuesto
+label.taxes=Impuestos
+label.taxid=ID
+label.taxname=Nombre
+label.taxrate=Tasa de IVA
+label.taxtotal=Total
+label.telephone=null
+label.terminaltotal=null
+label.ticket=Ticket No.
+label.title_badprice=Nuevos Productos A\u00f1adidos
+label.title_barcodesheet=C\u00f3digo de Barras
+label.title_cashflow=Informe de Cash-Flow
+label.title_cashregisterlog=Registro de Transacciones
+label.title_categorysales=Ventas por Categor\u00eda
+label.title_chartsales=Gr\u00e1fico de ventas
+label.title_closedpos=Cierres de caja
+label.title_closedposb=null
+label.title_closedproducts= Ventas de productos
+label.title_closedproductsb=null
+label.title_customers=Clientes
+label.title_customersdiary=Diario de clientes
+label.title_dailypresence=Presencia Diaria
+label.title_dailyschedule=Agenda Diaria
+label.title_employeetimesheet=null
+label.title_extendedcashregisterlog=Registro de Transacciones - Extendido
+label.title_extproducts=Ventas de Producto - Extendido
+label.title_invalidcategory=Datos de Categor\u00eda no V\u00e1lidos
+label.title_invaliddata=Dato de producto no V\u00e1lido
+label.title_inventory=Almacenes
+label.title_inventoryb=Existencias
+label.title_inventorydiff=Diario de existencias
+label.title_inventorydiffdetail=Detalle de diario de existencias
+label.title_inventorylistdetail= Inventario: Detalle Listado
+label.title_inventoryreorder=Inventario: Re-Ordenar
+label.title_missingdata=Datos que Faltan o Precio no V\u00c3\u00a1lido en archivo
+label.title_newproducts=Nuevos Productos A\u00f1adidos
+label.title_paymentreport=Informe de Pagos
+label.title_people=Usuarios
+label.title_performancereport=Informe de Desempe\u00f1o
+label.title_piesalescat=Ventas por Categor\u00eda de Producto
+label.title_productlabels=Etiquetas de productos
+label.title_products=Listado de productos
+label.title_productsales=Ventas de productos
+label.title_productsalesprofit=Ventas de Producto: Beneficio
+label.title_productscatalog=Cat\u00e1logo de productos
+label.title_salebycustomer=Ventas por Cliente
+label.title_salecatalog=Cat\u00e1logo de Ventas
+label.title_saletaxes=Impuestos de Ventas
+label.title_stockchanges=Cambios Inventario
+label.title_taxcatsales=Ventas por Impuesto y Categor\u00eda
+label.title_taxes=Impuestos repercutidos
+label.title_timeseriesproduct=Gr\u00e1fico de Ventas de Producto Por Series de Tiempo
+label.title_top10sales=Ventas Top 10
+label.title_updatedprices=Actualizaciones de Precio
+label.title_usersales=Caja por vendedor
+label.total=Total:
+label.total_dailypresence=null
+label.ttotal=null
+label.ttype=Tipo
+label.units=Unidades
+label.user=Vendedor
+label.value=null
+label.valuebuy=Valor compra
+label.valuecost=Costo
+label.valuesell=Valor venta
+label.valuevolume=Volumen
+transpayment.bank=Banco
+transpayment.cash=Efectivo
+transpayment.cashin=(entrada) Efectivo
+transpayment.cashout=(entrada) Efectivo
+transpayment.cashrefund=Devoluci\u00f3n Efectivo
+transpayment.cheque=Cheque
+transpayment.chequerefund=Devoluci\u00f3n Cheque
+transpayment.debt=A Cuenta
+transpayment.debtpaid=A Cuenta Pagado
+transpayment.free=Sin Cargo
+transpayment.magcard=Tarjeta
+transpayment.magcardrefund=Devoluci\u00f3n Tarjeta
+transpayment.paperin=Vales Cobrados
+transpayment.paperout=Vales Entregados
+transpayment.ticket=Ticket
diff --git a/migrate.command b/migrate.command
index 3f2fa8e0..b384eb0e 100644
--- a/migrate.command
+++ b/migrate.command
@@ -1,54 +1,26 @@
#!/bin/sh
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015
-# http://www.chromis.co.uk
-#
-# This file is part of Chromis POS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see
-#
+
DIRNAME=`dirname $0`
CP=$DIRNAME/chromispos.jar
-CP=$CP:$DIRNAME/libjasperreports-4.5.1.jar
-CP=$CP:$DIRNAME/lib/jcommon-1.0.15.jar
-CP=$CP:$DIRNAME/lib/jfreechart-1.0.12.jar
-CP=$CP:$DIRNAME/lib/jdt-compiler-3.1.1.jar
-CP=$CP:$DIRNAME/lib/commons-beanutils-1.8.3.jar
-CP=$CP:$DIRNAME/lib/commons-digester-2.1.jar
-CP=$CP:$DIRNAME/lib/iText-2.1.7.jar
-CP=$CP:$DIRNAME/lib/poi-3.8-20120326.jar
-CP=$CP:$DIRNAME/lib/barcode4j-2.0.jar
-CP=$CP:$DIRNAME/lib/commons-codec-1.4.jar
-CP=$CP:$DIRNAME/lib/velocity-1.7-dep.jar
-CP=$CP:$DIRNAME/lib/commons-collections-3.2.1.jar
-CP=$CP:$DIRNAME/lib/commons-lang-2.4.jar
-CP=$CP:$DIRNAME/lib/bsh-core-2.0b4.jar
-CP=$CP:$DIRNAME/lib/RXTXcomm.jar
-CP=$CP:$DIRNAME/lib/jpos1121.jar
-CP=$CP:$DIRNAME/lib/swingx-all-1.6.4.jar
-CP=$CP:$DIRNAME/lib/substance.jar
-CP=$CP:$DIRNAME/lib/substance-swingx.jar
-
-# Apache Axis SOAP libraries.
-CP=$CP:$DIRNAME/lib/axis.jar
-CP=$CP:$DIRNAME/lib/jaxrpc.jar
-CP=$CP:$DIRNAME/lib/saaj.jar
-CP=$CP:$DIRNAME/lib/wsdl4j-1.5.1.jar
-CP=$CP:$DIRNAME/lib/commons-discovery-0.4.jar
-CP=$CP:$DIRNAME/lib/commons-logging-1.1.jar
+CP=$CP:$DIRNAME/lib/
CP=$CP:$DIRNAME/locales/
+CP=$CP:$DIRNAME/locales/Albanian
+CP=$CP:$DIRNAME/reports/American
+CP=$CP:$DIRNAME/locales/Arabic
+CP=$CP:$DIRNAME/locales/Argentinian
+CP=$CP:$DIRNAME/locales/Brazilian
+CP=$CP:$DIRNAME/locales/Croatian
+CP=$CP:$DIRNAME/locales/Dutch
+CP=$CP:$DIRNAME/locales/English
+CP=$CP:$DIRNAME/locales/Estonian
+CP=$CP:$DIRNAME/locales/French
+CP=$CP:$DIRNAME/locales/German
+CP=$CP:$DIRNAME/locales/Italian
+CP=$CP:$DIRNAME/locales/Mexican
+CP=$CP:$DIRNAME/locales/Portuguese
+CP=$CP:$DIRNAME/locales/Spanish
CP=$CP:$DIRNAME/reports/
+
java -cp $CP -Djava.library.path=$DIRNAME/lib/Linux -Ddirname.path="$DIRNAME" uk.chromis.pos.migrate.JFrmMigrate $1
diff --git a/migrate.sh b/migrate.sh
index 3f2fa8e0..626b7a61 100644
--- a/migrate.sh
+++ b/migrate.sh
@@ -1,54 +1,41 @@
#!/bin/sh
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015
-# http://www.chromis.co.uk
-#
-# This file is part of Chromis POS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see
-#
+
+
DIRNAME=`dirname $0`
CP=$DIRNAME/chromispos.jar
-CP=$CP:$DIRNAME/libjasperreports-4.5.1.jar
-CP=$CP:$DIRNAME/lib/jcommon-1.0.15.jar
-CP=$CP:$DIRNAME/lib/jfreechart-1.0.12.jar
-CP=$CP:$DIRNAME/lib/jdt-compiler-3.1.1.jar
-CP=$CP:$DIRNAME/lib/commons-beanutils-1.8.3.jar
-CP=$CP:$DIRNAME/lib/commons-digester-2.1.jar
-CP=$CP:$DIRNAME/lib/iText-2.1.7.jar
-CP=$CP:$DIRNAME/lib/poi-3.8-20120326.jar
-CP=$CP:$DIRNAME/lib/barcode4j-2.0.jar
-CP=$CP:$DIRNAME/lib/commons-codec-1.4.jar
-CP=$CP:$DIRNAME/lib/velocity-1.7-dep.jar
-CP=$CP:$DIRNAME/lib/commons-collections-3.2.1.jar
-CP=$CP:$DIRNAME/lib/commons-lang-2.4.jar
-CP=$CP:$DIRNAME/lib/bsh-core-2.0b4.jar
-CP=$CP:$DIRNAME/lib/RXTXcomm.jar
-CP=$CP:$DIRNAME/lib/jpos1121.jar
-CP=$CP:$DIRNAME/lib/swingx-all-1.6.4.jar
-CP=$CP:$DIRNAME/lib/substance.jar
-CP=$CP:$DIRNAME/lib/substance-swingx.jar
-
-# Apache Axis SOAP libraries.
-CP=$CP:$DIRNAME/lib/axis.jar
-CP=$CP:$DIRNAME/lib/jaxrpc.jar
-CP=$CP:$DIRNAME/lib/saaj.jar
-CP=$CP:$DIRNAME/lib/wsdl4j-1.5.1.jar
-CP=$CP:$DIRNAME/lib/commons-discovery-0.4.jar
-CP=$CP:$DIRNAME/lib/commons-logging-1.1.jar
-CP=$CP:$DIRNAME/locales/
CP=$CP:$DIRNAME/reports/
+CP=$CP:$DIRNAME/locales/
+CP=$CP:$DIRNAME/locales/Albanian
+CP=$CP:$DIRNAME/reports/American
+CP=$CP:$DIRNAME/locales/Arabic
+CP=$CP:$DIRNAME/locales/Argentinian
+CP=$CP:$DIRNAME/locales/Brazilian
+CP=$CP:$DIRNAME/locales/Croatian
+CP=$CP:$DIRNAME/locales/Dutch
+CP=$CP:$DIRNAME/locales/English
+CP=$CP:$DIRNAME/locales/Estonian
+CP=$CP:$DIRNAME/locales/French
+CP=$CP:$DIRNAME/locales/German
+CP=$CP:$DIRNAME/locales/Italian
+CP=$CP:$DIRNAME/locales/Mexican
+CP=$CP:$DIRNAME/locales/Portuguese
+CP=$CP:$DIRNAME/locales/Spanish
+# Select the library folder
+case "`uname -s`" in
+ Linux)
+ case "`uname -m`" in
+ i686) LIBRARYPATH=/lib/Linux/i686-unknown-linux-gnu;;
+ ia64) LIBRARYPATH=/lib/Linux/ia64-unknown-linux-gnu;;
+ x86_64|amd64) LIBRARYPATH=/lib/Linux/x86_64-unknown-linux-gnu;;
+ esac;;
+ SunOS)
+ case "`uname -m`" in
+ sparc32) LIBRARYPATH=/Solaris/sparc-solaris/sparc32-sun-solaris2.8;;
+ sparc64) LIBRARYPATH=/Solaris/sparc-solaris/sparc64-sun-solaris2.8;;
+ esac;;
+Darwin) LIBRARYPATH=/lib/Mac_OS_X;;
+CYGWIN*|MINGW32*) LIBRARYPATH=/lib/Windows/i368-mingw32;;
+esac
java -cp $CP -Djava.library.path=$DIRNAME/lib/Linux -Ddirname.path="$DIRNAME" uk.chromis.pos.migrate.JFrmMigrate $1
diff --git a/nbbuild.xml b/nbbuild.xml
index ee5c737d..36e81518 100644
--- a/nbbuild.xml
+++ b/nbbuild.xml
@@ -70,4 +70,44 @@
nbproject/build-impl.xml file.
-->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/newtext.txt b/newtext.txt
index 11d58ec4..b602a942 100644
--- a/newtext.txt
+++ b/newtext.txt
@@ -1,5 +1,5 @@
Chromis POS - The New Face of Open source POS
-Copyright 2015 Chromis
+Copyright (c) 2015-2016Chromis
http://www.chromis.co.uk/
Chromis POS is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
diff --git a/obconvert.bat b/obconvert.bat
index 037851c6..06b14495 100644
--- a/obconvert.bat
+++ b/obconvert.bat
@@ -1,6 +1,6 @@
@echo off
REM Chromis POS - The New Face of Open Source POS
-REM Copyright (c) 2015
+REM Copyright (c) (c) 2015-2016 2016
REM http://www.chromis.co.uk
REM
REM This file is part of Chromis POS
diff --git a/reports.zip b/reports.zip
new file mode 100644
index 00000000..af602375
Binary files /dev/null and b/reports.zip differ
diff --git a/reports/uk/chromis/default/badprice.bs b/reports/uk/chromis/default/badprice.bs
new file mode 100644
index 00000000..679a0d60
--- /dev/null
+++ b/reports/uk/chromis/default/badprice.bs
@@ -0,0 +1,42 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.NewProducts");
+report.setReport("/uk/chromis/reports/newproducts");
+report.setResourceBundle("uk/chromis/reports/newproducts_messages");
+
+report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.PRICEBUY, CSVIMPORT.PRICESELL"+
+ " FROM CSVIMPORT WHERE CSVIMPORT.CSVERROR='New product'");
+
+
+
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("pricebuy", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("pricesell", uk.chromis.data.loader.Datas.DOUBLE);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/barcodesheet.bs b/reports/uk/chromis/default/barcodesheet.bs
new file mode 100644
index 00000000..8c4ab605
--- /dev/null
+++ b/reports/uk/chromis/default/barcodesheet.bs
@@ -0,0 +1,50 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.BarcodeSheet");
+report.setReport("/uk/chromis/reports/barcodesheet");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT "
+ + "PRODUCTS.CODE, PRODUCTS.CODETYPE, PRODUCTS.NAME, "
+ + "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE, "
+ + "CATEGORIES.ID AS CATEGORY, "
+ + "CATEGORIES.NAME AS CATEGORYNAME "
+ + "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID "
+ + "WHERE PRODUCTS.CODETYPE IS NOT NULL AND ?(QBF_FILTER) "
+ + "ORDER BY PRODUCTS.SITEGUID, CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter1());
+
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODETYPE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/default/bestsellers.bs b/reports/uk/chromis/default/bestsellers.bs
new file mode 100644
index 00000000..ee5d5bcb
--- /dev/null
+++ b/reports/uk/chromis/default/bestsellers.bs
@@ -0,0 +1,66 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.BestSellers");
+report.setReport("/uk/chromis/reports/bestsellers");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+ "SELECT " +
+ "PRODUCTS.REFERENCE,PRODUCTS.NAME, PRODUCTS.PRICESELL, " +
+ "SUM(TICKETLINES.UNITS) AS UNITS, " +
+ "SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) + SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) * TAXES.RATE) AS GROSSTOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM TICKETLINES " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN TICKETS ON TICKETS.ID = TICKETLINES.TICKET " +
+ "LEFT OUTER JOIN RECEIPTS ON RECEIPTS.ID = TICKETS.ID, TAXES " +
+ "WHERE RECEIPTS.ID = TICKETS.ID " +
+ "AND TICKETS.ID = TICKETLINES.TICKET " +
+ "AND TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "AND TICKETLINES.TAXID = TAXES.ID " +
+ "AND ?(QBF_FILTER) " +
+ "GROUP BY PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.PRICESELL " +
+ "ORDER BY UNITS DESC ");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/bestsellersbysite.bs b/reports/uk/chromis/default/bestsellersbysite.bs
new file mode 100644
index 00000000..97539ebe
--- /dev/null
+++ b/reports/uk/chromis/default/bestsellersbysite.bs
@@ -0,0 +1,68 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.BestSellers");
+report.setReport("/uk/chromis/reports/bestsellersbysite");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+ "SELECT " +
+ "PRODUCTS.REFERENCE,PRODUCTS.NAME, PRODUCTS.PRICESELL, " +
+ "SUM(TICKETLINES.UNITS) AS UNITS, " +
+ "SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) + SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) * TAXES.RATE) AS TOTAL, " +
+
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+
+ "FROM TICKETLINES " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN TICKETS ON TICKETS.ID = TICKETLINES.TICKET " +
+ "LEFT OUTER JOIN RECEIPTS ON RECEIPTS.ID = TICKETS.ID, TAXES " +
+ "WHERE RECEIPTS.ID = TICKETS.ID " +
+ "AND TICKETS.ID = TICKETLINES.TICKET " +
+ "AND TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "AND TICKETLINES.TAXID = TAXES.ID " +
+ "AND ?(QBF_FILTER) " +
+ "GROUP BY SITE, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.PRICESELL " +
+ "ORDER BY SITE, UNITS DESC ");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/cashflow.bs b/reports/uk/chromis/default/cashflow.bs
new file mode 100644
index 00000000..2e18ef93
--- /dev/null
+++ b/reports/uk/chromis/default/cashflow.bs
@@ -0,0 +1,53 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CashFlow");
+report.setReport("/uk/chromis/reports/cashflow");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "PAYMENTS.PAYMENT, " +
+ "SUM( PAYMENTS.TOTAL ) AS PAYMENT_TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PAYMENTS.SITEGUID) AS SITE " +
+ "FROM CLOSEDCASH, PAYMENTS, RECEIPTS " +
+ "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY " +
+ "AND PAYMENTS.RECEIPT = RECEIPTS.ID AND ?(QBF_FILTER) " +
+ "GROUP BY PAYMENTS.SITEGUID, PAYMENTS.PAYMENT");
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("PAYMENTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("PAYMENT_TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+return report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/cashregisterlog.bs b/reports/uk/chromis/default/cashregisterlog.bs
new file mode 100644
index 00000000..6dd67284
--- /dev/null
+++ b/reports/uk/chromis/default/cashregisterlog.bs
@@ -0,0 +1,57 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & Postgresql July 2016
+
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CashRegisterLog");
+report.setReport("/uk/chromis/reports/cashregisterlog");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "RECEIPTS.DATENEW, " +
+ "PAYMENTS.PAYMENT, " +
+ "SUM(PAYMENTS.TOTAL ) AS PAYMENT_TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = RECEIPTS.SITEGUID) AS SITE " +
+ "FROM RECEIPTS " +
+ "LEFT JOIN PAYMENTS ON RECEIPTS.ID = PAYMENTS.RECEIPT " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY RECEIPTS.SITEGUID, RECEIPTS.DATENEW, PAYMENTS.PAYMENT");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("PAYMENT_TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+return report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/categorysales.bs b/reports/uk/chromis/default/categorysales.bs
new file mode 100644
index 00000000..8fd61a52
--- /dev/null
+++ b/reports/uk/chromis/default/categorysales.bs
@@ -0,0 +1,62 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CategorySales");
+report.setReport("/uk/chromis/reports/categorysales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+
+report.setSentence("SELECT CATEGORIES.ID, CATEGORIES.NAME, " +
+"SUM(TICKETLINES.UNITS) AS QTY, " +
+"SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) AS CATPRICE, " +
+"SUM((PRODUCTS.PRICESELL * TICKETLINES.UNITS)-((PRODUCTS.ISVPRICE ) * (TICKETLINES.PRICE * TICKETLINES.UNITS))) AS DISC, " +
+"SUM((TICKETLINES.PRICE * TAXES.RATE)* TICKETLINES.UNITS) AS CATTAX, " +
+"SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) + ((TICKETLINES.PRICE * TAXES.RATE)* TICKETLINES.UNITS)) AS CATTOTAL, " +
+"(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = TICKETLINES.SITEGUID) AS SITE " +
+"FROM (TICKETS INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID) INNER JOIN ((CATEGORIES INNER JOIN PRODUCTS ON CATEGORIES.ID = PRODUCTS.CATEGORY) INNER JOIN (TAXES INNER JOIN TICKETLINES ON TAXES.ID = TICKETLINES.TAXID) ON PRODUCTS.ID = TICKETLINES.PRODUCT) ON TICKETS.ID = TICKETLINES.TICKET " +
+"WHERE ?(QBF_FILTER) " +
+"GROUP BY RECEIPTS.SITEGUID, CATEGORIES.ID, CATEGORIES.NAME " +
+"ORDER BY RECEIPTS.SITEGUID, CATEGORIES.NAME");
+
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("QTY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATPRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("DISC", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATTAX", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/chartsales.bs b/reports/uk/chromis/default/chartsales.bs
new file mode 100644
index 00000000..16590a95
--- /dev/null
+++ b/reports/uk/chromis/default/chartsales.bs
@@ -0,0 +1,55 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see ..
+//
+// Derby & PostgreSQl July 2016
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.SalesChart");
+report.setReport("/uk/chromis/reports/chartsales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT CATEGORIES.ID, CATEGORIES.NAME, " +
+ "Sum(TICKETLINES.UNITS) AS QTY," +
+ "Sum((TICKETLINES.PRICE * TICKETLINES.UNITS) + ((TICKETLINES.PRICE * TAXES.RATE)* TICKETLINES.UNITS)) AS CATTOTAL " +
+
+ "FROM (TICKETS INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID) " +
+ "INNER JOIN ((CATEGORIES INNER JOIN PRODUCTS ON CATEGORIES.ID = PRODUCTS.CATEGORY) " +
+ "INNER JOIN (TAXES INNER JOIN TICKETLINES ON TAXES.ID = TICKETLINES.TAXID) " +
+ "ON PRODUCTS.ID = TICKETLINES.PRODUCT) ON TICKETS.ID = TICKETLINES.TICKET " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY CATEGORIES.ID, CATEGORIES.NAME");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("QTY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
diff --git a/reports/uk/chromis/default/closedpos.bs b/reports/uk/chromis/default/closedpos.bs
new file mode 100644
index 00000000..4ac6673d
--- /dev/null
+++ b/reports/uk/chromis/default/closedpos.bs
@@ -0,0 +1,62 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & Postgresql July 2016
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Closing");
+report.setReport("/uk/chromis/reports/closedpos");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.HOSTSEQUENCE, " +
+ "CLOSEDCASH.MONEY, " +
+ "CLOSEDCASH.DATESTART, " +
+ "CLOSEDCASH.DATEEND, " +
+ "PAYMENTS.PAYMENT, " +
+ "SUM(PAYMENTS.TOTAL) AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = CLOSEDCASH.SITEGUID) AS SITE " +
+ "FROM CLOSEDCASH, PAYMENTS, RECEIPTS " +
+ "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY AND PAYMENTS.RECEIPT = RECEIPTS.ID AND ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.SITEGUID, CLOSEDCASH.HOST, CLOSEDCASH.HOSTSEQUENCE, CLOSEDCASH.MONEY, CLOSEDCASH.DATESTART, CLOSEDCASH.DATEEND, PAYMENTS.PAYMENT " +
+ "ORDER BY CLOSEDCASH.SITEGUID, CLOSEDCASH.HOST, CLOSEDCASH.HOSTSEQUENCE");
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("HOSTSEQUENCE", uk.chromis.data.loader.Datas.INT);
+report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATESTART", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/default/closedpos_1.bs b/reports/uk/chromis/default/closedpos_1.bs
new file mode 100644
index 00000000..fc8ac477
--- /dev/null
+++ b/reports/uk/chromis/default/closedpos_1.bs
@@ -0,0 +1,62 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & Postgresql July 2016
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Closing2");
+report.setReport("/uk/chromis/reports/closedpos_1");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.HOSTSEQUENCE, " +
+ "CLOSEDCASH.MONEY, " +
+ "CLOSEDCASH.DATESTART, " +
+ "CLOSEDCASH.DATEEND, " +
+ "PAYMENTS.PAYMENT, " +
+ "SUM(PAYMENTS.TOTAL) AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = CLOSEDCASH.SITEGUID) AS SITE " +
+ "FROM CLOSEDCASH, PAYMENTS, RECEIPTS " +
+ "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY AND PAYMENTS.RECEIPT = RECEIPTS.ID AND ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.SITEGUID, CLOSEDCASH.HOST, CLOSEDCASH.HOSTSEQUENCE, CLOSEDCASH.MONEY, CLOSEDCASH.DATESTART, CLOSEDCASH.DATEEND, PAYMENTS.PAYMENT " +
+ "ORDER BY CLOSEDCASH.SITEGUID, CLOSEDCASH.HOST, CLOSEDCASH.HOSTSEQUENCE");
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("HOSTSEQUENCE", uk.chromis.data.loader.Datas.INT);
+report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATESTART", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/default/closedproducts.bs b/reports/uk/chromis/default/closedproducts.bs
new file mode 100644
index 00000000..e2e341ff
--- /dev/null
+++ b/reports/uk/chromis/default/closedproducts.bs
@@ -0,0 +1,77 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ClosedProducts");
+report.setReport("/uk/chromis/reports/closedproducts");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.MONEY, " +
+ "CLOSEDCASH.DATEEND, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "PRODUCTS.PRICESELL+(PRODUCTS.PRICESELL*TAXES.RATE) AS PRICE, " +
+ "Sum(TICKETLINES.UNITS) AS UNITS, " +
+ "Sum((PRODUCTS.PRICESELL+PRODUCTS.PRICESELL*TAXES.RATE)*UNITS) AS VALUE, " +
+ "Sum((PRODUCTS.PRICESELL+PRODUCTS.PRICESELL*TAXES.RATE)*TICKETLINES.UNITS-(TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS DISCOUNT, " +
+ "Sum((TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = CLOSEDCASH.SITEGUID) AS SITE " +
+ "FROM ((TICKETS INNER JOIN (TICKETLINES INNER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID) " +
+ "ON TICKETS.ID = TICKETLINES.TICKET) INNER JOIN (RECEIPTS INNER JOIN CLOSEDCASH " +
+ "ON RECEIPTS.MONEY = CLOSEDCASH.MONEY) ON TICKETS.ID = RECEIPTS.ID) INNER JOIN taxes ON TICKETLINES.TAXID = taxes.ID " +
+ "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY PRODUCTS.SITEGUID, CLOSEDCASH.HOST, CLOSEDCASH.MONEY, CLOSEDCASH.DATEEND, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.PRICESELL+(PRODUCTS.PRICESELL*TAXES.RATE) " +
+ "ORDER BY PRODUCTS.SITEGUID, PRODUCTS.NAME, CLOSEDCASH.HOST, CLOSEDCASH.DATEEND");
+
+
+paramdates = new uk.chromis.pos.ticket.ProductFilterReportWithDates();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.SITEGUID");
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(paramdates);
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("VALUE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("DISCOUNT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/closedproducts_1.bs b/reports/uk/chromis/default/closedproducts_1.bs
new file mode 100644
index 00000000..d8a56713
--- /dev/null
+++ b/reports/uk/chromis/default/closedproducts_1.bs
@@ -0,0 +1,72 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ClosedProducts");
+report.setReport("/uk/chromis/reports/closedproducts_1");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.DATESTART, " +
+ "CLOSEDCASH.DATEEND, " +
+ "TAXES.NAME AS TAXNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "PRODUCTS.PRICESELL, " +
+ "Sum(TICKETLINES.UNITS) AS UNITS, " +
+ "Sum((TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = CLOSEDCASH.SITEGUID) AS SITE " +
+ "FROM (TAXES INNER JOIN " +
+ "((PRODUCTS INNER JOIN " +
+ "(TICKETS INNER JOIN TICKETLINES ON TICKETS.ID = TICKETLINES.TICKET) " +
+ "ON PRODUCTS.ID = TICKETLINES.PRODUCT) " +
+ "INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID) " +
+ "ON TAXES.ID = TICKETLINES.TAXID) INNER JOIN CLOSEDCASH " +
+ "ON RECEIPTS.MONEY = CLOSEDCASH.MONEY " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.SITEGUID, CLOSEDCASH.HOST, CLOSEDCASH.DATEEND, CLOSEDCASH.DATESTART, TAXES.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.PRICESELL " +
+ "ORDER BY CLOSEDCASH.SITEGUID, CLOSEDCASH.HOST, TAXES.NAME, PRODUCTS.NAME");
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATESTART", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TAXNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/closedproducts_ean.bs b/reports/uk/chromis/default/closedproducts_ean.bs
new file mode 100644
index 00000000..20def40b
--- /dev/null
+++ b/reports/uk/chromis/default/closedproducts_ean.bs
@@ -0,0 +1,87 @@
+// Closedproducts Report with EAN-code instead of Ref.ID
+//
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+// **************************************************************************
+//
+// Derby & PostgreSQl July 2016
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ClosedProductsEAN");
+report.setReport("/uk/chromis/reports/closedproducts_ean");
+report.setResourceBundle("uk/chromis/reports/closedproducts_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.MONEY, " +
+ "CLOSEDCASH.DATEEND, " +
+ "PRODUCTS.CODE, " +
+ "(SELECT CATEGORIES.NAME FROM CATEGORIES WHERE PRODUCTS.CATEGORY = CATEGORIES.ID), " +
+ "PRODUCTS.NAME, " +
+ "Sum(PRODUCTS.PRICESELL+(PRODUCTS.PRICESELL*TAXES.RATE)) AS PRICE, " +
+ "Sum(TICKETLINES.UNITS) AS UNITS, " +
+ "Sum((PRODUCTS.PRICESELL+PRODUCTS.PRICESELL*TAXES.RATE)*UNITS) AS VALUE, " +
+ "Sum((PRODUCTS.PRICESELL+PRODUCTS.PRICESELL*TAXES.RATE)*TICKETLINES.UNITS-(TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS DISCOUNT, " +
+ "Sum((TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS TOTAL " +
+ "FROM ((TICKETS INNER JOIN (TICKETLINES INNER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID) " +
+ "ON TICKETS.ID = TICKETLINES.TICKET) INNER JOIN (RECEIPTS INNER JOIN CLOSEDCASH " +
+ "ON RECEIPTS.MONEY = CLOSEDCASH.MONEY) ON TICKETS.ID = RECEIPTS.ID) INNER JOIN taxes ON TICKETLINES.TAXID = taxes.ID " +
+ "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.MONEY, CLOSEDCASH.DATEEND, PRODUCTS.CODE, PRODUCTS.NAME " +
+ "ORDER BY PRODUCTS.NAME, CLOSEDCASH.HOST, CLOSEDCASH.DATEEND");
+
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+// JG - 8 Jan 14 paramdates.setEndDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter());
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("VALUE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("DISCOUNT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/customers.bs b/reports/uk/chromis/default/customers.bs
new file mode 100644
index 00000000..31da14f6
--- /dev/null
+++ b/reports/uk/chromis/default/customers.bs
@@ -0,0 +1,52 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersReport");
+report.setReport("/uk/chromis/reports/customers");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT ID, TAXID, NAME, ADDRESS, NOTES, CARD, MAXDEBT, CURDATE, CURDEBT, DISCOUNT, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = CUSTOMERS.SITEGUID) AS SITE " +
+ "FROM CUSTOMERS " +
+ "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND ?(QBF_FILTER) " +
+ "ORDER BY SITE ");
+
+report.addParameter("ID");
+report.addParameter("NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
+report.addField("NOTES", uk.chromis.data.loader.Datas.STRING);
+report.addField("CARD", uk.chromis.data.loader.Datas.STRING);
+report.addField("MAXDEBT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CURDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("CURDEBT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("DISCOUNT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/customers_export.bs b/reports/uk/chromis/default/customers_export.bs
new file mode 100644
index 00000000..5ec2953f
--- /dev/null
+++ b/reports/uk/chromis/default/customers_export.bs
@@ -0,0 +1,45 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersExport");
+report.setReport("/uk/chromis/reports/customers_export");
+report.setResourceBundle("uk/chromis/reports/customers_messages");
+
+report.setSentence("SELECT ID,NAME,FIRSTNAME,LASTNAME,ADDRESS,ADDRESS2,CITY,POSTAL,PHONE,EMAIL " +
+ "FROM CUSTOMERS " +
+ "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND ?(QBF_FILTER)" +
+ "ORDER BY NAME ");
+
+report.addParameter("ID");
+report.addParameter("NAME");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("FIRSTNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("LASTNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS2", uk.chromis.data.loader.Datas.STRING);
+report.addField("CITY", uk.chromis.data.loader.Datas.STRING);
+report.addField("POSTAL", uk.chromis.data.loader.Datas.STRING);
+report.addField("PHONE", uk.chromis.data.loader.Datas.STRING);
+report.addField("EMAIL", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/customers_list.bs b/reports/uk/chromis/default/customers_list.bs
new file mode 100644
index 00000000..99b54d52
--- /dev/null
+++ b/reports/uk/chromis/default/customers_list.bs
@@ -0,0 +1,52 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersList");
+report.setReport("/uk/chromis/reports/customers_list");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT TAXID, NAME, FIRSTNAME, LASTNAME,ADDRESS,ADDRESS2,CITY,POSTAL,PHONE,EMAIL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = CUSTOMERS.SITEGUID) AS SITE " +
+ "FROM CUSTOMERS " +
+ "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND ?(QBF_FILTER)" +
+ "ORDER BY CUSTOMERS.SITEGUID, NAME ");
+
+report.addParameter("TAXID");
+report.addParameter("NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("FIRSTNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("LASTNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS2", uk.chromis.data.loader.Datas.STRING);
+report.addField("CITY", uk.chromis.data.loader.Datas.STRING);
+report.addField("POSTAL", uk.chromis.data.loader.Datas.STRING);
+report.addField("PHONE", uk.chromis.data.loader.Datas.STRING);
+report.addField("EMAIL", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/customersb.bs b/reports/uk/chromis/default/customersb.bs
new file mode 100644
index 00000000..0c3834ce
--- /dev/null
+++ b/reports/uk/chromis/default/customersb.bs
@@ -0,0 +1,53 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersBReport");
+report.setReport("/uk/chromis/reports/customersb");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT ID, TAXID, NAME, ADDRESS, NOTES, CARD, MAXDEBT, CURDATE, CURDEBT, DISCOUNT, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = CUSTOMERS.SITEGUID) AS SITE " +
+ "FROM CUSTOMERS " +
+ "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND CURDEBT IS NOT NULL AND CURDEBT <> 0 AND ?(QBF_FILTER)" +
+ "ORDER BY CUSTOMERS.SITEGUID ");
+
+report.addParameter("CUSTOMERS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsSites(true));
+
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
+report.addField("NOTES", uk.chromis.data.loader.Datas.STRING);
+report.addField("CARD", uk.chromis.data.loader.Datas.STRING);
+report.addField("MAXDEBT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CURDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("CURDEBT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("DISCOUNT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/default/customersdebtors.bs b/reports/uk/chromis/default/customersdebtors.bs
new file mode 100644
index 00000000..f8be28ea
--- /dev/null
+++ b/reports/uk/chromis/default/customersdebtors.bs
@@ -0,0 +1,49 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersList");
+report.setReport("/uk/chromis/reports/customersdebtors");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT ID, TAXID, NAME, ADDRESS, CURDEBT, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = CUSTOMERS.SITEGUID) AS SITE " +
+ "FROM CUSTOMERS " +
+ "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND ?(QBF_FILTER)" +
+ "ORDER BY NAME ");
+
+report.addParameter("ID");
+report.addParameter("NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
+report.addField("CURDEBT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/customersdiary.bs b/reports/uk/chromis/default/customersdiary.bs
new file mode 100644
index 00000000..917c1e74
--- /dev/null
+++ b/reports/uk/chromis/default/customersdiary.bs
@@ -0,0 +1,65 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersDiary");
+report.setReport("/uk/chromis/reports/customersdiary");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "RECEIPTS.DATENEW, " +
+ "TICKETS.TICKETID, " +
+ "PAYMENTS.PAYMENT, " +
+ "PAYMENTS.TOTAL, " +
+ "CUSTOMERS.TAXID, " +
+ "CUSTOMERS.NAME, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = RECEIPTS.SITEGUID) AS SITE " +
+ "FROM RECEIPTS, TICKETS, CUSTOMERS, PAYMENTS " +
+ "WHERE RECEIPTS.ID = TICKETS.ID AND RECEIPTS.ID = PAYMENTS.RECEIPT " +
+ "AND TICKETS.CUSTOMER = CUSTOMERS.ID " +
+ "AND ?(QBF_FILTER) " +
+ "ORDER BY RECEIPTS.SITEGUID, CUSTOMERS.NAME, RECEIPTS.DATENEW DESC");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addParameter("CUSTOMERS.ID");
+report.addParameter("CUSTOMERS.NAME");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TICKETID", uk.chromis.data.loader.Datas.STRING);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/default/dailypresence.bs b/reports/uk/chromis/default/dailypresence.bs
new file mode 100644
index 00000000..cbc3eb58
--- /dev/null
+++ b/reports/uk/chromis/default/dailypresence.bs
@@ -0,0 +1,49 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.DailyPresenceReport");
+report.setReport("/uk/chromis/reports/dailypresence");
+report.setResourceBundle("uk/chromis/reports/dailypresence_messages");
+
+report.setSentence("SELECT " +
+ "PEOPLE.NAME, " +
+ "SHIFTS.STARTSHIFT, " +
+ "SHIFTS.ENDSHIFT, " +
+ "CONCAT('',TIMESTAMPDIFF(SHIFTS.ENDSHIFT, SHIFTS.STARTSHIFT)) AS TOTAL " +
+ "FROM PEOPLE LEFT JOIN SHIFTS ON SHIFTS.PPLID = PEOPLE.ID " +
+ "WHERE ?(QBF_FILTER) ");
+
+report.addParameter("SHIFTS.STARTSHIFT");
+report.addParameter("SHIFTS.ENDSHIFT");
+report.addParameter("SHIFTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/default/dailypresencereport.bs b/reports/uk/chromis/default/dailypresencereport.bs
new file mode 100644
index 00000000..37626282
--- /dev/null
+++ b/reports/uk/chromis/default/dailypresencereport.bs
@@ -0,0 +1,54 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Mysql July 2016
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.DailyPresenceReport");
+report.setReport("/uk/chromis/reports/dailypresence");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "PEOPLE.NAME, " +
+ "SHIFTS.STARTSHIFT, " +
+ "SHIFTS.ENDSHIFT, " +
+ "({fn TIMESTAMPDIFF(SQL_TSI_SECOND, SHIFTS.STARTSHIFT, SHIFTS.ENDSHIFT)}) AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PEOPLE.SITEGUID) AS SITE " +
+ "FROM PEOPLE LEFT JOIN SHIFTS ON SHIFTS.PPLID = PEOPLE.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY SITE ");
+
+report.addParameter("SHIFTS.STARTSHIFT");
+report.addParameter("SHIFTS.ENDSHIFT");
+report.addParameter("PEOPLE.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/default/dailyschedule.bs b/reports/uk/chromis/default/dailyschedule.bs
new file mode 100644
index 00000000..ae449be9
--- /dev/null
+++ b/reports/uk/chromis/default/dailyschedule.bs
@@ -0,0 +1,52 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.DailyScheduleReport");
+report.setReport("/uk/chromis/reports/dailyschedule");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "PEOPLE.NAME, " +
+ "LEAVES.STARTDATE, " +
+ "LEAVES.ENDDATE, " +
+ "CONCAT('',DATEDIFF(LEAVES.ENDDATE, LEAVES.STARTDATE)) AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = LEAVES.SITEGUID) AS SITE " +
+ "FROM PEOPLE LEFT JOIN LEAVES ON LEAVES.PPLID = PEOPLE.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY LEAVES.STARTDATE DESC ");
+
+report.addParameter("LEAVES.STARTDATE");
+report.addParameter("LEAVES.ENDDATE");
+report.addParameter("LEAVES.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/default/dailyschedulereport.bs b/reports/uk/chromis/default/dailyschedulereport.bs
new file mode 100644
index 00000000..3e7075ed
--- /dev/null
+++ b/reports/uk/chromis/default/dailyschedulereport.bs
@@ -0,0 +1,56 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Mysql July 2016
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+
+report.setTitleKey("Menu.DailyScheduleReport");
+report.setReport("/uk/chromis/reports/dailyschedule");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "PEOPLE.NAME, " +
+ "LEAVES.STARTDATE, " +
+ "LEAVES.ENDDATE, " +
+ "CONCAT('',TIMEDIFF(LEAVES.ENDDATE, LEAVES.STARTDATE))/24 AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = LEAVES.SITEGUID) AS SITE " +
+ "FROM PEOPLE LEFT JOIN LEAVES ON LEAVES.PPLID = PEOPLE.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY SITE, LEAVES.STARTDATE DESC ");
+
+report.addParameter("LEAVES.STARTDATE");
+report.addParameter("LEAVES.ENDDATE");
+report.addParameter("LEAVES.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/employeetimesheet.bs b/reports/uk/chromis/default/employeetimesheet.bs
new file mode 100644
index 00000000..4113ed53
--- /dev/null
+++ b/reports/uk/chromis/default/employeetimesheet.bs
@@ -0,0 +1,49 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.EmployeeTimeSheet");
+report.setReport("/uk/chromis/reports/employeetimesheet");
+report.setResourceBundle("uk/chromis/reports/employeetimesheet_messages");
+
+report.setSentence("SELECT " +
+ "PEOPLE.NAME, " +
+ "SHIFTS.STARTSHIFT, " +
+ "SHIFTS.ENDSHIFT, " +
+ "CONCAT('',TIMEDIFF(SHIFTS.ENDSHIFT, SHIFTS.STARTSHIFT)) AS TOTAL " +
+ "FROM PEOPLE LEFT JOIN SHIFTS ON SHIFTS.PPLID = PEOPLE.ID " +
+ "WHERE ?(QBF_FILTER) ORDER BY PEOPLE.NAME ASC, SHIFTS.ENDSHIFT ASC");
+
+report.addParameter("SHIFTS.STARTSHIFT");
+report.addParameter("SHIFTS.ENDSHIFT");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/default/extendedcashregisterlog.bs b/reports/uk/chromis/default/extendedcashregisterlog.bs
new file mode 100644
index 00000000..48d3fe05
--- /dev/null
+++ b/reports/uk/chromis/default/extendedcashregisterlog.bs
@@ -0,0 +1,61 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ExtendedCashRegisterLog");
+report.setReport("/uk/chromis/reports/extendedcashregisterlog");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "TICKETS.TICKETID AS TICKET_NO, " +
+ "RECEIPTS.DATENEW AS TICKET_DATE, " +
+ "PAYMENTS.TOTAL AS MONEY, " +
+ "CUSTOMERS.NAME AS CUSTOMER, " +
+ "PAYMENTS.PAYMENT AS PAYMENT, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = RECEIPTS.SITEGUID) AS SITE " +
+ "FROM RECEIPTS " +
+ "LEFT JOIN TICKETS ON RECEIPTS.ID = TICKETS.ID " +
+ "LEFT JOIN PAYMENTS ON RECEIPTS.ID = PAYMENTS.RECEIPT " +
+ "LEFT JOIN CUSTOMERS ON TICKETS.CUSTOMER = CUSTOMERS.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY RECEIPTS.SITEGUID, RECEIPTS.DATENEW");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("TICKET_NO", uk.chromis.data.loader.Datas.STRING);
+report.addField("TICKET_DATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("MONEY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CUSTOMER", uk.chromis.data.loader.Datas.STRING);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+
+return report;
diff --git a/reports/uk/chromis/default/extproducts.bs b/reports/uk/chromis/default/extproducts.bs
new file mode 100644
index 00000000..bad22f32
--- /dev/null
+++ b/reports/uk/chromis/default/extproducts.bs
@@ -0,0 +1,86 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ExtendedByProducts");
+report.setReport("/uk/chromis/reports/extproducts");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CUSTOMERS.TAXID, " +
+ "CUSTOMERS.NAME AS CUSTOMER, " +
+ "CATEGORIES.NAME AS CATEGORY, " +
+ "PRODUCTS.REFERENCE AS REFERENCE, " +
+ "PRODUCTS.NAME AS PRODUCT, " +
+ "SUM(TICKETLINES.UNITS) AS UNIT, " +
+ "SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM TICKETS " +
+ "LEFT OUTER JOIN CUSTOMERS ON TICKETS.CUSTOMER = CUSTOMERS.ID, TICKETLINES " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID, RECEIPTS " +
+ "WHERE RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY PRODUCTS.SITEGUID, CUSTOMERS.TAXID, CUSTOMERS.NAME, CATEGORIES.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME " +
+ "ORDER BY PRODUCTS.SITEGUID, CUSTOMERS.NAME, CATEGORIES.NAME, PRODUCTS.NAME");
+
+//report.addParameter("RECEIPTS.DATENEW");
+//report.addParameter("RECEIPTS.DATENEW");
+//report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.ticket.ProductFilterReportWithDates();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(paramdates);
+
+//report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithDate());
+
+report.addParameter("CUSTOMERS.ID");
+report.addParameter("CUSTOMERS.NAME");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("CUSTOMER", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRODUCT", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNIT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+
+report;
+
diff --git a/reports/uk/chromis/default/invalidcategory.bs b/reports/uk/chromis/default/invalidcategory.bs
new file mode 100644
index 00000000..9d195aa2
--- /dev/null
+++ b/reports/uk/chromis/default/invalidcategory.bs
@@ -0,0 +1,38 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InvalidCategory");
+report.setReport("/uk/chromis/reports/invalidcategory");
+report.setResourceBundle("uk/chromis/reports/invalidcategory_messages");
+
+report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.ROWNUMBER, CSVIMPORT.CSVERROR,"+
+ "CSVIMPORT.CATEGORY FROM CSVIMPORT WHERE (CSVERROR = 'Bad category details')");
+
+
+
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("rownumber", uk.chromis.data.loader.Datas.STRING);
+report.addField("csverror", uk.chromis.data.loader.Datas.STRING);
+report.addField("category", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/invaliddata.bs b/reports/uk/chromis/default/invaliddata.bs
new file mode 100644
index 00000000..28defdf1
--- /dev/null
+++ b/reports/uk/chromis/default/invaliddata.bs
@@ -0,0 +1,44 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InvalidData");
+report.setReport("/uk/chromis/reports/invaliddata");
+report.setResourceBundle("uk/chromis/reports/invaliddata_messages");
+
+report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.ROWNUMBER, CSVIMPORT.CSVERROR"+
+ " FROM CSVIMPORT WHERE (CSVERROR <> 'New product') and "+
+ "(CSVERROR <> 'Updated Price Details') and (CSVERROR <>"+
+ " 'Missing data or Invalid number')");
+
+
+
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("rownumber", uk.chromis.data.loader.Datas.STRING);
+report.addField("csverror", uk.chromis.data.loader.Datas.STRING);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/inventory.bs b/reports/uk/chromis/default/inventory.bs
new file mode 100644
index 00000000..42ffa0af
--- /dev/null
+++ b/reports/uk/chromis/default/inventory.bs
@@ -0,0 +1,83 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Inventory");
+report.setReport("/uk/chromis/reports/inventory");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "STOCKCURRENT.LOCATION AS LOCATIONID, " +
+ "LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME AS PRODUCTNAME, " +
+ "PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(STOCKCURRENT.UNITS) AS UNITS, " +
+ "PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, " +
+ "COALESCE(PRODUCTS.STOCKVOLUME, 0) AS STOCKVOLUME, " +
+ "COALESCE(PRODUCTS.STOCKCOST, 0) AS STOCKCOST, " +
+ "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
+ "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM STOCKCURRENT " +
+ "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
+ "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY STOCKCURRENT.LOCATION, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, PRODUCTS.STOCKVOLUME, PRODUCTS.STOCKCOST, STOCKLEVEL.STOCKSECURITY, STOCKLEVEL.STOCKMAXIMUM " +
+ "ORDER BY PRODUCTS.SITEGUID, STOCKCURRENT.LOCATION, CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat());
+
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKVOLUME", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKCOST", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/default/inventoryb.bs b/reports/uk/chromis/default/inventoryb.bs
new file mode 100644
index 00000000..f10b3d60
--- /dev/null
+++ b/reports/uk/chromis/default/inventoryb.bs
@@ -0,0 +1,75 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Inventory2");
+report.setReport("/uk/chromis/reports/inventoryb");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "STOCKCURRENT.LOCATION AS LOCATIONID, " +
+ "LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME AS NAME, " +
+ "PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(STOCKCURRENT.UNITS) AS UNITS, " +
+ "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
+ "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM STOCKCURRENT " +
+ "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
+ "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY STOCKCURRENT.LOCATION, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, STOCKLEVEL.STOCKSECURITY, STOCKLEVEL.STOCKMAXIMUM " +
+ "ORDER BY PRODUCTS.SITEGUID, CATEGORIES.NAME, PRODUCTS.NAME, STOCKCURRENT.LOCATION");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(true, false));
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/default/inventorybroken.bs b/reports/uk/chromis/default/inventorybroken.bs
new file mode 100644
index 00000000..a43b0685
--- /dev/null
+++ b/reports/uk/chromis/default/inventorybroken.bs
@@ -0,0 +1,76 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InventoryBroken");
+report.setReport("/uk/chromis/reports/inventorybroken");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "STOCKCURRENT.LOCATION AS LOCATIONID, " +
+ "LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME AS NAME, " +
+ "PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(STOCKCURRENT.UNITS) AS UNITS, " +
+ "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
+ "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = LOCATIONS.SITEGUID) AS SITE " +
+ "FROM STOCKCURRENT " +
+ "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
+ "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY STOCKCURRENT.LOCATION, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, STOCKLEVEL.STOCKSECURITY, STOCKLEVEL.STOCKMAXIMUM " +
+ "HAVING STOCKLEVEL.STOCKSECURITY IS NOT NULL AND STOCKLEVEL.STOCKSECURITY >= SUM(STOCKCURRENT.UNITS) " +
+ "ORDER BY LOCATIONS.SITEGUID, CATEGORIES.NAME, PRODUCTS.NAME, STOCKCURRENT.LOCATION");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("LOCATIONS.SITEGUID");
+
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(true, false));
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/default/inventorydiff.bs b/reports/uk/chromis/default/inventorydiff.bs
new file mode 100644
index 00000000..934fcd69
--- /dev/null
+++ b/reports/uk/chromis/default/inventorydiff.bs
@@ -0,0 +1,73 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InventoryDiff");
+report.setReport("/uk/chromis/reports/inventorydiff");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "LOCATIONS.ID AS LOCATIONID, LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS <0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSOUT, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS <0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALOUT, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSIN, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALIN, " +
+ "SUM(STOCKDIARY.UNITS) AS UNITSDIFF, " +
+ "SUM(STOCKDIARY.UNITS * STOCKDIARY.PRICE) AS TOTALDIFF, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = LOCATIONS.SITEGUID) AS SITE " +
+ "FROM STOCKDIARY JOIN LOCATIONS ON STOCKDIARY.LOCATION = LOCATIONS.ID, " +
+ "PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "WHERE PRODUCTS.ID = STOCKDIARY.PRODUCT " +
+ "AND ?(QBF_FILTER) " +
+ "GROUP BY LOCATIONS.ID, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME " +
+ "ORDER BY LOCATIONS.SITEGUID, LOCATIONS.ID, CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("STOCKDIARY.DATENEW");
+report.addParameter("STOCKDIARY.DATENEW");
+report.addParameter("LOCATIONS.SITEGUID");
+report.addParameter("LOCATIONS.ID");
+report.addParameter("STOCKDIARY.REASON");
+
+paramdates = new uk.chromis.pos.reports.JParamsInventory();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITSOUT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALOUT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITSIN", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALIN", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITSDIFF", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALDIFF", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/default/inventorydiffdetail.bs b/reports/uk/chromis/default/inventorydiffdetail.bs
new file mode 100644
index 00000000..83dac490
--- /dev/null
+++ b/reports/uk/chromis/default/inventorydiffdetail.bs
@@ -0,0 +1,75 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InventoryDiffDetail");
+report.setReport("/uk/chromis/reports/inventorydiffdetail");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "LOCATIONS.ID AS LOCATIONID, LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, PRODUCTS.NAME, " +
+ "STOCKDIARY.ATTRIBUTESETINSTANCE_ID, ATTRIBUTESETINSTANCE.DESCRIPTION, " +
+ "PRODUCTS.CATEGORY, CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS <0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSOUT, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS <0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALOUT, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSIN, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALIN, " +
+ "SUM(STOCKDIARY.UNITS) AS UNITSDIFF, " +
+ "SUM(STOCKDIARY.UNITS * STOCKDIARY.PRICE) AS TOTALDIFF, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = LOCATIONS.SITEGUID) AS SITE " +
+ "FROM STOCKDIARY " +
+ "JOIN LOCATIONS ON STOCKDIARY.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON PRODUCTS.ID = STOCKDIARY.PRODUCT " +
+ "LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN ATTRIBUTESETINSTANCE ON STOCKDIARY.ATTRIBUTESETINSTANCE_ID = ATTRIBUTESETINSTANCE.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY LOCATIONS.ID, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, STOCKDIARY.ATTRIBUTESETINSTANCE_ID, ATTRIBUTESETINSTANCE.DESCRIPTION " +
+ "ORDER BY LOCATIONS.SITEGUID, LOCATIONS.ID, CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("STOCKDIARY.DATENEW");
+report.addParameter("STOCKDIARY.DATENEW");
+report.addParameter("LOCATIONS.SITEGUID");
+report.addParameter("LOCATIONS.ID");
+report.addParameter("STOCKDIARY.REASON");
+
+paramdates = new uk.chromis.pos.reports.JParamsInventory();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ATTINSTANCEID", uk.chromis.data.loader.Datas.STRING);
+report.addField("ATTINSTANCEDESC", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITSOUT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALOUT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITSIN", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALIN", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITSDIFF", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALDIFF", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/inventorylistdetail.bs b/reports/uk/chromis/default/inventorylistdetail.bs
new file mode 100644
index 00000000..75fa8021
--- /dev/null
+++ b/reports/uk/chromis/default/inventorylistdetail.bs
@@ -0,0 +1,73 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InventoryListDetail");
+report.setReport("/uk/chromis/reports/inventorylistdetail");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "STOCKCURRENT.LOCATION AS LOCATIONID, " +
+ "LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME AS NAME, " +
+ "STOCKCURRENT.ATTRIBUTESETINSTANCE_ID, " +
+ "ATTRIBUTESETINSTANCE.DESCRIPTION, " +
+ "PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME AS CATEGORYNAME, " +
+ "STOCKCURRENT.UNITS, " +
+ "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
+ "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM STOCKCURRENT " +
+ "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
+ "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
+ "LEFT OUTER JOIN ATTRIBUTESETINSTANCE ON STOCKCURRENT.ATTRIBUTESETINSTANCE_ID = ATTRIBUTESETINSTANCE.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY PRODUCTS.SITEGUID, CATEGORIES.NAME, PRODUCTS.NAME, STOCKCURRENT.LOCATION");
+
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(true, false));
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ATTINSTANCEID", uk.chromis.data.loader.Datas.STRING);
+report.addField("ATTINSTANCEDESC", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/inventoryreorder.bs b/reports/uk/chromis/default/inventoryreorder.bs
new file mode 100644
index 00000000..bd53b9dd
--- /dev/null
+++ b/reports/uk/chromis/default/inventoryreorder.bs
@@ -0,0 +1,82 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InventoryReOrder");
+report.setReport("/uk/chromis/reports/inventoryreorder");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "STOCKCURRENT.LOCATION AS LOCATIONID, " +
+ "LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME AS PRODUCTNAME, " +
+ "PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(STOCKCURRENT.UNITS) AS UNITS, " +
+ "PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, " +
+ "COALESCE(PRODUCTS.STOCKVOLUME, 0) AS STOCKVOLUME, " +
+ "COALESCE(PRODUCTS.STOCKCOST, 0) AS STOCKCOST, " +
+ "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
+ "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = LOCATIONS.SITEGUID) AS SITE " +
+ "FROM STOCKCURRENT " +
+ "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
+ "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
+ "WHERE ( UNITS < STOCKLEVEL.STOCKSECURITY ) AND ?(QBF_FILTER) " +
+ "GROUP BY STOCKCURRENT.LOCATION, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, PRODUCTS.STOCKVOLUME, PRODUCTS.STOCKCOST, STOCKLEVEL.STOCKSECURITY, STOCKLEVEL.STOCKMAXIMUM " +
+ "ORDER BY SITE, STOCKCURRENT.LOCATION, CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("LOCATIONS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat());
+
+
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKVOLUME", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKCOST", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/default/missingdata.bs b/reports/uk/chromis/default/missingdata.bs
new file mode 100644
index 00000000..c0a02d20
--- /dev/null
+++ b/reports/uk/chromis/default/missingdata.bs
@@ -0,0 +1,43 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.MissingData");
+report.setReport("/uk/chromis/reports/missingdata");
+report.setResourceBundle("uk/chromis/reports/missingdata_messages");
+
+report.setSentence("SELECT CSVIMPORT.ROWNUMBER, CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.PRICEBUY, CSVIMPORT.PRICESELL"+
+ " FROM CSVIMPORT WHERE CSVIMPORT.CSVERROR='Missing data or Invalid number'");
+
+
+
+report.addField("rownumber", uk.chromis.data.loader.Datas.STRING);
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("pricebuy", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("pricesell", uk.chromis.data.loader.Datas.DOUBLE);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/newproducts.bs b/reports/uk/chromis/default/newproducts.bs
new file mode 100644
index 00000000..c87b3b86
--- /dev/null
+++ b/reports/uk/chromis/default/newproducts.bs
@@ -0,0 +1,43 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.NewProducts");
+report.setReport("/uk/chromis/reports/newproducts");
+report.setResourceBundle("uk/chromis/reports/newproducts_messages");
+
+report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.PRICEBUY, CSVIMPORT.PRICESELL,"+
+ "CSVIMPORT.CATEGORY FROM CSVIMPORT WHERE CSVIMPORT.CSVERROR='New product'");
+
+
+
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("pricebuy", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("pricesell", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("category",uk.chromis.data.loader.Datas.STRING);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/paymentreport.bs b/reports/uk/chromis/default/paymentreport.bs
new file mode 100644
index 00000000..de02f692
--- /dev/null
+++ b/reports/uk/chromis/default/paymentreport.bs
@@ -0,0 +1,52 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.PaymentReport");
+report.setReport("/uk/chromis/reports/paymentreport");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT RECEIPTS.DATENEW,PAYMENTS.PAYMENT, PAYMENTS.NOTES, PAYMENTS.TOTAL, "+
+"(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = RECEIPTS.SITEGUID) AS SITE " +
+"FROM PAYMENTS,RECEIPTS "+
+"WHERE PAYMENTS.RECEIPT = RECEIPTS.ID AND ?(QBF_FILTER) "+
+"ORDER BY PAYMENTS.SITEGUID, RECEIPTS.DATENEW");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("NOTES", uk.chromis.data.loader.Datas.STRING);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+
+report;
diff --git a/reports/uk/chromis/default/people.bs b/reports/uk/chromis/default/people.bs
new file mode 100644
index 00000000..ff76bd11
--- /dev/null
+++ b/reports/uk/chromis/default/people.bs
@@ -0,0 +1,43 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.UsersReport");
+report.setReport("/uk/chromis/reports/people");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PEOPLE.ID, PEOPLE.NAME, PEOPLE.CARD, ROLES.NAME AS ROLE, PEOPLE.IMAGE, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PEOPLE.SITEGUID) AS SITE " +
+ "FROM PEOPLE, ROLES WHERE PEOPLE.ROLE = ROLES.ID AND PEOPLE.VISIBLE = " + app.getSession().DB.TRUE() +
+ " AND ?(QBF_FILTER) " +
+ " ORDER BY PEOPLE.SITEGUID ");
+
+report.addParameter("PEOPLE.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsSites(true));
+
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CARD", uk.chromis.data.loader.Datas.STRING);
+report.addField("ROLE", uk.chromis.data.loader.Datas.STRING);
+report.addField("IMAGE", uk.chromis.data.loader.Datas.IMAGE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/performancereport.bs b/reports/uk/chromis/default/performancereport.bs
new file mode 100644
index 00000000..9fb5bf01
--- /dev/null
+++ b/reports/uk/chromis/default/performancereport.bs
@@ -0,0 +1,49 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.PerformanceReport");
+report.setReport("/uk/chromis/reports/performancereport");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PEOPLE.NAME, MIN(RECEIPTS.DATENEW) AS STARTDATE, MAX(RECEIPTS.DATENEW) AS ENDDATE, SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL, " +
+"(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PEOPLE.SITEGUID) AS SITE " +
+"FROM PEOPLE, RECEIPTS, TICKETS, TICKETLINES WHERE PEOPLE.ID = TICKETS.PERSON AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY PEOPLE.ID, PEOPLE.NAME ORDER BY SITE, PEOPLE.NAME ");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("PEOPLE.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/default/piesalescat.bs b/reports/uk/chromis/default/piesalescat.bs
new file mode 100644
index 00000000..ac79ef00
--- /dev/null
+++ b/reports/uk/chromis/default/piesalescat.bs
@@ -0,0 +1,56 @@
+// uniCenta oPOS - Touch Friendly Point Of Sale
+// Copyright (c) 2009-(c) 2015-2016uniCenta & previous Openbravo POS works
+// http://www.unicenta.net
+//
+// This file is part of uniCenta oPOS
+//
+// uniCenta oPOS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// uniCenta oPOS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with uniCenta oPOS. If not, see .
+//
+// MySQL July 2016
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CategoryProductSalesChart");
+report.setReport("/uk/chromis/reports/piesalescat");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT "+
+ "CATEGORIES.NAME AS CAT, " +
+ "SUM(TICKETLINES.UNITS) AS UNITS, " +
+ "SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) AS TOTAL " +
+ "FROM TICKETLINES " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN TICKETS ON TICKETLINES.TICKET = TICKETS.ID " +
+ "LEFT OUTER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID " +
+ "WHERE LENGTH(CATEGORIES.NAME) > '1' AND ?(QBF_FILTER) " +
+ "GROUP BY CATEGORIES.ID, CATEGORIES.NAME "+
+ "ORDER BY CATEGORIES.NAME ASC");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval(false);
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("CAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
diff --git a/reports/uk/chromis/default/productlabels.bs b/reports/uk/chromis/default/productlabels.bs
new file mode 100644
index 00000000..e7402f8e
--- /dev/null
+++ b/reports/uk/chromis/default/productlabels.bs
@@ -0,0 +1,72 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ProductLabels");
+report.setReport("/uk/chromis/reports/productlabels");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, PRODUCTS.CODETYPE, " +
+ "PRODUCTS.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, TC.ID AS TAXCAT, " +
+ "TC.NAME AS TAXCATNAME, CATEGORIES.ID AS CATEGORY, CATEGORIES.NAME AS CATEGORYNAME, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON PRODUCTS.TAXCAT = TC.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY PRODUCTS.SITEGUID, CATEGORIES.NAME, PRODUCTS.NAME");
+
+//report.addParameter("PRODUCTS.NAME");
+//report.addParameter("PRODUCTS.PRICEBUY");
+//report.addParameter("PRODUCTS.PRICESELL");
+//report.addParameter("PRODUCTS.CATEGORY");
+//report.addParameter("PRODUCTS.CODE");
+//report.addParameter("PRODUCTS.SITEGUID");
+//report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReport());
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(false, false));
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODETYPE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/default/products.bs b/reports/uk/chromis/default/products.bs
new file mode 100644
index 00000000..f501df92
--- /dev/null
+++ b/reports/uk/chromis/default/products.bs
@@ -0,0 +1,60 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Catalog");
+report.setReport("/uk/chromis/reports/products");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, PRODUCTS.NAME, " +
+ "PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, TC.ID AS TAXCAT, TC.NAME AS TAXCATNAME, " +
+ "CATEGORIES.ID AS CATEGORY, CATEGORIES.NAME AS CATEGORYNAME, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON PRODUCTS.TAXCAT = TC.ID " +
+ "WHERE PRODUCTS.ISCATALOG = TRUE AND ?(QBF_FILTER)" +
+ "ORDER BY PRODUCTS.SITEGUID, CATEGORIES.NAME, PRODUCTS.CATORDER, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(false, false));
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/default/productsales.bs b/reports/uk/chromis/default/productsales.bs
new file mode 100644
index 00000000..a31993bc
--- /dev/null
+++ b/reports/uk/chromis/default/productsales.bs
@@ -0,0 +1,68 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ProductSales");
+report.setReport("/uk/chromis/reports/productsales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+ "SELECT " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "SUM(TICKETLINES.UNITS) AS UNITS, " +
+ "SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = RECEIPTS.SITEGUID) AS SITE " +
+ "FROM RECEIPTS, TICKETS, TICKETLINES, PRODUCTS " +
+ "WHERE RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND TICKETLINES.PRODUCT = PRODUCTS.ID AND ?(QBF_FILTER) " +
+ "GROUP BY PRODUCTS.REFERENCE, PRODUCTS.NAME " +
+ "ORDER BY PRODUCTS.NAME");
+
+
+paramdates = new uk.chromis.pos.ticket.ProductFilterReportWithDates();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("RECEIPTS.SITEGUID");
+
+report.addQBFFilter(paramdates);
+
+
+
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/default/productsalesprofit.bs b/reports/uk/chromis/default/productsalesprofit.bs
new file mode 100644
index 00000000..7064e63f
--- /dev/null
+++ b/reports/uk/chromis/default/productsalesprofit.bs
@@ -0,0 +1,75 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.SalesProfit");
+report.setReport("/uk/chromis/reports/productsalesprofit");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+
+report.setSentence("SELECT PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, " +
+ "SUM(TICKETLINES.UNITS) AS SOLD_UNITS, " +
+ "SUM(TICKETLINES.UNITS * PRODUCTS.PRICEBUY) AS COST_VALUE, " +
+ "SUM(TICKETLINES.UNITS * PRODUCTS.PRICESELL) AS EXPECTED_SALES_VALUE, " +
+ "SUM(TICKETLINES.PRICE) AS ACTUAL_SALES_VALUE, " +
+ "SUM(TICKETLINES.UNITS * PRODUCTS.PRICESELL) " +
+ "- SUM(TICKETLINES.UNITS * PRODUCTS.PRICEBUY) " +
+ "AS EXPECTED_PROFIT, " +
+ "SUM(TICKETLINES.PRICE) - SUM(TICKETLINES.UNITS * PRODUCTS.PRICEBUY) " +
+ "AS ACTUAL_PROFIT, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM (TICKETLINES TICKETLINES " +
+ "INNER JOIN RECEIPTS RECEIPTS " +
+ "ON (TICKETLINES.TICKET = RECEIPTS.ID)) " +
+ "LEFT OUTER JOIN PRODUCTS PRODUCTS " +
+ "ON (TICKETLINES.PRODUCT = PRODUCTS.ID) " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY TICKETLINES.PRODUCT " +
+ "ORDER BY PRODUCTS.SITEGUID, PRODUCTS.REFERENCE ASC");
+
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("PRODUCTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SOLD_UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("COST_VALUE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("EXPECTED_SALES_VALUE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("ACTUAL_SALES_VALUE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("EXPECTED_PROFIT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("ACTUAL_PROFIT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/productscatalog.bs b/reports/uk/chromis/default/productscatalog.bs
new file mode 100644
index 00000000..6a2acf6a
--- /dev/null
+++ b/reports/uk/chromis/default/productscatalog.bs
@@ -0,0 +1,61 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL version
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Catalog");
+report.setReport("/uk/chromis/reports/productscatalog1");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, PRODUCTS.NAME, " +
+ "PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, TC.ID AS TAXCAT, TC.NAME AS TAXCATNAME, " +
+ "CATEGORIES.ID AS CATEGORY, CATEGORIES.NAME AS CATEGORYNAME, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON PRODUCTS.TAXCAT = TC.ID " +
+ "WHERE PRODUCTS.ISCATALOG = 1 AND ?(QBF_FILTER) " +
+ "GROUP BY PRODUCTS.SITEGUID, CATEGORIES.ID " +
+ "ORDER BY PRODUCTS.SITEGUID, CATEGORIES.ID, CATEGORIES.NAME, PRODUCTS.CATORDER, PRODUCTS.NAME");
+
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(false, false));
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/default/report_messages.properties b/reports/uk/chromis/default/report_messages.properties
new file mode 100644
index 00000000..d246d2a4
--- /dev/null
+++ b/reports/uk/chromis/default/report_messages.properties
@@ -0,0 +1,293 @@
+# Chromis POS - The New Face of Open Source POS
+# Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+#
+# This file is part of chromis oPOS
+#
+# Chromis POS is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Chromis POS is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Chromis POS. If not, see .
+
+
+
+# New reports structure
+# Designed to reduce the number or resource bundles to 1 per locale
+
+title.closedpos=Cash Closed
+title.closedpos_1=Cash Closed (Export)
+title.cashregisterlog=Transaction Log
+title.extendedcashregisterlog=Transaction Log: Extended
+title.cashflow=Cash-Flow
+title.paymentreport=Payments
+title.categorysales=Category Sales
+title.closedproducts=Product Sales: Product
+title.closedproducts_1=Product Sales: Terminal
+title.bestsellers=Product Sales: Best Sellers
+title.bestsellersbySite=Product Sales: Best Sellers by Site
+title.extproducts=Product Sales: Customer
+title.saletaxes=Sales Taxes
+title.taxcatsales=Tax: Category Sales
+title.taxes=Tax Summary
+title.productsales=Product Sales: Units
+title.timeseriesproduct=Product Time Series
+title.chartsales=Sales Chart
+title.top10sales=Top 10 Sales
+title.piesalescat=Sales by Product Category
+title.productsalesprofit=Product Sales: Profit
+title.barcodesheet=Barcode Sheet
+title.inventory=Inventory: Location and Category
+title.inventoryb=Inventory: Current
+title.inventorybroken=Inventory: Broken
+title.inventorylistdetail=Inventory: List Detail
+title.productlabels=Product Labels
+title.products=Products
+title.productscatalog=Product Catalogue
+title.salecatalog=Product Catalogue
+title.people=Users
+title.usersales=User Sales
+title.salebycustomer=Sales by Customer
+title.customersdiary=Customers Diary
+title.customers=Customers
+title.customers_list=Customers
+title.customerdebtors=Customer Debtors
+title.dailypresence=Daily Presence
+title.performancereport=Performance Report
+title.dailyschedule=Daily Schedule
+title.badprice=New Products Added
+title.invalidcategory=Invalid Category Data
+title.invaliddata=Invalid product data0
+title.newproducts=New Products Added
+title.updatedprices=Price Updates
+title.stockchanges=Stock Changes
+title.missingdata=Missing data or Invalid Price in file
+title.inventorydiff=Inventory: Difference
+title.inventorydiffdetail=Inventory: Difference Detail
+title.inventoryreorder=Inventory: Re-Order
+title.shelfedgelabels=Shelf labels
+title.top10sales=Top 10 Sales
+
+
+# A
+label.actualsalesvalue=Actual Sales Value
+label.actualprofit=Actual Profit
+label.address=Address
+label.address2=Address2
+label.axisx=Sales
+label.axisy=Quantity
+
+# B
+label.badcategory=Bad Category
+label.barcode=Barcode
+
+
+# C
+label.catname=Category
+label.cash=Sales
+label.catprice=Net
+label.catsales=Sales
+label.cattax=Tax
+label.cashvalue=Cash Value
+label.cattotal=Total
+label.city=City
+label.closedate=Closed Date
+label.contact=Contact
+label.cost=Cost
+label.costvalue=Cost Value
+label.csverror=Error message
+label.currentstock=Current Stock
+label.curdebt=Debt Current
+label.curdate=Debt date
+label.customer=Customer
+
+
+# D
+label.date=Date
+label.diff=Difference
+label.disc=Disc.
+label.discount=Discount
+
+# E
+label.email=eMail
+label.end=End Shift
+label.enddate=End Date
+label.endleave=End Leave
+label.expectedsalesvalue=Expected Sales Value
+label.expectedprofit=Expected Profit
+label.extaxsell=Retail(ex Tax)
+
+
+# F
+label.firstname=First Name
+
+
+# G
+label.gross=Gross
+label.gtotal=Grand Total
+
+# H
+label.host=Terminal
+label.hostsequence=Sequence
+
+
+# I
+label.in=In
+label.invoice=Invoice No.
+
+
+# L
+label.lastname=Last Name
+label.location=Location :
+
+
+# M
+label.max=Max Stock
+label.maxlevel=Required For Max Stock
+label.maxdebt=Max Deb
+label.meanprice=Mean Price
+label.money=Total
+label.margin=Margin
+
+
+
+# N
+label.name=Name
+label.nocategory=(No Category defined)
+label.nocustomer=(No Customer defined)
+label.noproduct=(no Product defined)
+label.noreference=(no Reference defined)
+label.noreferency=
+label.notaxid=
+label.notes=Notes
+
+
+# O
+label.out=Out
+
+
+# P
+label.partialamount=Amount
+label.partialtotal=Sequence Total
+label.partialsubtotal=Subtotal
+label.partialtax=Taxes
+label.partialtotal=Total
+label.payment=Payment
+label.paymenttype=Type
+label.paymentnotes=Notes
+label.paytype=Payment Type
+label.period=Period:
+label.phone=Phone
+label.pietitleunit=Sales Qty Volume
+label.pietitlecost=Sales Cost Value
+label.price=Unit Price
+label.pricebuy=Buy
+label.price=Price Nett
+label.pricesell=Sell
+label.pricetax=Price Gross
+label.printed=Printed
+label.product=Product
+label.productname=Product
+label.prodref=Reference
+label.prodpricebuy=Buy Price
+label.prodpricesell=Sell Price
+label.prodpriceselltax=Sell Price + Tax
+label.prodstockcost=Stock Cost by Year
+label.prodstockvol=Stock Volume
+label.produnitsales=Unit Sales by Day
+label.postal=PCode
+label.ptotal=Product Total
+label.newpricebuy=New Buy Price
+label.newpricesell=New Sell Price
+label.previousbuy=Old Buy Price
+label.previoussell=Old Sell Price
+
+
+# Q
+label.qty=Qty
+
+
+# R
+label.ref=Ref.
+label.reference=Reference
+label.row=Row in file
+
+
+# S
+label.sales=Sales
+label.sell=Sell
+label.start=Start Shift
+label.startleave=Start Leave
+label.sec=Minimum Stock
+label.seclevel=Required For Min Stock
+label.sitename=Site Name:
+label.sitetotal=Site total :
+label.sitetotals=Site totals :
+label.soldunits=Units
+label.startdate=Start Date
+label.subtotal=Subtotal
+label.subtotalnett=Nett
+label.sum=Sum
+label.sumin=Total In
+label.sumout=Total Out
+label.sumdiff=Total Difference
+
+
+
+# T
+label.taxes=Tax
+label.tax=Taxes
+label.taxcategory=Tax Category
+label.taxid=Account ID
+label.taxnames=Tax
+label.taxname=Tax Type
+label.taxrate=Tax Rate
+label.taxnorate=(No Tax Rate found)
+label.taxtotal=Total
+label.telephone=Telephone
+label.terminaltotal=Terminal Total
+label.ticket=Ticket No.
+label.grandtotal=Grand Total
+label.totaldays=Total Days
+label.totalvalue=Total
+label.total=Total Hours
+label.totalstock=Location Costs
+label.totalsales=Total:
+label.totalbycustomer=Total by Customer
+label.ttotal=Terminal Total
+label.ttype=Type
+transpayment.cash=Cash
+transpayment.cashrefund=Refund
+transpayment.cashin=(in) Cash
+transpayment.cashout=(out) Cash
+transpayment.cheque=Cheque
+transpayment.chequerefund=Cheque Refund
+transpayment.debt=Debt
+transpayment.debtpaid=Debt Paid
+transpayment.free=Free
+transpayment.magcard=Card
+transpayment.magcardrefund=Card Refund
+transpayment.paperin=Note Input
+transpayment.paperout=Note Output
+transpayment.ticket=Ticket
+
+
+# U
+label.units=Units
+label.user=User
+
+
+# V
+label.value=Value
+label.valuebuy=Cost Value
+label.valuecost=Cost
+label.valuesell=Retail Value
+label.valuevolume=Volume
+
+
diff --git a/reports/uk/chromis/default/salebycustomer.bs b/reports/uk/chromis/default/salebycustomer.bs
new file mode 100644
index 00000000..8283dd16
--- /dev/null
+++ b/reports/uk/chromis/default/salebycustomer.bs
@@ -0,0 +1,68 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.SalesByCustomer");
+report.setReport("/uk/chromis/reports/salebycustomer");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CUSTOMERS.NAME AS CNAME, " +
+ "RECEIPTS.DATENEW, " +
+ "TICKETS.TICKETID, " +
+ "PRODUCTS.NAME AS PNAME, " +
+ "TICKETS.TICKETTYPE, " +
+ "SUM(TICKETLINES.UNITS) AS UNITS, " +
+ "SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = RECEIPTS.SITEGUID) AS SITE " +
+ "FROM RECEIPTS, CUSTOMERS, TICKETS, TICKETLINES LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "WHERE CUSTOMERS.ID = TICKETS.CUSTOMER AND TICKETLINES.PRODUCT = PRODUCTS.ID AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY CUSTOMERS.NAME, RECEIPTS.DATENEW, TICKETS.TICKETID, PRODUCTS.NAME, TICKETS.TICKETTYPE " +
+ "ORDER BY RECEIPTS.SITEGUID, CUSTOMERS.NAME, PRODUCTS.NAME, RECEIPTS.DATENEW");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addParameter("CUSTOMERS.ID");
+report.addParameter("CUSTOMERS.NAME");
+
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("CNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TICKETID", uk.chromis.data.loader.Datas.STRING);
+report.addField("PNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("TICKETTYPE", uk.chromis.data.loader.Datas.INT);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/salecatalog.bs b/reports/uk/chromis/default/salecatalog.bs
new file mode 100644
index 00000000..e55362ca
--- /dev/null
+++ b/reports/uk/chromis/default/salecatalog.bs
@@ -0,0 +1,70 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL version
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.SaleCatalog");
+report.setReport("/uk/chromis/reports/salecatalog");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+"SELECT " +
+" PRODUCTS.ID, " +
+" PRODUCTS.REFERENCE, " +
+" PRODUCTS.CODE, " +
+" PRODUCTS.NAME, " +
+" PRODUCTS.PRICESELL, " +
+" PRODUCTS.IMAGE, " +
+" TC.ID AS TAXCAT, " +
+" CATEGORIES.NAME AS CATEGORYNAME, " +
+"(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+"FROM " +
+" PRODUCTS LEFT OUTER JOIN CATEGORIES ON " +
+" PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON " +
+" PRODUCTS.TAXCAT = TC.ID " +
+"WHERE PRODUCTS.ISCATALOG = 1 AND ?(QBF_FILTER) " +
+"ORDER BY PRODUCTS.SITEGUID, CATEGORIES.NAME, PRODUCTS.NAME");
+
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(false, false));
+
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("IMAGE", uk.chromis.data.loader.Datas.IMAGE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/default/saletaxes.bs b/reports/uk/chromis/default/saletaxes.bs
new file mode 100644
index 00000000..de99f727
--- /dev/null
+++ b/reports/uk/chromis/default/saletaxes.bs
@@ -0,0 +1,61 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+// added by g.irura @ 27/03/2010. If a retailer issues item which is
+// taxable but gets back a refund, means when this happens, the tax
+// effected initially is deducted. all taxes occur in taxlines.amount
+// where the sum is obtained. It is therefore important to show on this
+// report the taxes that were charged on a receipt but later refunded
+//
+// Derby & PostgreSQl July 2016
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.SaleTaxes");
+report.setReport("/uk/chromis/reports/saletaxes");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+ "SELECT TICKETS.TICKETID, RECEIPTS.DATENEW, PAYMENTS.PAYMENT, TAXCATEGORIES.NAME, TAXLINES.AMOUNT, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = RECEIPTS.SITEGUID) AS SITE " +
+ "FROM RECEIPTS, TAXLINES, TAXES, TAXCATEGORIES,TICKETS, PAYMENTS " +
+ "WHERE PAYMENTS.RECEIPT = RECEIPTS.ID AND RECEIPTS.ID = TAXLINES.RECEIPT AND RECEIPTS.ID=TICKETS.ID AND TAXLINES.TAXID = TAXES.ID AND TAXES.CATEGORY = TAXCATEGORIES.ID AND ?(QBF_FILTER) "+
+ "ORDER BY RECEIPTS.SITEGUID, RECEIPTS.DATENEW");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("TICKETID", uk.chromis.data.loader.Datas.INT);
+report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("AMOUNT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/shelfedgelabels.bs b/reports/uk/chromis/default/shelfedgelabels.bs
new file mode 100644
index 00000000..e8eb8ed1
--- /dev/null
+++ b/reports/uk/chromis/default/shelfedgelabels.bs
@@ -0,0 +1,65 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.BarcodeSheet");
+report.setReport("/uk/chromis/reports/shelfedgelabels");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, " +
+ "PRODUCTS.CODETYPE, PRODUCTS.NAME, PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, TC.ID AS TAXCAT, TC.NAME AS TAXCATNAME, " +
+ "CATEGORIES.ID AS CATEGORY, CATEGORIES.NAME AS CATEGORYNAME, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON PRODUCTS.TAXCAT = TC.ID " +
+ "WHERE PRODUCTS.CODETYPE IS NOT NULL AND ?(QBF_FILTER) " +
+ "ORDER BY PRODUCTS.SITEGUID, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(false, false));
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODETYPE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/default/taxcatsales.bs b/reports/uk/chromis/default/taxcatsales.bs
new file mode 100644
index 00000000..1aa9e4ad
--- /dev/null
+++ b/reports/uk/chromis/default/taxcatsales.bs
@@ -0,0 +1,70 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL version
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.TaxCatSales");
+report.setReport("/uk/chromis/reports/taxcatsales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.MONEY, " +
+ "CLOSEDCASH.DATEEND, " +
+ "TAXES.NAME AS TAXNAME, CATEGORIES.NAME, " +
+ "SUM(TICKETLINES.UNITS) AS QTY, " +
+ "SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) AS CATPRICE, " +
+ "SUM((TICKETLINES.PRICE * TAXES.RATE ) * TICKETLINES.UNITS) AS CATTAX, " +
+ "SUM((TICKETLINES.PRICE + TICKETLINES.PRICE * TAXES.RATE ) * TICKETLINES.UNITS) AS CATTOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = CLOSEDCASH.SITEGUID) AS SITE " +
+ "FROM CLOSEDCASH, TAXES, TICKETLINES " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ //"LEFT OUTER JOIN PRODUCTS_CAT ON PRODUCTS_CAT.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN TICKETS ON TICKETS.ID = TICKETLINES.TICKET " +
+ "LEFT OUTER JOIN RECEIPTS ON RECEIPTS.ID = TICKETS.ID " +
+ "WHERE PRODUCTS.ISCATALOG = 1 AND CLOSEDCASH.MONEY = RECEIPTS.MONEY " +
+ "AND TICKETLINES.TAXID = TAXES.ID " +
+ "AND ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.MONEY, CLOSEDCASH.DATEEND, TAXES.NAME, CATEGORIES.NAME " +
+ "ORDER BY CLOSEDCASH.SITEGUID, TAXES.NAME, CATEGORIES.NAME");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("CLOSEDCASH.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TAXNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("QTY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATPRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATTAX", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/taxes.bs b/reports/uk/chromis/default/taxes.bs
new file mode 100644
index 00000000..7b60cee4
--- /dev/null
+++ b/reports/uk/chromis/default/taxes.bs
@@ -0,0 +1,56 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ReportTaxes");
+report.setReport("/uk/chromis/reports/taxes");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+ "SELECT TAXCATEGORIES.ID AS TAXID, TAXCATEGORIES.NAME AS TAXNAME, SUM(TAXLINES.AMOUNT) AS TOTALTAXES, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = RECEIPTS.SITEGUID) AS SITE " +
+ "FROM RECEIPTS, TAXLINES, TAXES, TAXCATEGORIES " +
+ "WHERE RECEIPTS.ID = TAXLINES.RECEIPT AND TAXLINES.TAXID = TAXES.ID AND TAXES.CATEGORY = TAXCATEGORIES.ID " +
+ "AND ?(QBF_FILTER) " +
+ "GROUP BY RECEIPTS.SITEGUID, TAXCATEGORIES.ID, TAXCATEGORIES.NAME " +
+ "ORDER BY RECEIPTS.SITEGUID, TAXCATEGORIES.NAME ");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+
+report.addQBFFilter(paramdates);
+
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("TOTALTAXES", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/default/timeseriesproduct.bs b/reports/uk/chromis/default/timeseriesproduct.bs
new file mode 100644
index 00000000..162a0a60
--- /dev/null
+++ b/reports/uk/chromis/default/timeseriesproduct.bs
@@ -0,0 +1,87 @@
+ // Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL version
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.TimeSeriesProduct");
+report.setReport("/uk/chromis/reports/timeseriesproduct");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CATEGORIES.NAME AS CATNAME, " +
+ "PRODUCTS.NAME AS PRODUCT, " +
+ "PRODUCTS.REFERENCE AS REF, " +
+ "PRODUCTS.CODE AS BARCODE, " +
+ "PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, " +
+ "PRODUCTS.STOCKCOST, " +
+ "PRODUCTS.STOCKVOLUME, " +
+ "TAXCATEGORIES.ID AS TAXCAT, " +
+ "TAXCATEGORIES.NAME AS TAXCATNAME, " +
+ "PEOPLE.NAME AS SELLER, " +
+ "RECEIPTS.DATENEW AS RECEIPTDATE, " +
+ "SUM(TICKETLINES.UNITS) AS TOTALUNIT, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM RECEIPTS LEFT OUTER JOIN TICKETS ON RECEIPTS.ID = TICKETS.ID LEFT OUTER JOIN TICKETLINES ON " +
+ "TICKETS.ID = TICKETLINES.TICKET, PRODUCTS LEFT OUTER JOIN CATEGORIES ON " +
+ "PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES ON PRODUCTS.TAXCAT = TAXCATEGORIES.ID, " +
+ " PEOPLE " +
+ "WHERE PRODUCTS.ID = TICKETLINES.PRODUCT AND PEOPLE.ID = TICKETS.PERSON AND PRODUCTS.ISCATALOG = 1 AND ?(QBF_FILTER) " +
+ "GROUP BY CATEGORIES.NAME, PRODUCTS.NAME, PRODUCTS.REFERENCE,PRODUCTS.CODE,PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, PRODUCTS.STOCKCOST,PRODUCTS.STOCKVOLUME, TAXCATEGORIES.ID, TAXCATEGORIES.NAME, PEOPLE.NAME, RECEIPTS.DATENEW " +
+ "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME, RECEIPTS.DATENEW, PEOPLE.NAME");
+
+
+paramdates = new uk.chromis.pos.ticket.ProductFilterReportWithDates();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+
+
+report.addQBFFilter(paramdates);
+
+report.addField("CATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRODUCT", uk.chromis.data.loader.Datas.STRING);
+report.addField("REF", uk.chromis.data.loader.Datas.STRING);
+report.addField("BARCODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKCOST", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKVOLUME", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("SALER", uk.chromis.data.loader.Datas.STRING);
+report.addField("RECEIPTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTALUNIT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+
+report;
+
diff --git a/reports/uk/chromis/default/top10sales.bs b/reports/uk/chromis/default/top10sales.bs
new file mode 100644
index 00000000..ca644306
--- /dev/null
+++ b/reports/uk/chromis/default/top10sales.bs
@@ -0,0 +1,67 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL version
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Top10Sales");
+report.setReport("/uk/chromis/reports/top10sales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+ "SELECT " +
+ "PRODUCTS.REFERENCE,PRODUCTS.NAME,PRODUCTS.PRICEBUY,PRODUCTS.PRICESELL, " +
+ "ROUND(SUM(TICKETLINES.UNITS)) AS UNITS, " +
+ "ROUND(SUM(TICKETLINES.PRICE * TICKETLINES.UNITS)) AS SUBTOTAL, " +
+ "ROUND(SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) * TAXES.RATE)) As TAXES, " +
+ "ROUND(SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) + SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) * TAXES.RATE)) AS GROSSTOTAL " +
+ "FROM TICKETLINES " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN TICKETS ON TICKETS.ID = TICKETLINES.TICKET " +
+ "LEFT OUTER JOIN RECEIPTS ON RECEIPTS.ID = TICKETS.ID, TAXES " +
+ "WHERE RECEIPTS.ID = TICKETS.ID " +
+ "AND TICKETS.ID = TICKETLINES.TICKET " +
+ "AND TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "AND TICKETLINES.TAXID = TAXES.ID " +
+ "AND ?(QBF_FILTER) " +
+ "GROUP BY PRODUCTS.REFERENCE, PRODUCTS.NAME,PRODUCTS.PRICEBUY,PRODUCTS.PRICESELL " +
+ "ORDER BY GROSSTOTAL DESC " +
+ "LIMIT 10");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SUBTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXES", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("GROSSTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report;
+
diff --git a/reports/uk/chromis/default/updatedprices.bs b/reports/uk/chromis/default/updatedprices.bs
new file mode 100644
index 00000000..76ceabeb
--- /dev/null
+++ b/reports/uk/chromis/default/updatedprices.bs
@@ -0,0 +1,43 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.UpdatedPrices");
+report.setReport("/uk/chromis/reports/updatedprices");
+report.setResourceBundle("uk/chromis/reports/updatedprices_messages");
+
+report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.PRICEBUY,CSVIMPORT.PRICESELL,CSVIMPORT.PREVIOUSBUY,CSVIMPORT.PREVIOUSSELL"+
+ " FROM CSVIMPORT WHERE CSVIMPORT.CSVERROR='Updated Price Details' ");
+
+
+
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("pricebuy", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("pricesell", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("previousbuy", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("previoussell", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/default/usersales.bs b/reports/uk/chromis/default/usersales.bs
new file mode 100644
index 00000000..99945b91
--- /dev/null
+++ b/reports/uk/chromis/default/usersales.bs
@@ -0,0 +1,53 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.UserSells");
+report.setReport("/uk/chromis/reports/usersales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PEOPLE.NAME, MIN(RECEIPTS.DATENEW) AS STARTDATE, MAX(RECEIPTS.DATENEW) AS ENDDATE, " +
+ "SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = RECEIPTS.SITEGUID) AS SITE " +
+ "FROM PEOPLE, RECEIPTS, TICKETS, TICKETLINES " +
+ "WHERE PEOPLE.ID = TICKETS.PERSON AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY SITE, PEOPLE.NAME " +
+ "ORDER BY SITE, PEOPLE.NAME ");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/derby/Barcodesheet.jrxml b/reports/uk/chromis/derby/Barcodesheet.jrxml
new file mode 100644
index 00000000..b74bd5ea
--- /dev/null
+++ b/reports/uk/chromis/derby/Barcodesheet.jrxml
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/badprice.bs b/reports/uk/chromis/derby/badprice.bs
new file mode 100644
index 00000000..5a9aa999
--- /dev/null
+++ b/reports/uk/chromis/derby/badprice.bs
@@ -0,0 +1,42 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.NewProducts");
+report.setReport("/uk/chromis/reports/newproducts");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.PRICEBUY, CSVIMPORT.PRICESELL"+
+ " FROM CSVIMPORT WHERE CSVIMPORT.CSVERROR='New product'");
+
+
+
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("pricebuy", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("pricesell", uk.chromis.data.loader.Datas.DOUBLE);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/badprice.jrxml b/reports/uk/chromis/derby/badprice.jrxml
new file mode 100644
index 00000000..d81c2465
--- /dev/null
+++ b/reports/uk/chromis/derby/badprice.jrxml
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/barcodesheet.bs b/reports/uk/chromis/derby/barcodesheet.bs
new file mode 100644
index 00000000..abe7ae6e
--- /dev/null
+++ b/reports/uk/chromis/derby/barcodesheet.bs
@@ -0,0 +1,47 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.BarcodeSheet");
+report.setReport("/uk/chromis/reports/barcodesheet");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT "
+ + "PRODUCTS.CODE, PRODUCTS.CODETYPE, PRODUCTS.NAME, "
+ + "CATEGORIES.ID AS CATEGORY, "
+ + "CATEGORIES.NAME AS CATEGORYNAME "
+ + "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID "
+ + "WHERE PRODUCTS.CODETYPE IS NOT NULL AND ?(QBF_FILTER) "
+ + "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter1());
+
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODETYPE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/derby/bestsellers.bs b/reports/uk/chromis/derby/bestsellers.bs
new file mode 100644
index 00000000..2eaed997
--- /dev/null
+++ b/reports/uk/chromis/derby/bestsellers.bs
@@ -0,0 +1,68 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.BestSellers");
+report.setReport("/uk/chromis/reports/bestsellers");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.DATESTART, " +
+ "CLOSEDCASH.DATEEND, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "PRODUCTS.PRICESELL, " +
+ "Sum(TICKETLINES.UNITS) AS UNITS, " +
+ "Sum((TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS TOTAL " +
+ "FROM (TAXES INNER JOIN " +
+ "((PRODUCTS INNER JOIN " +
+ "(TICKETS INNER JOIN TICKETLINES ON TICKETS.ID = TICKETLINES.TICKET) " +
+ "ON PRODUCTS.ID = TICKETLINES.PRODUCT) " +
+ "INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID) " +
+ "ON TAXES.ID = TICKETLINES.TAXID) INNER JOIN CLOSEDCASH " +
+ "ON RECEIPTS.MONEY = CLOSEDCASH.MONEY " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.PRICESELL " +
+ "ORDER BY TOTAL DESC, PRODUCTS.NAME");
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.SITEGUID");
+
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("DATESTART", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/bestsellers.jrxml b/reports/uk/chromis/derby/bestsellers.jrxml
new file mode 100644
index 00000000..3b37ec58
--- /dev/null
+++ b/reports/uk/chromis/derby/bestsellers.jrxml
@@ -0,0 +1,347 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/bestsellersbysite.jrxml b/reports/uk/chromis/derby/bestsellersbysite.jrxml
new file mode 100644
index 00000000..d8393654
--- /dev/null
+++ b/reports/uk/chromis/derby/bestsellersbysite.jrxml
@@ -0,0 +1,455 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/cashflow.bs b/reports/uk/chromis/derby/cashflow.bs
new file mode 100644
index 00000000..48ab909b
--- /dev/null
+++ b/reports/uk/chromis/derby/cashflow.bs
@@ -0,0 +1,53 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CashFlow");
+report.setReport("/uk/chromis/reports/cashflow");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "PAYMENTS.PAYMENT, " +
+ "SUM( PAYMENTS.TOTAL ) AS PAYMENT_TOTAL " +
+ "FROM CLOSEDCASH, PAYMENTS, RECEIPTS " +
+ "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY " +
+ "AND PAYMENTS.RECEIPT = RECEIPTS.ID AND ?(QBF_FILTER) " +
+ "GROUP BY PAYMENTS.PAYMENT");
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("PAYMENTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("PAYMENT_TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+return report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/cashflow.jrxml b/reports/uk/chromis/derby/cashflow.jrxml
new file mode 100644
index 00000000..60a0e48b
--- /dev/null
+++ b/reports/uk/chromis/derby/cashflow.jrxml
@@ -0,0 +1,271 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/cashregisterlog.bs b/reports/uk/chromis/derby/cashregisterlog.bs
new file mode 100644
index 00000000..0ef92c9b
--- /dev/null
+++ b/reports/uk/chromis/derby/cashregisterlog.bs
@@ -0,0 +1,53 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CashRegisterLog");
+report.setReport("/uk/chromis/reports/cashregisterlog");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "RECEIPTS.DATENEW, " +
+ "PAYMENTS.PAYMENT, " +
+ "SUM( PAYMENTS.TOTAL ) AS PAYMENT_TOTAL " +
+ "FROM RECEIPTS " +
+ "LEFT JOIN PAYMENTS ON RECEIPTS.ID = PAYMENTS.RECEIPT " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY RECEIPTS.DATENEW, PAYMENTS.PAYMENT");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("PAYMENT_TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+return report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/cashregisterlog.jrxml b/reports/uk/chromis/derby/cashregisterlog.jrxml
new file mode 100644
index 00000000..59a95ace
--- /dev/null
+++ b/reports/uk/chromis/derby/cashregisterlog.jrxml
@@ -0,0 +1,299 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/categorysales.bs b/reports/uk/chromis/derby/categorysales.bs
new file mode 100644
index 00000000..822fa98d
--- /dev/null
+++ b/reports/uk/chromis/derby/categorysales.bs
@@ -0,0 +1,60 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CategorySales");
+report.setReport("/uk/chromis/reports/categorysales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+
+report.setSentence("SELECT CATEGORIES.ID, CATEGORIES.NAME, " +
+"SUM(TICKETLINES.UNITS) AS QTY, " +
+"SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) AS CATPRICE, " +
+"SUM((PRODUCTS.PRICESELL * TICKETLINES.UNITS)-((CASE WHEN ISVPRICE = TRUE THEN 1 ELSE 0 END) * (TICKETLINES.PRICE * TICKETLINES.UNITS))) AS DISC, " +
+"SUM((TICKETLINES.PRICE * TAXES.RATE)* TICKETLINES.UNITS) AS CATTAX, " +
+"SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) + ((TICKETLINES.PRICE * TAXES.RATE)* TICKETLINES.UNITS)) AS CATTOTAL " +
+"FROM (TICKETS INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID) INNER JOIN ((CATEGORIES INNER JOIN PRODUCTS ON CATEGORIES.ID = PRODUCTS.CATEGORY) INNER JOIN (TAXES INNER JOIN TICKETLINES ON TAXES.ID = TICKETLINES.TAXID) ON PRODUCTS.ID = TICKETLINES.PRODUCT) ON TICKETS.ID = TICKETLINES.TICKET " +
+"WHERE ?(QBF_FILTER) " +
+"GROUP BY CATEGORIES.ID, CATEGORIES.NAME " +
+"ORDER BY CATEGORIES.NAME");;
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("QTY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATPRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("DISC", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATTAX", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/categorysales.jrxml b/reports/uk/chromis/derby/categorysales.jrxml
new file mode 100644
index 00000000..8843528b
--- /dev/null
+++ b/reports/uk/chromis/derby/categorysales.jrxml
@@ -0,0 +1,404 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/chartsales.bs b/reports/uk/chromis/derby/chartsales.bs
new file mode 100644
index 00000000..1567d351
--- /dev/null
+++ b/reports/uk/chromis/derby/chartsales.bs
@@ -0,0 +1,55 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see ..
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.SalesChart");
+report.setReport("/uk/chromis/reports/chartsales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT CATEGORIES.ID, CATEGORIES.NAME, " +
+ "Sum(TICKETLINES.UNITS) AS QTY," +
+ "Sum((TICKETLINES.PRICE * TICKETLINES.UNITS) + ((TICKETLINES.PRICE * TAXES.RATE)* TICKETLINES.UNITS)) AS CATTOTAL " +
+ "FROM (TICKETS INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID) " +
+ "INNER JOIN ((CATEGORIES INNER JOIN PRODUCTS ON CATEGORIES.ID = PRODUCTS.CATEGORY) " +
+ "INNER JOIN (TAXES INNER JOIN TICKETLINES ON TAXES.ID = TICKETLINES.TAXID) " +
+ "ON PRODUCTS.ID = TICKETLINES.PRODUCT) ON TICKETS.ID = TICKETLINES.TICKET " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY CATEGORIES.ID, CATEGORIES.NAME");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("QTY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
diff --git a/reports/uk/chromis/derby/chartsales.jrxml b/reports/uk/chromis/derby/chartsales.jrxml
new file mode 100644
index 00000000..122e3e11
--- /dev/null
+++ b/reports/uk/chromis/derby/chartsales.jrxml
@@ -0,0 +1,215 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/closedpos.bs b/reports/uk/chromis/derby/closedpos.bs
new file mode 100644
index 00000000..aa61b03a
--- /dev/null
+++ b/reports/uk/chromis/derby/closedpos.bs
@@ -0,0 +1,63 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Closing");
+report.setReport("/uk/chromis/reports/closedpos");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.HOSTSEQUENCE, " +
+ "CLOSEDCASH.MONEY, " +
+ "CLOSEDCASH.DATESTART, " +
+ "CLOSEDCASH.DATEEND, " +
+ "PAYMENTS.PAYMENT, " +
+ "SUM(PAYMENTS.TOTAL) AS TOTAL " +
+ "FROM CLOSEDCASH, PAYMENTS, RECEIPTS " +
+ "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY AND PAYMENTS.RECEIPT = RECEIPTS.ID AND ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.HOSTSEQUENCE, CLOSEDCASH.MONEY, CLOSEDCASH.DATESTART, CLOSEDCASH.DATEEND, PAYMENTS.PAYMENT " +
+ "ORDER BY CLOSEDCASH.HOST, CLOSEDCASH.HOSTSEQUENCE");
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);;
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("HOSTSEQUENCE", uk.chromis.data.loader.Datas.INT);
+report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATESTART", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
+
diff --git a/reports/uk/chromis/derby/closedpos.jrxml b/reports/uk/chromis/derby/closedpos.jrxml
new file mode 100644
index 00000000..87ecb43a
--- /dev/null
+++ b/reports/uk/chromis/derby/closedpos.jrxml
@@ -0,0 +1,361 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/closedpos_1.bs b/reports/uk/chromis/derby/closedpos_1.bs
new file mode 100644
index 00000000..091ed075
--- /dev/null
+++ b/reports/uk/chromis/derby/closedpos_1.bs
@@ -0,0 +1,63 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Closing2");
+report.setReport("/uk/chromis/reports/closedpos_1");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.HOSTSEQUENCE, " +
+ "CLOSEDCASH.MONEY, " +
+ "CLOSEDCASH.DATESTART, " +
+ "CLOSEDCASH.DATEEND, " +
+ "PAYMENTS.PAYMENT, " +
+ "SUM(PAYMENTS.TOTAL) AS TOTAL " +
+ "FROM CLOSEDCASH, PAYMENTS, RECEIPTS " +
+ "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY AND PAYMENTS.RECEIPT = RECEIPTS.ID AND ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.HOSTSEQUENCE, CLOSEDCASH.MONEY, CLOSEDCASH.DATESTART, CLOSEDCASH.DATEEND, PAYMENTS.PAYMENT " +
+ "ORDER BY CLOSEDCASH.HOST, CLOSEDCASH.HOSTSEQUENCE");
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("HOSTSEQUENCE", uk.chromis.data.loader.Datas.INT);
+report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATESTART", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
+
diff --git a/reports/uk/chromis/derby/closedpos_1.jrxml b/reports/uk/chromis/derby/closedpos_1.jrxml
new file mode 100644
index 00000000..11ceae7f
--- /dev/null
+++ b/reports/uk/chromis/derby/closedpos_1.jrxml
@@ -0,0 +1,205 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/closedproducts.bs b/reports/uk/chromis/derby/closedproducts.bs
new file mode 100644
index 00000000..f86254e0
--- /dev/null
+++ b/reports/uk/chromis/derby/closedproducts.bs
@@ -0,0 +1,76 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ClosedProducts");
+report.setReport("/uk/chromis/reports/closedproducts");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.MONEY, " +
+ "CLOSEDCASH.DATEEND, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "PRODUCTS.PRICESELL+(PRODUCTS.PRICESELL*TAXES.RATE) AS PRICE, " +
+ "Sum(TICKETLINES.UNITS) AS UNITS, " +
+ "Sum((PRODUCTS.PRICESELL+PRODUCTS.PRICESELL*TAXES.RATE)*UNITS) AS VALUE, " +
+ "Sum((PRODUCTS.PRICESELL+PRODUCTS.PRICESELL*TAXES.RATE)*TICKETLINES.UNITS-(TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS DISCOUNT, " +
+ "Sum((TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS TOTAL " +
+ "FROM ((TICKETS INNER JOIN (TICKETLINES INNER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID) " +
+ "ON TICKETS.ID = TICKETLINES.TICKET) INNER JOIN (RECEIPTS INNER JOIN CLOSEDCASH " +
+ "ON RECEIPTS.MONEY = CLOSEDCASH.MONEY) ON TICKETS.ID = RECEIPTS.ID) INNER JOIN taxes ON TICKETLINES.TAXID = taxes.ID " +
+ "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.MONEY, CLOSEDCASH.DATEEND, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.PRICESELL+(PRODUCTS.PRICESELL*TAXES.RATE) " +
+ "ORDER BY PRODUCTS.NAME, CLOSEDCASH.HOST, CLOSEDCASH.DATEEND");
+
+paramdates = new uk.chromis.pos.ticket.ProductFilterReportWithDates();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.SITEGUID");
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(paramdates);
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("VALUE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("DISCOUNT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/closedproducts.jrxml b/reports/uk/chromis/derby/closedproducts.jrxml
new file mode 100644
index 00000000..ba1edcd5
--- /dev/null
+++ b/reports/uk/chromis/derby/closedproducts.jrxml
@@ -0,0 +1,641 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/closedproducts_1.bs b/reports/uk/chromis/derby/closedproducts_1.bs
new file mode 100644
index 00000000..6faddd76
--- /dev/null
+++ b/reports/uk/chromis/derby/closedproducts_1.bs
@@ -0,0 +1,71 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ClosedProducts");
+report.setReport("/uk/chromis/reports/closedproducts_1");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.DATESTART, " +
+ "CLOSEDCASH.DATEEND, " +
+ "TAXES.NAME AS TAXNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "PRODUCTS.PRICESELL, " +
+ "Sum(TICKETLINES.UNITS) AS UNITS, " +
+ "Sum((TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS TOTAL " +
+ "FROM (TAXES INNER JOIN " +
+ "((PRODUCTS INNER JOIN " +
+ "(TICKETS INNER JOIN TICKETLINES ON TICKETS.ID = TICKETLINES.TICKET) " +
+ "ON PRODUCTS.ID = TICKETLINES.PRODUCT) " +
+ "INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID) " +
+ "ON TAXES.ID = TICKETLINES.TAXID) INNER JOIN CLOSEDCASH " +
+ "ON RECEIPTS.MONEY = CLOSEDCASH.MONEY " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.DATESTART, CLOSEDCASH.DATEEND, TAXES.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.PRICESELL " +
+ "ORDER BY CLOSEDCASH.HOST, TAXES.NAME, PRODUCTS.NAME");
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATESTART", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TAXNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/closedproducts_1.jrxml b/reports/uk/chromis/derby/closedproducts_1.jrxml
new file mode 100644
index 00000000..40eef527
--- /dev/null
+++ b/reports/uk/chromis/derby/closedproducts_1.jrxml
@@ -0,0 +1,461 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/closedproducts_ean.bs b/reports/uk/chromis/derby/closedproducts_ean.bs
new file mode 100644
index 00000000..71c7d0ab
--- /dev/null
+++ b/reports/uk/chromis/derby/closedproducts_ean.bs
@@ -0,0 +1,80 @@
+// Closedproducts Report with EAN-code instead of Ref.ID
+//
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+// **************************************************************************
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ClosedProductsEAN");
+report.setReport("/uk/chromis/reports/closedproducts_ean");
+report.setResourceBundle("uk/chromis/reports/closedproducts_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.MONEY, " +
+ "CLOSEDCASH.DATEEND, " +
+ "PRODUCTS.CODE, " +
+ "(SELECT CATEGORIES.NAME FROM CATEGORIES WHERE PRODUCTS.CATEGORY = CATEGORIES.ID), " +
+ "PRODUCTS.NAME, " +
+ "Sum(PRODUCTS.PRICESELL+(PRODUCTS.PRICESELL*TAXES.RATE)) AS PRICE, " +
+ "Sum(TICKETLINES.UNITS) AS UNITS, " +
+ "Sum((PRODUCTS.PRICESELL+PRODUCTS.PRICESELL*TAXES.RATE)*UNITS) AS VALUE, " +
+ "Sum((PRODUCTS.PRICESELL+PRODUCTS.PRICESELL*TAXES.RATE)*TICKETLINES.UNITS-(TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS DISCOUNT, " +
+ "Sum((TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS TOTAL " +
+ "FROM ((TICKETS INNER JOIN (TICKETLINES INNER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID) " +
+ "ON TICKETS.ID = TICKETLINES.TICKET) INNER JOIN (RECEIPTS INNER JOIN CLOSEDCASH " +
+ "ON RECEIPTS.MONEY = CLOSEDCASH.MONEY) ON TICKETS.ID = RECEIPTS.ID) INNER JOIN taxes ON TICKETLINES.TAXID = taxes.ID " +
+ "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.MONEY, CLOSEDCASH.DATEEND, PRODUCTS.CODE, PRODUCTS.NAME " +
+ "ORDER BY PRODUCTS.NAME, CLOSEDCASH.HOST, CLOSEDCASH.DATEEND");
+
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+// JG - 8 Jan 14 paramdates.setEndDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter());
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("VALUE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("DISCOUNT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/closedproducts_ean.jrxml b/reports/uk/chromis/derby/closedproducts_ean.jrxml
new file mode 100644
index 00000000..bb26d25c
--- /dev/null
+++ b/reports/uk/chromis/derby/closedproducts_ean.jrxml
@@ -0,0 +1,631 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/customers.bs b/reports/uk/chromis/derby/customers.bs
new file mode 100644
index 00000000..c1bb2519
--- /dev/null
+++ b/reports/uk/chromis/derby/customers.bs
@@ -0,0 +1,51 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersReport");
+report.setReport("/uk/chromis/reports/customers");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT ID, TAXID, NAME, ADDRESS, NOTES, CARD, MAXDEBT, CURDATE, CURDEBT, DISCOUNT " +
+ "FROM CUSTOMERS " +
+ "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND ?(QBF_FILTER)");
+
+report.addParameter("ID");
+report.addParameter("NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
+report.addField("NOTES", uk.chromis.data.loader.Datas.STRING);
+report.addField("CARD", uk.chromis.data.loader.Datas.STRING);
+report.addField("MAXDEBT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CURDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("CURDEBT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("DISCOUNT", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/customers.jrxml b/reports/uk/chromis/derby/customers.jrxml
new file mode 100644
index 00000000..b1b4bab1
--- /dev/null
+++ b/reports/uk/chromis/derby/customers.jrxml
@@ -0,0 +1,314 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/customers_export.bs b/reports/uk/chromis/derby/customers_export.bs
new file mode 100644
index 00000000..5ec2953f
--- /dev/null
+++ b/reports/uk/chromis/derby/customers_export.bs
@@ -0,0 +1,45 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersExport");
+report.setReport("/uk/chromis/reports/customers_export");
+report.setResourceBundle("uk/chromis/reports/customers_messages");
+
+report.setSentence("SELECT ID,NAME,FIRSTNAME,LASTNAME,ADDRESS,ADDRESS2,CITY,POSTAL,PHONE,EMAIL " +
+ "FROM CUSTOMERS " +
+ "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND ?(QBF_FILTER)" +
+ "ORDER BY NAME ");
+
+report.addParameter("ID");
+report.addParameter("NAME");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("FIRSTNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("LASTNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS2", uk.chromis.data.loader.Datas.STRING);
+report.addField("CITY", uk.chromis.data.loader.Datas.STRING);
+report.addField("POSTAL", uk.chromis.data.loader.Datas.STRING);
+report.addField("PHONE", uk.chromis.data.loader.Datas.STRING);
+report.addField("EMAIL", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/customers_export.jrxml b/reports/uk/chromis/derby/customers_export.jrxml
similarity index 100%
rename from reports/uk/chromis/reports/customers_export.jrxml
rename to reports/uk/chromis/derby/customers_export.jrxml
diff --git a/reports/uk/chromis/derby/customers_list.bs b/reports/uk/chromis/derby/customers_list.bs
new file mode 100644
index 00000000..299ba679
--- /dev/null
+++ b/reports/uk/chromis/derby/customers_list.bs
@@ -0,0 +1,50 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersList");
+report.setReport("/uk/chromis/reports/customers_list");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT TAXID, NAME, FIRSTNAME, LASTNAME,ADDRESS,ADDRESS2,CITY,POSTAL,PHONE,EMAIL " +
+ "FROM CUSTOMERS " +
+ "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND ?(QBF_FILTER)" +
+ "ORDER BY NAME ");
+
+report.addParameter("TAXID");
+report.addParameter("NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("FIRSTNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("LASTNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS2", uk.chromis.data.loader.Datas.STRING);
+report.addField("CITY", uk.chromis.data.loader.Datas.STRING);
+report.addField("POSTAL", uk.chromis.data.loader.Datas.STRING);
+report.addField("PHONE", uk.chromis.data.loader.Datas.STRING);
+report.addField("EMAIL", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/customers_list.jrxml b/reports/uk/chromis/derby/customers_list.jrxml
new file mode 100644
index 00000000..1c460e55
--- /dev/null
+++ b/reports/uk/chromis/derby/customers_list.jrxml
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/customersb.bs b/reports/uk/chromis/derby/customersb.bs
new file mode 100644
index 00000000..696534e1
--- /dev/null
+++ b/reports/uk/chromis/derby/customersb.bs
@@ -0,0 +1,45 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersBReport");
+report.setReport("/uk/chromis/reports/customers");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT ID, TAXID, NAME, ADDRESS, NOTES, CARD, MAXDEBT, CURDATE, CURDEBT, DISCOUNT " +
+ "FROM CUSTOMERS " +
+ "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND CURDEBT IS NOT NULL AND CURDEBT <> 0");
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
+report.addField("NOTES", uk.chromis.data.loader.Datas.STRING);
+report.addField("CARD", uk.chromis.data.loader.Datas.STRING);
+report.addField("MAXDEBT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CURDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("CURDEBT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("DISCOUNT", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
+
diff --git a/reports/uk/chromis/derby/customersb.jrxml b/reports/uk/chromis/derby/customersb.jrxml
new file mode 100644
index 00000000..578bdd16
--- /dev/null
+++ b/reports/uk/chromis/derby/customersb.jrxml
@@ -0,0 +1,314 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/customersdebtors.bs b/reports/uk/chromis/derby/customersdebtors.bs
new file mode 100644
index 00000000..667a07d2
--- /dev/null
+++ b/reports/uk/chromis/derby/customersdebtors.bs
@@ -0,0 +1,45 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersList");
+report.setReport("/uk/chromis/reports/customersdebtors");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT ID, TAXID, NAME, ADDRESS, CURDEBT " +
+ "FROM CUSTOMERS " +
+ "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND ?(QBF_FILTER)" +
+ "ORDER BY NAME ");
+
+report.addParameter("ID");
+report.addParameter("NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
+report.addField("CURDEBT", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/customersdebtors.jrxml b/reports/uk/chromis/derby/customersdebtors.jrxml
new file mode 100644
index 00000000..1dea3c30
--- /dev/null
+++ b/reports/uk/chromis/derby/customersdebtors.jrxml
@@ -0,0 +1,255 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/customersdiary.bs b/reports/uk/chromis/derby/customersdiary.bs
new file mode 100644
index 00000000..9fc3ea2e
--- /dev/null
+++ b/reports/uk/chromis/derby/customersdiary.bs
@@ -0,0 +1,65 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersDiary");
+report.setReport("/uk/chromis/reports/customersdiary");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "RECEIPTS.DATENEW, " +
+ "TICKETS.TICKETID, " +
+ "PAYMENTS.PAYMENT, " +
+ "PAYMENTS.TOTAL, " +
+ "CUSTOMERS.TAXID, " +
+ "CUSTOMERS.NAME " +
+ "FROM RECEIPTS, TICKETS, CUSTOMERS, PAYMENTS " +
+ "WHERE RECEIPTS.ID = TICKETS.ID AND RECEIPTS.ID = PAYMENTS.RECEIPT " +
+ "AND TICKETS.CUSTOMER = CUSTOMERS.ID " +
+ "AND ?(QBF_FILTER) " +
+ "ORDER BY CUSTOMERS.NAME, RECEIPTS.DATENEW DESC");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addParameter("CUSTOMERS.ID");
+report.addParameter("CUSTOMERS.NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TICKETID", uk.chromis.data.loader.Datas.STRING);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/derby/customersdiary.jrxml b/reports/uk/chromis/derby/customersdiary.jrxml
new file mode 100644
index 00000000..fa45a5b3
--- /dev/null
+++ b/reports/uk/chromis/derby/customersdiary.jrxml
@@ -0,0 +1,344 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/dailypresence.bs b/reports/uk/chromis/derby/dailypresence.bs
new file mode 100644
index 00000000..cbc3eb58
--- /dev/null
+++ b/reports/uk/chromis/derby/dailypresence.bs
@@ -0,0 +1,49 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.DailyPresenceReport");
+report.setReport("/uk/chromis/reports/dailypresence");
+report.setResourceBundle("uk/chromis/reports/dailypresence_messages");
+
+report.setSentence("SELECT " +
+ "PEOPLE.NAME, " +
+ "SHIFTS.STARTSHIFT, " +
+ "SHIFTS.ENDSHIFT, " +
+ "CONCAT('',TIMESTAMPDIFF(SHIFTS.ENDSHIFT, SHIFTS.STARTSHIFT)) AS TOTAL " +
+ "FROM PEOPLE LEFT JOIN SHIFTS ON SHIFTS.PPLID = PEOPLE.ID " +
+ "WHERE ?(QBF_FILTER) ");
+
+report.addParameter("SHIFTS.STARTSHIFT");
+report.addParameter("SHIFTS.ENDSHIFT");
+report.addParameter("SHIFTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/derby/dailypresence.jrxml b/reports/uk/chromis/derby/dailypresence.jrxml
new file mode 100644
index 00000000..47342f32
--- /dev/null
+++ b/reports/uk/chromis/derby/dailypresence.jrxml
@@ -0,0 +1,320 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/dailypresencereport.bs b/reports/uk/chromis/derby/dailypresencereport.bs
new file mode 100644
index 00000000..3410ead6
--- /dev/null
+++ b/reports/uk/chromis/derby/dailypresencereport.bs
@@ -0,0 +1,53 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.DailyPresenceReport");
+report.setReport("/uk/chromis/reports/dailypresence");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "PEOPLE.NAME, " +
+ "SHIFTS.STARTSHIFT, " +
+ "SHIFTS.ENDSHIFT, " +
+ "({fn TIMESTAMPDIFF(SQL_TSI_SECOND, SHIFTS.STARTSHIFT, SHIFTS.ENDSHIFT)}) AS TOTAL " +
+ "FROM PEOPLE LEFT JOIN SHIFTS ON SHIFTS.PPLID = PEOPLE.ID " +
+ "WHERE ?(QBF_FILTER) ");
+
+report.addParameter("SHIFTS.STARTSHIFT");
+report.addParameter("SHIFTS.ENDSHIFT");
+report.addParameter("PEOPLE.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/derby/dailyschedule.bs b/reports/uk/chromis/derby/dailyschedule.bs
new file mode 100644
index 00000000..1d70eaf2
--- /dev/null
+++ b/reports/uk/chromis/derby/dailyschedule.bs
@@ -0,0 +1,50 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.DailyScheduleReport");
+report.setReport("/uk/chromis/reports/dailyschedule");
+report.setResourceBundle("uk/chromis/reports/dailyschedule_messages");
+
+report.setSentence("SELECT " +
+ "PEOPLE.NAME, " +
+ "LEAVES.STARTDATE, " +
+ "LEAVES.ENDDATE, " +
+ "CONCAT('',DATEDIFF(LEAVES.ENDDATE, LEAVES.STARTDATE)) AS TOTAL " +
+ "FROM PEOPLE LEFT JOIN LEAVES ON LEAVES.PPLID = PEOPLE.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY LEAVES.STARTDATE DESC ");
+
+report.addParameter("LEAVES.STARTDATE");
+report.addParameter("LEAVES.ENDDATE");
+report.addParameter("LEAVES.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/derby/dailyschedule.jrxml b/reports/uk/chromis/derby/dailyschedule.jrxml
new file mode 100644
index 00000000..ffe2d6f0
--- /dev/null
+++ b/reports/uk/chromis/derby/dailyschedule.jrxml
@@ -0,0 +1,320 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/dailyschedulereport.bs b/reports/uk/chromis/derby/dailyschedulereport.bs
new file mode 100644
index 00000000..7d2ea0f7
--- /dev/null
+++ b/reports/uk/chromis/derby/dailyschedulereport.bs
@@ -0,0 +1,54 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.DailyScheduleReport");
+report.setReport("/uk/chromis/reports/dailyschedule");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "PEOPLE.NAME, " +
+ "LEAVES.STARTDATE, " +
+ "LEAVES.ENDDATE, " +
+ "({fn TIMESTAMPDIFF(SQL_TSI_SECOND, LEAVES.STARTDATE, LEAVES.ENDDATE)}) AS TOTAL " +
+ "FROM PEOPLE LEFT JOIN LEAVES ON LEAVES.PPLID = PEOPLE.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY LEAVES.STARTDATE DESC ");
+
+report.addParameter("LEAVES.STARTDATE");
+report.addParameter("LEAVES.ENDDATE");
+report.addParameter("PEOPLE.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/derby/employeetimesheet.bs b/reports/uk/chromis/derby/employeetimesheet.bs
new file mode 100644
index 00000000..4113ed53
--- /dev/null
+++ b/reports/uk/chromis/derby/employeetimesheet.bs
@@ -0,0 +1,49 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.EmployeeTimeSheet");
+report.setReport("/uk/chromis/reports/employeetimesheet");
+report.setResourceBundle("uk/chromis/reports/employeetimesheet_messages");
+
+report.setSentence("SELECT " +
+ "PEOPLE.NAME, " +
+ "SHIFTS.STARTSHIFT, " +
+ "SHIFTS.ENDSHIFT, " +
+ "CONCAT('',TIMEDIFF(SHIFTS.ENDSHIFT, SHIFTS.STARTSHIFT)) AS TOTAL " +
+ "FROM PEOPLE LEFT JOIN SHIFTS ON SHIFTS.PPLID = PEOPLE.ID " +
+ "WHERE ?(QBF_FILTER) ORDER BY PEOPLE.NAME ASC, SHIFTS.ENDSHIFT ASC");
+
+report.addParameter("SHIFTS.STARTSHIFT");
+report.addParameter("SHIFTS.ENDSHIFT");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/derby/employeetimesheet.jrxml b/reports/uk/chromis/derby/employeetimesheet.jrxml
new file mode 100644
index 00000000..fd429f37
--- /dev/null
+++ b/reports/uk/chromis/derby/employeetimesheet.jrxml
@@ -0,0 +1,276 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/extendedcashregisterlog.bs b/reports/uk/chromis/derby/extendedcashregisterlog.bs
new file mode 100644
index 00000000..b51a58a0
--- /dev/null
+++ b/reports/uk/chromis/derby/extendedcashregisterlog.bs
@@ -0,0 +1,59 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ExtendedCashRegisterLog");
+report.setReport("/uk/chromis/reports/extendedcashregisterlog");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "TICKETS.TICKETID AS TICKET_NO, " +
+ "RECEIPTS.DATENEW AS TICKET_DATE, " +
+ "PAYMENTS.TOTAL AS MONEY, " +
+ "CUSTOMERS.NAME AS CUSTOMER, " +
+ "PAYMENTS.PAYMENT AS PAYMENT " +
+ "FROM RECEIPTS " +
+ "LEFT JOIN TICKETS ON RECEIPTS.ID = TICKETS.ID " +
+ "LEFT JOIN PAYMENTS ON RECEIPTS.ID = PAYMENTS.RECEIPT " +
+ "LEFT JOIN CUSTOMERS ON TICKETS.CUSTOMER = CUSTOMERS.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY RECEIPTS.DATENEW");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("TICKET_NO", uk.chromis.data.loader.Datas.STRING);
+report.addField("TICKET_DATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("MONEY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CUSTOMER", uk.chromis.data.loader.Datas.STRING);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+
+return report;
diff --git a/reports/uk/chromis/derby/extendedcashregisterlog.jrxml b/reports/uk/chromis/derby/extendedcashregisterlog.jrxml
new file mode 100644
index 00000000..40a5d3d5
--- /dev/null
+++ b/reports/uk/chromis/derby/extendedcashregisterlog.jrxml
@@ -0,0 +1,334 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/extproducts.bs b/reports/uk/chromis/derby/extproducts.bs
new file mode 100644
index 00000000..f23b17c0
--- /dev/null
+++ b/reports/uk/chromis/derby/extproducts.bs
@@ -0,0 +1,77 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ExtendedByProducts");
+report.setReport("/uk/chromis/reports/extproducts");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CUSTOMERS.TAXID, " +
+ "CUSTOMERS.NAME AS CUSTOMER, " +
+ "CATEGORIES.NAME AS CATEGORY, " +
+ "PRODUCTS.REFERENCE AS REFERENCE, " +
+ "PRODUCTS.NAME AS PRODUCT, " +
+ "SUM(TICKETLINES.UNITS) AS UNIT, " +
+ "SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL " +
+ "FROM TICKETS " +
+ "LEFT OUTER JOIN CUSTOMERS ON TICKETS.CUSTOMER = CUSTOMERS.ID, TICKETLINES " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID, RECEIPTS " +
+ "WHERE RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY CUSTOMERS.TAXID, CUSTOMERS.NAME, CATEGORIES.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME " +
+ "ORDER BY CUSTOMERS.NAME, CATEGORIES.NAME, PRODUCTS.NAME");
+
+paramdates = new uk.chromis.pos.ticket.ProductFilterReportWithDates();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(paramdates);
+
+report.addParameter("CUSTOMERS.ID");
+report.addParameter("CUSTOMERS.NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer(true));
+
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("CUSTOMER", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRODUCT", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNIT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
+
diff --git a/reports/uk/chromis/derby/extproducts.jrxml b/reports/uk/chromis/derby/extproducts.jrxml
new file mode 100644
index 00000000..5eaa5b25
--- /dev/null
+++ b/reports/uk/chromis/derby/extproducts.jrxml
@@ -0,0 +1,521 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/invalidcategory.bs b/reports/uk/chromis/derby/invalidcategory.bs
new file mode 100644
index 00000000..77b36e8b
--- /dev/null
+++ b/reports/uk/chromis/derby/invalidcategory.bs
@@ -0,0 +1,38 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InvalidCategory");
+report.setReport("/uk/chromis/reports/invalidcategory");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.ROWNUMBER, CSVIMPORT.CSVERROR,"+
+ "CSVIMPORT.CATEGORY FROM CSVIMPORT WHERE (CSVERROR = 'Bad category details')");
+
+
+
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("rownumber", uk.chromis.data.loader.Datas.STRING);
+report.addField("csverror", uk.chromis.data.loader.Datas.STRING);
+report.addField("category", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/invalidcategory.jrxml b/reports/uk/chromis/derby/invalidcategory.jrxml
new file mode 100644
index 00000000..760b323c
--- /dev/null
+++ b/reports/uk/chromis/derby/invalidcategory.jrxml
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/invaliddata.bs b/reports/uk/chromis/derby/invaliddata.bs
new file mode 100644
index 00000000..8750e4ad
--- /dev/null
+++ b/reports/uk/chromis/derby/invaliddata.bs
@@ -0,0 +1,44 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InvalidData");
+report.setReport("/uk/chromis/reports/invaliddata");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.ROWNUMBER, CSVIMPORT.CSVERROR"+
+ " FROM CSVIMPORT WHERE (CSVERROR <> 'New product') and "+
+ "(CSVERROR <> 'Updated Price Details') and (CSVERROR <>"+
+ " 'Missing data or Invalid number')");
+
+
+
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("rownumber", uk.chromis.data.loader.Datas.STRING);
+report.addField("csverror", uk.chromis.data.loader.Datas.STRING);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/invaliddata.jrxml b/reports/uk/chromis/derby/invaliddata.jrxml
new file mode 100644
index 00000000..5f8dafbc
--- /dev/null
+++ b/reports/uk/chromis/derby/invaliddata.jrxml
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+ 'New product') and (CSVERROR <> 'Updated Price Details') and (CSVERROR <> 'Missing data or Invalid number')]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/inventory.bs b/reports/uk/chromis/derby/inventory.bs
new file mode 100644
index 00000000..a653e89f
--- /dev/null
+++ b/reports/uk/chromis/derby/inventory.bs
@@ -0,0 +1,79 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Inventory");
+report.setReport("/uk/chromis/reports/inventory");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "STOCKCURRENT.LOCATION AS LOCATIONID, " +
+ "LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME AS PRODUCTNAME, " +
+ "PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(STOCKCURRENT.UNITS) AS UNITS, " +
+ "PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, " +
+ "COALESCE(PRODUCTS.STOCKVOLUME, 0) AS STOCKVOLUME, " +
+ "COALESCE(PRODUCTS.STOCKCOST, 0) AS STOCKCOST, " +
+ "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
+ "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM " +
+ "FROM STOCKCURRENT " +
+ "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
+ "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY STOCKCURRENT.LOCATION, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, PRODUCTS.STOCKVOLUME, PRODUCTS.STOCKCOST, STOCKLEVEL.STOCKSECURITY, STOCKLEVEL.STOCKMAXIMUM " +
+ "ORDER BY STOCKCURRENT.LOCATION, CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat());
+
+
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKVOLUME", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKCOST", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
diff --git a/reports/uk/chromis/derby/inventory.jrxml b/reports/uk/chromis/derby/inventory.jrxml
new file mode 100644
index 00000000..7ae99de6
--- /dev/null
+++ b/reports/uk/chromis/derby/inventory.jrxml
@@ -0,0 +1,703 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue()
+ && $F{UNITS}.doubleValue()<= $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/inventoryb.bs b/reports/uk/chromis/derby/inventoryb.bs
new file mode 100644
index 00000000..3ca2bdda
--- /dev/null
+++ b/reports/uk/chromis/derby/inventoryb.bs
@@ -0,0 +1,72 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Inventory2");
+report.setReport("/uk/chromis/reports/inventoryb");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "STOCKCURRENT.LOCATION AS LOCATIONID, " +
+ "LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME AS NAME, " +
+ "PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(STOCKCURRENT.UNITS) AS UNITS, " +
+ "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
+ "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM " +
+ "FROM STOCKCURRENT " +
+ "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
+ "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY STOCKCURRENT.LOCATION, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, STOCKLEVEL.STOCKSECURITY, STOCKLEVEL.STOCKMAXIMUM " +
+ "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME, STOCKCURRENT.LOCATION");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(true, false));
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
+
diff --git a/reports/uk/chromis/derby/inventoryb.jrxml b/reports/uk/chromis/derby/inventoryb.jrxml
new file mode 100644
index 00000000..1ad4955b
--- /dev/null
+++ b/reports/uk/chromis/derby/inventoryb.jrxml
@@ -0,0 +1,392 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue()
+ && $F{UNITS}.doubleValue()<= $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/inventorybroken.bs b/reports/uk/chromis/derby/inventorybroken.bs
new file mode 100644
index 00000000..fd3c310f
--- /dev/null
+++ b/reports/uk/chromis/derby/inventorybroken.bs
@@ -0,0 +1,73 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InventoryBroken");
+report.setReport("/uk/chromis/reports/inventoryb");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "STOCKCURRENT.LOCATION AS LOCATIONID, " +
+ "LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME AS NAME, " +
+ "PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(STOCKCURRENT.UNITS) AS UNITS, " +
+ "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
+ "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM " +
+ "FROM STOCKCURRENT " +
+ "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
+ "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY STOCKCURRENT.LOCATION, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, STOCKLEVEL.STOCKSECURITY, STOCKLEVEL.STOCKMAXIMUM " +
+ "HAVING STOCKLEVEL.STOCKSECURITY IS NOT NULL AND STOCKLEVEL.STOCKSECURITY >= SUM(STOCKCURRENT.UNITS) " +
+ "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME, STOCKCURRENT.LOCATION");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("LOCATIONS.SITEGUID");
+
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(true, false));
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
+
diff --git a/reports/uk/chromis/derby/inventorybroken.jrxml b/reports/uk/chromis/derby/inventorybroken.jrxml
new file mode 100644
index 00000000..bc0a3b4c
--- /dev/null
+++ b/reports/uk/chromis/derby/inventorybroken.jrxml
@@ -0,0 +1,414 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue()
+ && $F{UNITS}.doubleValue()<= $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/inventorydiff.bs b/reports/uk/chromis/derby/inventorydiff.bs
new file mode 100644
index 00000000..421c7dcb
--- /dev/null
+++ b/reports/uk/chromis/derby/inventorydiff.bs
@@ -0,0 +1,72 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InventoryDiff");
+report.setReport("/uk/chromis/reports/inventorydiff");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "LOCATIONS.ID AS LOCATIONID, LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS <0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSOUT, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS <0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALOUT, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSIN, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALIN, " +
+ "SUM(STOCKDIARY.UNITS) AS UNITSDIFF, " +
+ "SUM(STOCKDIARY.UNITS * STOCKDIARY.PRICE) AS TOTALDIFF " +
+ "FROM STOCKDIARY JOIN LOCATIONS ON STOCKDIARY.LOCATION = LOCATIONS.ID, " +
+ "PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "WHERE PRODUCTS.ID = STOCKDIARY.PRODUCT " +
+ "AND ?(QBF_FILTER) " +
+ "GROUP BY LOCATIONS.ID, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME " +
+ "ORDER BY LOCATIONS.ID, CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("STOCKDIARY.DATENEW");
+report.addParameter("STOCKDIARY.DATENEW");
+report.addParameter("LOCATIONS.SITEGUID");
+report.addParameter("LOCATIONS.ID");
+report.addParameter("STOCKDIARY.REASON");
+
+paramdates = new uk.chromis.pos.reports.JParamsInventory();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITSOUT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALOUT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITSIN", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALIN", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITSDIFF", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALDIFF", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
+
diff --git a/reports/uk/chromis/derby/inventorydiff.jrxml b/reports/uk/chromis/derby/inventorydiff.jrxml
new file mode 100644
index 00000000..df3a035c
--- /dev/null
+++ b/reports/uk/chromis/derby/inventorydiff.jrxml
@@ -0,0 +1,612 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/inventorydiffdetail.bs b/reports/uk/chromis/derby/inventorydiffdetail.bs
new file mode 100644
index 00000000..9702aa6b
--- /dev/null
+++ b/reports/uk/chromis/derby/inventorydiffdetail.bs
@@ -0,0 +1,77 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InventoryDiffDetail");
+report.setReport("/uk/chromis/reports/inventorydiffdetail");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "LOCATIONS.ID AS LOCATIONID, LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, PRODUCTS.NAME, " +
+ "STOCKDIARY.ATTRIBUTESETINSTANCE_ID, ATTRIBUTESETINSTANCE.DESCRIPTION, " +
+ "PRODUCTS.CATEGORY, CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS <0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSOUT, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS <0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALOUT, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSIN, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALIN, " +
+ "SUM(STOCKDIARY.UNITS) AS UNITSDIFF, " +
+ "SUM(STOCKDIARY.UNITS * STOCKDIARY.PRICE) AS TOTALDIFF " +
+ "FROM STOCKDIARY " +
+ "JOIN LOCATIONS ON STOCKDIARY.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON PRODUCTS.ID = STOCKDIARY.PRODUCT " +
+ "LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN ATTRIBUTESETINSTANCE ON STOCKDIARY.ATTRIBUTESETINSTANCE_ID = ATTRIBUTESETINSTANCE.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY LOCATIONS.ID, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, STOCKDIARY.ATTRIBUTESETINSTANCE_ID, ATTRIBUTESETINSTANCE.DESCRIPTION " +
+ "ORDER BY LOCATIONS.ID, CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("STOCKDIARY.DATENEW");
+report.addParameter("STOCKDIARY.DATENEW");
+report.addParameter("LOCATIONS.SITEGUID");
+report.addParameter("LOCATIONS.ID");
+report.addParameter("STOCKDIARY.REASON");
+
+paramdates = new uk.chromis.pos.reports.JParamsInventory();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ATTINSTANCEID", uk.chromis.data.loader.Datas.STRING);
+report.addField("ATTINSTANCEDESC", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITSOUT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALOUT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITSIN", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALIN", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITSDIFF", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALDIFF", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/inventorydiffdetail.jrxml b/reports/uk/chromis/derby/inventorydiffdetail.jrxml
new file mode 100644
index 00000000..316acf2c
--- /dev/null
+++ b/reports/uk/chromis/derby/inventorydiffdetail.jrxml
@@ -0,0 +1,641 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/inventorylistdetail.bs b/reports/uk/chromis/derby/inventorylistdetail.bs
new file mode 100644
index 00000000..38b1fab7
--- /dev/null
+++ b/reports/uk/chromis/derby/inventorylistdetail.bs
@@ -0,0 +1,74 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InventoryListDetail");
+report.setReport("/uk/chromis/reports/inventorylistdetail");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "STOCKCURRENT.LOCATION AS LOCATIONID, " +
+ "LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME AS NAME, " +
+ "STOCKCURRENT.ATTRIBUTESETINSTANCE_ID, " +
+ "ATTRIBUTESETINSTANCE.DESCRIPTION, " +
+ "PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME AS CATEGORYNAME, " +
+ "STOCKCURRENT.UNITS, " +
+ "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
+ "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM " +
+ "FROM STOCKCURRENT " +
+ "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
+ "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
+ "LEFT OUTER JOIN ATTRIBUTESETINSTANCE ON STOCKCURRENT.ATTRIBUTESETINSTANCE_ID = ATTRIBUTESETINSTANCE.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME, STOCKCURRENT.LOCATION");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(true, false));
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ATTINSTANCEID", uk.chromis.data.loader.Datas.STRING);
+report.addField("ATTINSTANCEDESC", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/inventorylistdetail.jrxml b/reports/uk/chromis/derby/inventorylistdetail.jrxml
new file mode 100644
index 00000000..92e3c3eb
--- /dev/null
+++ b/reports/uk/chromis/derby/inventorylistdetail.jrxml
@@ -0,0 +1,436 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue()
+? uk.chromis.format.Formats.DOUBLE.formatValue($V{UNITSTOTALWAREHOUSE})
+: ""]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue()
+ && $V{UNITSTOTALWAREHOUSE}.doubleValue()<= $F{STOCKMAXIMUM}.doubleValue()
+? uk.chromis.format.Formats.DOUBLE.formatValue($V{UNITSTOTALWAREHOUSE})
+: ""]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/inventoryreorder.bs b/reports/uk/chromis/derby/inventoryreorder.bs
new file mode 100644
index 00000000..ca0e6f7a
--- /dev/null
+++ b/reports/uk/chromis/derby/inventoryreorder.bs
@@ -0,0 +1,77 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InventoryReOrder");
+report.setReport("/uk/chromis/reports/inventoryreorder");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "STOCKCURRENT.LOCATION AS LOCATIONID, " +
+ "LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME AS PRODUCTNAME, " +
+ "PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(STOCKCURRENT.UNITS) AS UNITS, " +
+ "PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, " +
+ "COALESCE(PRODUCTS.STOCKVOLUME, 0) AS STOCKVOLUME, " +
+ "COALESCE(PRODUCTS.STOCKCOST, 0) AS STOCKCOST, " +
+ "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
+ "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM " +
+ "FROM STOCKCURRENT " +
+ "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
+ "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
+ "WHERE ( UNITS < STOCKLEVEL.STOCKSECURITY ) AND ?(QBF_FILTER) " +
+ "GROUP BY STOCKCURRENT.LOCATION, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, PRODUCTS.STOCKVOLUME, PRODUCTS.STOCKCOST, STOCKLEVEL.STOCKSECURITY, STOCKLEVEL.STOCKMAXIMUM " +
+ "ORDER BY STOCKCURRENT.LOCATION, CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("LOCATIONS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat());
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKVOLUME", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKCOST", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
diff --git a/reports/uk/chromis/derby/inventoryreorder.jrxml b/reports/uk/chromis/derby/inventoryreorder.jrxml
new file mode 100644
index 00000000..799e46ea
--- /dev/null
+++ b/reports/uk/chromis/derby/inventoryreorder.jrxml
@@ -0,0 +1,662 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = 0.00) ? uk.chromis.format.Formats.DOUBLE.formatValue($F{UNITS}) : ""]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = 0.00) ? uk.chromis.format.Formats.CURRENCY.formatValue($F{UNITS} * $F{PRICEBUY}):""]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = 0.00) ?uk.chromis.format.Formats.CURRENCY.formatValue( $F{UNITS} *$F{PRICESELL}):""]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/inventoryreorderorig.jrxml b/reports/uk/chromis/derby/inventoryreorderorig.jrxml
new file mode 100644
index 00000000..6fa1f45c
--- /dev/null
+++ b/reports/uk/chromis/derby/inventoryreorderorig.jrxml
@@ -0,0 +1,710 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue()
+ && $F{UNITS}.doubleValue()<= $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/missingdata.bs b/reports/uk/chromis/derby/missingdata.bs
new file mode 100644
index 00000000..5dc1a0f7
--- /dev/null
+++ b/reports/uk/chromis/derby/missingdata.bs
@@ -0,0 +1,43 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.MissingData");
+report.setReport("/uk/chromis/reports/missingdata");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT CSVIMPORT.ROWNUMBER, CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.PRICEBUY, CSVIMPORT.PRICESELL"+
+ " FROM CSVIMPORT WHERE CSVIMPORT.CSVERROR='Missing data or Invalid number'");
+
+
+
+report.addField("rownumber", uk.chromis.data.loader.Datas.STRING);
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("pricebuy", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("pricesell", uk.chromis.data.loader.Datas.DOUBLE);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/missingdata.jrxml b/reports/uk/chromis/derby/missingdata.jrxml
new file mode 100644
index 00000000..f9b3c3cf
--- /dev/null
+++ b/reports/uk/chromis/derby/missingdata.jrxml
@@ -0,0 +1,218 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/newproducts.bs b/reports/uk/chromis/derby/newproducts.bs
new file mode 100644
index 00000000..7b23f86f
--- /dev/null
+++ b/reports/uk/chromis/derby/newproducts.bs
@@ -0,0 +1,43 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.NewProducts");
+report.setReport("/uk/chromis/reports/newproducts");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.PRICEBUY, CSVIMPORT.PRICESELL,"+
+ "CSVIMPORT.CATEGORY FROM CSVIMPORT WHERE CSVIMPORT.CSVERROR='New product'");
+
+
+
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("pricebuy", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("pricesell", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("category",uk.chromis.data.loader.Datas.STRING);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/newproducts.jrxml b/reports/uk/chromis/derby/newproducts.jrxml
new file mode 100644
index 00000000..4382ad2d
--- /dev/null
+++ b/reports/uk/chromis/derby/newproducts.jrxml
@@ -0,0 +1,218 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/newproducts_1.jrxml b/reports/uk/chromis/derby/newproducts_1.jrxml
new file mode 100644
index 00000000..4382ad2d
--- /dev/null
+++ b/reports/uk/chromis/derby/newproducts_1.jrxml
@@ -0,0 +1,218 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/paymentreport.bs b/reports/uk/chromis/derby/paymentreport.bs
new file mode 100644
index 00000000..afc02040
--- /dev/null
+++ b/reports/uk/chromis/derby/paymentreport.bs
@@ -0,0 +1,50 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.PaymentReport");
+report.setReport("/uk/chromis/reports/paymentreport");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT RECEIPTS.DATENEW,PAYMENTS.PAYMENT, PAYMENTS.NOTES, PAYMENTS.TOTAL "+
+"FROM PAYMENTS,RECEIPTS "+
+"WHERE PAYMENTS.RECEIPT = RECEIPTS.ID AND ?(QBF_FILTER) "+
+"ORDER BY RECEIPTS.DATENEW");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("NOTES", uk.chromis.data.loader.Datas.STRING);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
diff --git a/reports/uk/chromis/derby/paymentreport.jrxml b/reports/uk/chromis/derby/paymentreport.jrxml
new file mode 100644
index 00000000..72fa3902
--- /dev/null
+++ b/reports/uk/chromis/derby/paymentreport.jrxml
@@ -0,0 +1,315 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/people.bs b/reports/uk/chromis/derby/people.bs
new file mode 100644
index 00000000..5fb5b609
--- /dev/null
+++ b/reports/uk/chromis/derby/people.bs
@@ -0,0 +1,38 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.UsersReport");
+report.setReport("/uk/chromis/reports/people");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PEOPLE.ID, PEOPLE.NAME, PEOPLE.CARD, ROLES.NAME AS ROLE, PEOPLE.IMAGE " +
+ "FROM PEOPLE, ROLES WHERE PEOPLE.ROLE = ROLES.ID AND PEOPLE.VISIBLE = " + app.getSession().DB.TRUE());
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CARD", uk.chromis.data.loader.Datas.STRING);
+report.addField("ROLE", uk.chromis.data.loader.Datas.STRING);
+report.addField("IMAGE", uk.chromis.data.loader.Datas.IMAGE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/people.jrxml b/reports/uk/chromis/derby/people.jrxml
new file mode 100644
index 00000000..7c2fd334
--- /dev/null
+++ b/reports/uk/chromis/derby/people.jrxml
@@ -0,0 +1,199 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/performancereport.bs b/reports/uk/chromis/derby/performancereport.bs
new file mode 100644
index 00000000..878f3592
--- /dev/null
+++ b/reports/uk/chromis/derby/performancereport.bs
@@ -0,0 +1,48 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.PerformanceReport");
+report.setReport("/uk/chromis/reports/performancereport");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PEOPLE.NAME, MIN(RECEIPTS.DATENEW) AS STARTDATE, MAX(RECEIPTS.DATENEW) AS ENDDATE, SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL " +
+ "FROM PEOPLE, RECEIPTS, TICKETS, TICKETLINES WHERE PEOPLE.ID = TICKETS.PERSON AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY PEOPLE.NAME ORDER BY PEOPLE.NAME");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("PEOPLE.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
diff --git a/reports/uk/chromis/derby/performancereport.jrxml b/reports/uk/chromis/derby/performancereport.jrxml
new file mode 100644
index 00000000..8c3427bc
--- /dev/null
+++ b/reports/uk/chromis/derby/performancereport.jrxml
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/piesalescat.bs b/reports/uk/chromis/derby/piesalescat.bs
new file mode 100644
index 00000000..3c5c98ce
--- /dev/null
+++ b/reports/uk/chromis/derby/piesalescat.bs
@@ -0,0 +1,58 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CategoryProductSalesChart");
+report.setReport("/uk/chromis/reports/piesalescat");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT "+
+ "CATEGORIES.NAME AS CAT, " +
+ "SUM(TICKETLINES.UNITS) AS UNITS, " +
+ "SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) AS TOTAL " +
+ "FROM TICKETLINES " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN TICKETS ON TICKETLINES.TICKET = TICKETS.ID " +
+ "LEFT OUTER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID " +
+ "WHERE LENGTH(CATEGORIES.NAME) > 1 AND ?(QBF_FILTER) " +
+ "GROUP BY CATEGORIES.ID, CATEGORIES.NAME "+
+ "ORDER BY CATEGORIES.NAME ASC");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("CAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
diff --git a/reports/uk/chromis/derby/piesalescat.jrxml b/reports/uk/chromis/derby/piesalescat.jrxml
new file mode 100644
index 00000000..8eb00d39
--- /dev/null
+++ b/reports/uk/chromis/derby/piesalescat.jrxml
@@ -0,0 +1,290 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ '1'
+GROUP BY
+ CATEGORIES.ID
+ORDER BY
+ CATEGORIES.NAME ASC]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/productlabels.bs b/reports/uk/chromis/derby/productlabels.bs
new file mode 100644
index 00000000..cd3fce06
--- /dev/null
+++ b/reports/uk/chromis/derby/productlabels.bs
@@ -0,0 +1,60 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ProductLabels");
+report.setReport("/uk/chromis/reports/productlabels");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, PRODUCTS.CODETYPE, PRODUCTS.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, TC.ID AS TAXCAT, TC.NAME AS TAXCATNAME, CATEGORIES.ID AS CATEGORY, CATEGORIES.NAME AS CATEGORYNAME " +
+ "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON PRODUCTS.TAXCAT = TC.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(false, false));
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODETYPE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/derby/productlabels.jrxml b/reports/uk/chromis/derby/productlabels.jrxml
new file mode 100644
index 00000000..c3d2f27c
--- /dev/null
+++ b/reports/uk/chromis/derby/productlabels.jrxml
@@ -0,0 +1,264 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/products.bs b/reports/uk/chromis/derby/products.bs
new file mode 100644
index 00000000..cf867ce8
--- /dev/null
+++ b/reports/uk/chromis/derby/products.bs
@@ -0,0 +1,58 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Catalog");
+report.setReport("/uk/chromis/reports/products");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, PRODUCTS.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, TC.ID AS TAXCAT, TC.NAME AS TAXCATNAME, CATEGORIES.ID AS CATEGORY, CATEGORIES.NAME AS CATEGORYNAME " +
+ "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON PRODUCTS.TAXCAT = TC.ID " +
+ "WHERE PRODUCTS.ISCATALOG = TRUE AND ?(QBF_FILTER)" +
+ "ORDER BY CATEGORIES.NAME, PRODUCTS.CATORDER, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(false, false));
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/derby/products.jrxml b/reports/uk/chromis/derby/products.jrxml
new file mode 100644
index 00000000..1f194c05
--- /dev/null
+++ b/reports/uk/chromis/derby/products.jrxml
@@ -0,0 +1,344 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/productsales.bs b/reports/uk/chromis/derby/productsales.bs
new file mode 100644
index 00000000..ca8a4855
--- /dev/null
+++ b/reports/uk/chromis/derby/productsales.bs
@@ -0,0 +1,64 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ProductSales");
+report.setReport("/uk/chromis/reports/productsales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+ "SELECT " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "SUM(TICKETLINES.UNITS) AS UNITS, " +
+ "SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL " +
+ "FROM RECEIPTS, TICKETS, TICKETLINES, PRODUCTS " +
+ "WHERE RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND TICKETLINES.PRODUCT = PRODUCTS.ID AND ?(QBF_FILTER) " +
+ "GROUP BY PRODUCTS.REFERENCE, PRODUCTS.NAME " +
+ "ORDER BY PRODUCTS.NAME");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReport());
+
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
+
diff --git a/reports/uk/chromis/derby/productsales.jrxml b/reports/uk/chromis/derby/productsales.jrxml
new file mode 100644
index 00000000..5aec2263
--- /dev/null
+++ b/reports/uk/chromis/derby/productsales.jrxml
@@ -0,0 +1,233 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/productsalesprofit.bs b/reports/uk/chromis/derby/productsalesprofit.bs
new file mode 100644
index 00000000..5350647c
--- /dev/null
+++ b/reports/uk/chromis/derby/productsalesprofit.bs
@@ -0,0 +1,82 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.SalesProfit");
+report.setReport("/uk/chromis/reports/productsalesprofit");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, " +
+ "SUM(TICKETLINES.UNITS) AS SOLD_UNITS, " +
+ "SUM(TICKETLINES.UNITS * PRODUCTS.PRICEBUY) AS COST_VALUE, " +
+ "SUM(TICKETLINES.UNITS * PRODUCTS.PRICESELL) AS EXPECTED_SALES_VALUE, " +
+ "SUM(TICKETLINES.PRICE) AS ACTUAL_SALES_VALUE, " +
+ "SUM(TICKETLINES.UNITS * PRODUCTS.PRICESELL) " +
+ "- SUM(TICKETLINES.UNITS * PRODUCTS.PRICEBUY) " +
+ "AS EXPECTED_PROFIT, " +
+ "SUM(TICKETLINES.PRICE) - SUM(TICKETLINES.UNITS * PRODUCTS.PRICEBUY) " +
+ "AS ACTUAL_PROFIT " +
+ "FROM (TICKETLINES TICKETLINES " +
+ "INNER JOIN RECEIPTS RECEIPTS " +
+ "ON (TICKETLINES.TICKET = RECEIPTS.ID)) " +
+ "LEFT OUTER JOIN PRODUCTS PRODUCTS " +
+ "ON (TICKETLINES.PRODUCT = PRODUCTS.ID) " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY TICKETLINES.PRODUCT, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL " +
+ "ORDER BY PRODUCTS.REFERENCE ASC");
+
+
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SOLD_UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("COST_VALUE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("EXPECTED_SALES_VALUE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("ACTUAL_SALES_VALUE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("EXPECTED_PROFIT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("ACTUAL_PROFIT", uk.chromis.data.loader.Datas.DOUBLE);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/productsalesprofit.jrxml b/reports/uk/chromis/derby/productsalesprofit.jrxml
new file mode 100644
index 00000000..bf2fd380
--- /dev/null
+++ b/reports/uk/chromis/derby/productsalesprofit.jrxml
@@ -0,0 +1,393 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/productscatalog.bs b/reports/uk/chromis/derby/productscatalog.bs
new file mode 100644
index 00000000..0b477288
--- /dev/null
+++ b/reports/uk/chromis/derby/productscatalog.bs
@@ -0,0 +1,57 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Products");
+report.setReport("/uk/chromis/reports/productscatalog");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, PRODUCTS.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, TC.ID AS TAXCAT, TC.NAME AS TAXCATNAME, CATEGORIES.ID AS CATEGORY, CATEGORIES.NAME AS CATEGORYNAME " +
+ "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON PRODUCTS.TAXCAT = TC.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY LOWER (PRODUCTS.NAME)");
+
+report.addParameter("CATEGORIES.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReport());
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/derby/productscatalog.jrxml b/reports/uk/chromis/derby/productscatalog.jrxml
new file mode 100644
index 00000000..01879f71
--- /dev/null
+++ b/reports/uk/chromis/derby/productscatalog.jrxml
@@ -0,0 +1,315 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/salebycustomer.bs b/reports/uk/chromis/derby/salebycustomer.bs
new file mode 100644
index 00000000..2116a102
--- /dev/null
+++ b/reports/uk/chromis/derby/salebycustomer.bs
@@ -0,0 +1,66 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.SalesByCustomer");
+report.setReport("/uk/chromis/reports/salebycustomer");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CUSTOMERS.NAME AS CNAME, " +
+ "RECEIPTS.DATENEW, " +
+ "TICKETS.TICKETID, " +
+ "PRODUCTS.NAME AS PNAME, " +
+ "TICKETS.TICKETTYPE, " +
+ "SUM(TICKETLINES.UNITS) AS UNITS, " +
+ "SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL " +
+ "FROM RECEIPTS, CUSTOMERS, TICKETS, TICKETLINES LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "WHERE CUSTOMERS.ID = TICKETS.CUSTOMER AND TICKETLINES.PRODUCT = PRODUCTS.ID AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY CUSTOMERS.NAME, RECEIPTS.DATENEW, TICKETS.TICKETID, PRODUCTS.NAME, TICKETS.TICKETTYPE " +
+ "ORDER BY CUSTOMERS.NAME, PRODUCTS.NAME, RECEIPTS.DATENEW");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addParameter("CUSTOMERS.ID");
+report.addParameter("CUSTOMERS.NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("CNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TICKETID", uk.chromis.data.loader.Datas.STRING);
+report.addField("PNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("TICKETTYPE", uk.chromis.data.loader.Datas.INT);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/salebycustomer.jrxml b/reports/uk/chromis/derby/salebycustomer.jrxml
new file mode 100644
index 00000000..cbbbc704
--- /dev/null
+++ b/reports/uk/chromis/derby/salebycustomer.jrxml
@@ -0,0 +1,459 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/salecatalog.bs b/reports/uk/chromis/derby/salecatalog.bs
new file mode 100644
index 00000000..f149c82e
--- /dev/null
+++ b/reports/uk/chromis/derby/salecatalog.bs
@@ -0,0 +1,69 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.SaleCatalog");
+report.setReport("/uk/chromis/reports/salecatalog");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+"SELECT " +
+" PRODUCTS.ID, " +
+" PRODUCTS.REFERENCE, " +
+" PRODUCTS.CODE, " +
+" PRODUCTS.NAME, " +
+" PRODUCTS.PRICESELL, " +
+" PRODUCTS.IMAGE, " +
+" TC.ID AS TAXCAT, " +
+" CATEGORIES.NAME AS CATEGORYNAME " +
+"FROM " +
+" PRODUCTS LEFT OUTER JOIN CATEGORIES ON " +
+" PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON " +
+" PRODUCTS.TAXCAT = TC.ID " +
+"WHERE PRODUCTS.ISCATALOG = TRUE AND ?(QBF_FILTER) " +
+"ORDER BY CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(false, false));
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("IMAGE", uk.chromis.data.loader.Datas.IMAGE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/derby/salecatalog.jrxml b/reports/uk/chromis/derby/salecatalog.jrxml
new file mode 100644
index 00000000..ab73d2d9
--- /dev/null
+++ b/reports/uk/chromis/derby/salecatalog.jrxml
@@ -0,0 +1,220 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/saletaxes.bs b/reports/uk/chromis/derby/saletaxes.bs
new file mode 100644
index 00000000..40289225
--- /dev/null
+++ b/reports/uk/chromis/derby/saletaxes.bs
@@ -0,0 +1,58 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+// added by g.irura @ 27/03/2010. If a retailer issues item which is
+// taxable but gets back a refund, means when this happens, the tax
+// effected initially is deducted. all taxes occur in taxlines.amount
+// where the sum is obtained. It is therefore important to show on this
+// report the taxes that were charged on a receipt but later refunded
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.SaleTaxes");
+report.setReport("/uk/chromis/reports/saletaxes");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+ "SELECT TICKETS.TICKETID, RECEIPTS.DATENEW, PAYMENTS.PAYMENT, TAXCATEGORIES.NAME, TAXLINES.AMOUNT "+
+"FROM RECEIPTS, TAXLINES, TAXES, TAXCATEGORIES,TICKETS, PAYMENTS " +
+ "WHERE PAYMENTS.RECEIPT = RECEIPTS.ID AND RECEIPTS.ID = TAXLINES.RECEIPT AND RECEIPTS.ID=TICKETS.ID AND TAXLINES.TAXID = TAXES.ID AND TAXES.CATEGORY = TAXCATEGORIES.ID AND ?(QBF_FILTER) "+
+ "ORDER BY RECEIPTS.DATENEW");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("TICKETID", uk.chromis.data.loader.Datas.INT);
+report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("AMOUNT", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/saletaxes.jrxml b/reports/uk/chromis/derby/saletaxes.jrxml
new file mode 100644
index 00000000..c91900a9
--- /dev/null
+++ b/reports/uk/chromis/derby/saletaxes.jrxml
@@ -0,0 +1,339 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/saletaxesold.jrxml b/reports/uk/chromis/derby/saletaxesold.jrxml
new file mode 100644
index 00000000..aa7f768a
--- /dev/null
+++ b/reports/uk/chromis/derby/saletaxesold.jrxml
@@ -0,0 +1,390 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/shelfedgelabels.bs b/reports/uk/chromis/derby/shelfedgelabels.bs
new file mode 100644
index 00000000..8845dfc6
--- /dev/null
+++ b/reports/uk/chromis/derby/shelfedgelabels.bs
@@ -0,0 +1,61 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.BarcodeSheet");
+report.setReport("/uk/chromis/reports/shelfedgelabels");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, PRODUCTS.CODETYPE, PRODUCTS.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, TC.ID AS TAXCAT, TC.NAME AS TAXCATNAME, CATEGORIES.ID AS CATEGORY, CATEGORIES.NAME AS CATEGORYNAME " +
+ "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON PRODUCTS.TAXCAT = TC.ID " +
+ "WHERE PRODUCTS.CODETYPE IS NOT NULL AND ?(QBF_FILTER) " +
+ "ORDER BY PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(false, false));
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODETYPE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/derby/shelfedgelabels.jrxml b/reports/uk/chromis/derby/shelfedgelabels.jrxml
new file mode 100644
index 00000000..9c910c13
--- /dev/null
+++ b/reports/uk/chromis/derby/shelfedgelabels.jrxml
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/stockchanges.bs b/reports/uk/chromis/derby/stockchanges.bs
new file mode 100644
index 00000000..669f0520
--- /dev/null
+++ b/reports/uk/chromis/derby/stockchanges.bs
@@ -0,0 +1,79 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.StockChanges");
+report.setReport("/uk/chromis/reports/stockchanges");
+report.setResourceBundle("uk/chromis/reports/stockchanges_messages");
+
+report.setSentence("SELECT L.NAME AS LOCATION, C.USERNAME AS USERNAME,"+
+" C.UPLOADTIME AS UPLOADTIME,"+
+" CASE WHEN P.NAME is null THEN '***NEW PRODUCT' ELSE P.NAME END "+
+" AS PRODUCT, P.REFERENCE AS REFERENCE,"+
+" CASE C.CHANGETYPE"+
+" WHEN 1 THEN 'Adjust'"+
+" WHEN 2 THEN 'Change'"+
+" WHEN 3 THEN 'Change'"+
+" WHEN 4 THEN 'New Value'"+
+" WHEN 5 THEN 'New Value'"+
+" WHEN 6 THEN 'New Record'"+
+" ELSE 'Unknown'"+
+" END AS CHANGETYPE,"+
+" C.FIELD AS FIELD, C.TEXTVALUE AS TEXTVALUE,"+
+" CASE C.CHANGES_PROCESSED"+
+" WHEN 0 THEN 'ACCEPT'"+
+" WHEN 1 THEN 'REJECT'"+
+" WHEN 2 THEN 'PROCESSED'"+
+" ELSE 'Unknown'"+
+" END AS CHANGES_PROCESSED, "+
+" P.NAME, P.CATEGORY, P.CODE "+
+" FROM STOCKCHANGES AS C"+
+" LEFT JOIN PRODUCTS AS P ON C.PRODUCTID = P.ID"+
+" LEFT JOIN LOCATIONS AS L ON C.LOCATION = L.ID "+
+" WHERE ?(QBF_FILTER) ");
+
+report.addParameter("UPLOADTIME");
+report.addParameter("UPLOADTIME");
+report.addParameter("LOCATIONS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addParameter("P.NAME");
+report.addParameter("P.CATEGORY");
+report.addParameter("P.CODE");
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter1());
+
+report.addField("LOCATION", uk.chromis.data.loader.Datas.STRING);
+report.addField("USERNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UPLOADTIME", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PRODUCT", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CHANGETYPE", uk.chromis.data.loader.Datas.STRING);
+report.addField("FIELD", uk.chromis.data.loader.Datas.STRING);
+report.addField("TEXTVALUE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CHANGES_PROCESSED", uk.chromis.data.loader.Datas.STRING);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/stockchanges.jrxml b/reports/uk/chromis/derby/stockchanges.jrxml
new file mode 100644
index 00000000..0e04f5d0
--- /dev/null
+++ b/reports/uk/chromis/derby/stockchanges.jrxml
@@ -0,0 +1,213 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/taxcatsales.bs b/reports/uk/chromis/derby/taxcatsales.bs
new file mode 100644
index 00000000..6a0c33d9
--- /dev/null
+++ b/reports/uk/chromis/derby/taxcatsales.bs
@@ -0,0 +1,70 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.TaxCatSales");
+report.setReport("/uk/chromis/reports/taxcatsales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.MONEY, " +
+ "CLOSEDCASH.DATEEND, " +
+ "TAXES.NAME AS TAXNAME, CATEGORIES.NAME, " +
+ "SUM(TICKETLINES.UNITS) AS QTY, " +
+ "SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) AS CATPRICE, " +
+ "SUM((TICKETLINES.PRICE * TAXES.RATE ) * TICKETLINES.UNITS) AS CATTAX, " +
+ "SUM((TICKETLINES.PRICE + TICKETLINES.PRICE * TAXES.RATE ) * TICKETLINES.UNITS) AS CATTOTAL " +
+ "FROM CLOSEDCASH, TAXES, TICKETLINES " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN TICKETS ON TICKETS.ID = TICKETLINES.TICKET " +
+ "LEFT OUTER JOIN RECEIPTS ON RECEIPTS.ID = TICKETS.ID " +
+ "WHERE PRODUCTS.ISCATALOG = TRUE AND CLOSEDCASH.MONEY = RECEIPTS.MONEY " +
+ "AND TICKETLINES.TAXID = TAXES.ID " +
+ "AND ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.MONEY, CLOSEDCASH.DATEEND, TAXES.NAME, CATEGORIES.NAME " +
+ "ORDER BY TAXES.NAME, CATEGORIES.NAME");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TAXNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("QTY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATPRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATTAX", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/taxcatsales.jrxml b/reports/uk/chromis/derby/taxcatsales.jrxml
new file mode 100644
index 00000000..6a34ae17
--- /dev/null
+++ b/reports/uk/chromis/derby/taxcatsales.jrxml
@@ -0,0 +1,462 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/taxes.bs b/reports/uk/chromis/derby/taxes.bs
new file mode 100644
index 00000000..8f12c781
--- /dev/null
+++ b/reports/uk/chromis/derby/taxes.bs
@@ -0,0 +1,52 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ReportTaxes");
+report.setReport("/uk/chromis/reports/taxes");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+ "SELECT TAXCATEGORIES.ID AS TAXID, TAXCATEGORIES.NAME AS TAXNAME, SUM(TAXLINES.AMOUNT) AS TOTALTAXES " +
+ "FROM RECEIPTS, TAXLINES, TAXES, TAXCATEGORIES " +
+ "WHERE RECEIPTS.ID = TAXLINES.RECEIPT AND TAXLINES.TAXID = TAXES.ID AND TAXES.CATEGORY = TAXCATEGORIES.ID " +
+ "AND ?(QBF_FILTER) " +
+ "GROUP BY TAXCATEGORIES.ID, TAXCATEGORIES.NAME");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+
+report.addQBFFilter(paramdates);
+
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("TOTALTAXES", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
diff --git a/reports/uk/chromis/derby/taxes.jrxml b/reports/uk/chromis/derby/taxes.jrxml
new file mode 100644
index 00000000..65ebe7c8
--- /dev/null
+++ b/reports/uk/chromis/derby/taxes.jrxml
@@ -0,0 +1,299 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/ticketsample.jrxml b/reports/uk/chromis/derby/ticketsample.jrxml
new file mode 100644
index 00000000..da797cf5
--- /dev/null
+++ b/reports/uk/chromis/derby/ticketsample.jrxml
@@ -0,0 +1,306 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/ticketsample_lines.jrxml b/reports/uk/chromis/derby/ticketsample_lines.jrxml
similarity index 100%
rename from reports/uk/chromis/reports/ticketsample_lines.jrxml
rename to reports/uk/chromis/derby/ticketsample_lines.jrxml
diff --git a/reports/uk/chromis/derby/timeseriesproduct.bs b/reports/uk/chromis/derby/timeseriesproduct.bs
new file mode 100644
index 00000000..6e7d942e
--- /dev/null
+++ b/reports/uk/chromis/derby/timeseriesproduct.bs
@@ -0,0 +1,90 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.TimeSeriesProduct");
+report.setReport("/uk/chromis/reports/timeseriesproduct");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CATEGORIES.NAME AS CATNAME, " +
+ "PRODUCTS.NAME AS PRODUCT, " +
+ "PRODUCTS.REFERENCE AS REF, " +
+ "PRODUCTS.CODE AS BARCODE, " +
+ "PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, " +
+ "PRODUCTS.STOCKCOST, " +
+ "PRODUCTS.STOCKVOLUME, " +
+ "TAXCATEGORIES.ID AS TAXCAT, " +
+ "TAXCATEGORIES.NAME AS TAXCATNAME, " +
+ "PEOPLE.NAME AS SELLER, " +
+ "RECEIPTS.DATENEW AS RECEIPTDATE, " +
+ "SUM(TICKETLINES.UNITS) AS TOTALUNIT " +
+ "FROM RECEIPTS LEFT OUTER JOIN TICKETS ON RECEIPTS.ID = TICKETS.ID LEFT OUTER JOIN TICKETLINES ON " +
+ "TICKETS.ID = TICKETLINES.TICKET, PRODUCTS LEFT OUTER JOIN CATEGORIES ON " +
+ "PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES ON PRODUCTS.TAXCAT = TAXCATEGORIES.ID, " +
+ "PEOPLE " +
+ "WHERE PRODUCTS.ID = TICKETLINES.PRODUCT AND PEOPLE.ID = TICKETS.PERSON AND PRODUCTS.ISCATALOG = true AND ?(QBF_FILTER) " +
+ "GROUP BY CATEGORIES.NAME, PRODUCTS.NAME, PRODUCTS.REFERENCE,PRODUCTS.CODE,PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, PRODUCTS.STOCKCOST,PRODUCTS.STOCKVOLUME, TAXCATEGORIES.ID, TAXCATEGORIES.NAME, PEOPLE.NAME, RECEIPTS.DATENEW " +
+ "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME, RECEIPTS.DATENEW, PEOPLE.NAME");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReport());
+
+report.addField("CATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRODUCT", uk.chromis.data.loader.Datas.STRING);
+report.addField("REF", uk.chromis.data.loader.Datas.STRING);
+report.addField("BARCODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKCOST", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKVOLUME", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("SALER", uk.chromis.data.loader.Datas.STRING);
+report.addField("RECEIPTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTALUNIT", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
+
diff --git a/reports/uk/chromis/derby/timeseriesproduct.jrxml b/reports/uk/chromis/derby/timeseriesproduct.jrxml
new file mode 100644
index 00000000..347cb08f
--- /dev/null
+++ b/reports/uk/chromis/derby/timeseriesproduct.jrxml
@@ -0,0 +1,515 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/top10sales.bs b/reports/uk/chromis/derby/top10sales.bs
new file mode 100644
index 00000000..088fd109
--- /dev/null
+++ b/reports/uk/chromis/derby/top10sales.bs
@@ -0,0 +1,70 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Top10Sales");
+report.setReport("/uk/chromis/reports/top10sales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+ "SELECT " +
+ "PRODUCTS.REFERENCE,PRODUCTS.NAME,PRODUCTS.PRICEBUY,PRODUCTS.PRICESELL, " +
+ "SUM(TICKETLINES.UNITS) AS UNITS, " +
+ "SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) AS SUBTOTAL, " +
+ "SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) * TAXES.RATE) As TAXES, " +
+ "SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) + SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) * TAXES.RATE) AS GROSSTOTAL " +
+ "FROM TICKETLINES " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN TICKETS ON TICKETS.ID = TICKETLINES.TICKET " +
+ "LEFT OUTER JOIN RECEIPTS ON RECEIPTS.ID = TICKETS.ID, TAXES " +
+ "WHERE RECEIPTS.ID = TICKETS.ID " +
+ "AND TICKETS.ID = TICKETLINES.TICKET " +
+ "AND TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "AND TICKETLINES.TAXID = TAXES.ID " +
+ "AND ?(QBF_FILTER) " +
+ "GROUP BY PRODUCTS.REFERENCE, PRODUCTS.NAME,PRODUCTS.PRICEBUY,PRODUCTS.PRICESELL " +
+ "ORDER BY GROSSTOTAL DESC " +
+ "FETCH FIRST 10 ROWS ONLY");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SUBTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXES", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("GROSSTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report;
+
diff --git a/reports/uk/chromis/derby/top10sales.jrxml b/reports/uk/chromis/derby/top10sales.jrxml
new file mode 100644
index 00000000..04914e34
--- /dev/null
+++ b/reports/uk/chromis/derby/top10sales.jrxml
@@ -0,0 +1,348 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/top10sales1.jrxml b/reports/uk/chromis/derby/top10sales1.jrxml
new file mode 100644
index 00000000..b3fe569a
--- /dev/null
+++ b/reports/uk/chromis/derby/top10sales1.jrxml
@@ -0,0 +1,348 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/updatedprices.bs b/reports/uk/chromis/derby/updatedprices.bs
new file mode 100644
index 00000000..d831a238
--- /dev/null
+++ b/reports/uk/chromis/derby/updatedprices.bs
@@ -0,0 +1,43 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.UpdatedPrices");
+report.setReport("/uk/chromis/reports/updatedprices");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.PRICEBUY,CSVIMPORT.PRICESELL,CSVIMPORT.PREVIOUSBUY,CSVIMPORT.PREVIOUSSELL"+
+ " FROM CSVIMPORT WHERE CSVIMPORT.CSVERROR='Updated Price Details' ");
+
+
+
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("pricebuy", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("pricesell", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("previousbuy", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("previoussell", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/derby/updatedprices.jrxml b/reports/uk/chromis/derby/updatedprices.jrxml
new file mode 100644
index 00000000..e2070122
--- /dev/null
+++ b/reports/uk/chromis/derby/updatedprices.jrxml
@@ -0,0 +1,259 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/derby/usersales.bs b/reports/uk/chromis/derby/usersales.bs
new file mode 100644
index 00000000..cbf9f625
--- /dev/null
+++ b/reports/uk/chromis/derby/usersales.bs
@@ -0,0 +1,49 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.UserSells");
+report.setReport("/uk/chromis/reports/usersales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PEOPLE.NAME, MIN(RECEIPTS.DATENEW) AS STARTDATE, MAX(RECEIPTS.DATENEW) AS ENDDATE, SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL " +
+ "FROM PEOPLE, RECEIPTS, TICKETS, TICKETLINES WHERE PEOPLE.ID = TICKETS.PERSON AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY PEOPLE.NAME ORDER BY PEOPLE.NAME");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
diff --git a/reports/uk/chromis/derby/usersales.jrxml b/reports/uk/chromis/derby/usersales.jrxml
new file mode 100644
index 00000000..cf25dd22
--- /dev/null
+++ b/reports/uk/chromis/derby/usersales.jrxml
@@ -0,0 +1,360 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/Barcodesheet.jrxml b/reports/uk/chromis/mysql/Barcodesheet.jrxml
new file mode 100644
index 00000000..a782f1d9
--- /dev/null
+++ b/reports/uk/chromis/mysql/Barcodesheet.jrxml
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/badprice.bs b/reports/uk/chromis/mysql/badprice.bs
new file mode 100644
index 00000000..679a0d60
--- /dev/null
+++ b/reports/uk/chromis/mysql/badprice.bs
@@ -0,0 +1,42 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.NewProducts");
+report.setReport("/uk/chromis/reports/newproducts");
+report.setResourceBundle("uk/chromis/reports/newproducts_messages");
+
+report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.PRICEBUY, CSVIMPORT.PRICESELL"+
+ " FROM CSVIMPORT WHERE CSVIMPORT.CSVERROR='New product'");
+
+
+
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("pricebuy", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("pricesell", uk.chromis.data.loader.Datas.DOUBLE);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/badprice.jrxml b/reports/uk/chromis/mysql/badprice.jrxml
new file mode 100644
index 00000000..d81c2465
--- /dev/null
+++ b/reports/uk/chromis/mysql/badprice.jrxml
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/barcodesheet.bs b/reports/uk/chromis/mysql/barcodesheet.bs
new file mode 100644
index 00000000..44176e16
--- /dev/null
+++ b/reports/uk/chromis/mysql/barcodesheet.bs
@@ -0,0 +1,50 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.BarcodeSheet");
+report.setReport("/uk/chromis/reports/barcodesheet");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT "
+ + "PRODUCTS.CODE, PRODUCTS.CODETYPE, PRODUCTS.NAME, "
+ + "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE, "
+ + "CATEGORIES.ID AS CATEGORY, "
+ + "CATEGORIES.NAME AS CATEGORYNAME "
+ + "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID "
+ + "WHERE PRODUCTS.CODETYPE IS NOT NULL AND ?(QBF_FILTER) "
+ + "ORDER BY PRODUCTS.SITEGUID, CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter1());
+
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODETYPE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/mysql/bestsellers.bs b/reports/uk/chromis/mysql/bestsellers.bs
new file mode 100644
index 00000000..56f34f3b
--- /dev/null
+++ b/reports/uk/chromis/mysql/bestsellers.bs
@@ -0,0 +1,66 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.BestSellers");
+report.setReport("/uk/chromis/reports/bestsellers");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+ "SELECT " +
+ "PRODUCTS.REFERENCE,PRODUCTS.NAME, PRODUCTS.PRICESELL, " +
+ "SUM(TICKETLINES.UNITS) AS UNITS, " +
+ "SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) + SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) * TAXES.RATE) AS GROSSTOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM TICKETLINES " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN TICKETS ON TICKETS.ID = TICKETLINES.TICKET " +
+ "LEFT OUTER JOIN RECEIPTS ON RECEIPTS.ID = TICKETS.ID, TAXES " +
+ "WHERE RECEIPTS.ID = TICKETS.ID " +
+ "AND TICKETS.ID = TICKETLINES.TICKET " +
+ "AND TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "AND TICKETLINES.TAXID = TAXES.ID " +
+ "AND ?(QBF_FILTER) " +
+ "GROUP BY PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.PRICESELL " +
+ "ORDER BY UNITS DESC ");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/bestsellers.jrxml b/reports/uk/chromis/mysql/bestsellers.jrxml
new file mode 100644
index 00000000..3b37ec58
--- /dev/null
+++ b/reports/uk/chromis/mysql/bestsellers.jrxml
@@ -0,0 +1,347 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/bestsellersbysite.bs b/reports/uk/chromis/mysql/bestsellersbysite.bs
new file mode 100644
index 00000000..4386315c
--- /dev/null
+++ b/reports/uk/chromis/mysql/bestsellersbysite.bs
@@ -0,0 +1,68 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.BestSellers");
+report.setReport("/uk/chromis/reports/bestsellersbysite");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+ "SELECT " +
+ "PRODUCTS.REFERENCE,PRODUCTS.NAME, PRODUCTS.PRICESELL, " +
+ "SUM(TICKETLINES.UNITS) AS UNITS, " +
+ "SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) + SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) * TAXES.RATE) AS TOTAL, " +
+
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+
+ "FROM TICKETLINES " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN TICKETS ON TICKETS.ID = TICKETLINES.TICKET " +
+ "LEFT OUTER JOIN RECEIPTS ON RECEIPTS.ID = TICKETS.ID, TAXES " +
+ "WHERE RECEIPTS.ID = TICKETS.ID " +
+ "AND TICKETS.ID = TICKETLINES.TICKET " +
+ "AND TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "AND TICKETLINES.TAXID = TAXES.ID " +
+ "AND ?(QBF_FILTER) " +
+ "GROUP BY SITE, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.PRICESELL " +
+ "ORDER BY SITE, UNITS DESC ");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/bestsellersbysite.jrxml b/reports/uk/chromis/mysql/bestsellersbysite.jrxml
new file mode 100644
index 00000000..d8393654
--- /dev/null
+++ b/reports/uk/chromis/mysql/bestsellersbysite.jrxml
@@ -0,0 +1,455 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/cashflow.bs b/reports/uk/chromis/mysql/cashflow.bs
new file mode 100644
index 00000000..23e58a53
--- /dev/null
+++ b/reports/uk/chromis/mysql/cashflow.bs
@@ -0,0 +1,54 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CashFlow");
+report.setReport("/uk/chromis/reports/cashflow");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "PAYMENTS.PAYMENT, " +
+ "SUM( PAYMENTS.TOTAL ) AS PAYMENT_TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PAYMENTS.SITEGUID) AS SITE " +
+ "FROM CLOSEDCASH, PAYMENTS, RECEIPTS " +
+ "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY " +
+ "AND PAYMENTS.RECEIPT = RECEIPTS.ID AND ?(QBF_FILTER) " +
+ "GROUP BY PAYMENTS.SITEGUID, PAYMENTS.PAYMENT");
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("PAYMENTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("PAYMENT_TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+return report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/cashflow.jrxml b/reports/uk/chromis/mysql/cashflow.jrxml
new file mode 100644
index 00000000..778beba1
--- /dev/null
+++ b/reports/uk/chromis/mysql/cashflow.jrxml
@@ -0,0 +1,328 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/cashregisterlog.bs b/reports/uk/chromis/mysql/cashregisterlog.bs
new file mode 100644
index 00000000..62544e11
--- /dev/null
+++ b/reports/uk/chromis/mysql/cashregisterlog.bs
@@ -0,0 +1,56 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CashRegisterLog");
+report.setReport("/uk/chromis/reports/cashregisterlog");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "RECEIPTS.DATENEW, " +
+ "PAYMENTS.PAYMENT, " +
+ "SUM(PAYMENTS.TOTAL ) AS PAYMENT_TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = RECEIPTS.SITEGUID) AS SITE " +
+ "FROM RECEIPTS " +
+ "LEFT JOIN PAYMENTS ON RECEIPTS.ID = PAYMENTS.RECEIPT " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY RECEIPTS.SITEGUID, RECEIPTS.DATENEW, PAYMENTS.PAYMENT");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("PAYMENT_TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+return report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/cashregisterlog.jrxml b/reports/uk/chromis/mysql/cashregisterlog.jrxml
new file mode 100644
index 00000000..dc1c32e9
--- /dev/null
+++ b/reports/uk/chromis/mysql/cashregisterlog.jrxml
@@ -0,0 +1,355 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/categorysales.bs b/reports/uk/chromis/mysql/categorysales.bs
new file mode 100644
index 00000000..a3bf39fb
--- /dev/null
+++ b/reports/uk/chromis/mysql/categorysales.bs
@@ -0,0 +1,64 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CategorySales");
+report.setReport("/uk/chromis/reports/categorysales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+
+report.setSentence("SELECT CATEGORIES.ID, CATEGORIES.NAME, " +
+"SUM(TICKETLINES.UNITS) AS QTY, " +
+"SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) AS CATPRICE, " +
+"SUM((PRODUCTS.PRICESELL * TICKETLINES.UNITS)-((PRODUCTS.ISVPRICE ) * (TICKETLINES.PRICE * TICKETLINES.UNITS))) AS DISC, " +
+"SUM((TICKETLINES.PRICE * TAXES.RATE)* TICKETLINES.UNITS) AS CATTAX, " +
+"SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) + ((TICKETLINES.PRICE * TAXES.RATE)* TICKETLINES.UNITS)) AS CATTOTAL, " +
+"(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = TICKETLINES.SITEGUID) AS SITE " +
+"FROM (TICKETS INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID) INNER JOIN ((CATEGORIES INNER JOIN PRODUCTS ON CATEGORIES.ID = PRODUCTS.CATEGORY) INNER JOIN (TAXES INNER JOIN TICKETLINES ON TAXES.ID = TICKETLINES.TAXID) ON PRODUCTS.ID = TICKETLINES.PRODUCT) ON TICKETS.ID = TICKETLINES.TICKET " +
+"WHERE ?(QBF_FILTER) " +
+"GROUP BY RECEIPTS.SITEGUID, CATEGORIES.ID, CATEGORIES.NAME " +
+"ORDER BY RECEIPTS.SITEGUID, CATEGORIES.NAME");
+
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("QTY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATPRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("DISC", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATTAX", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/categorysales.jrxml b/reports/uk/chromis/mysql/categorysales.jrxml
new file mode 100644
index 00000000..aaeca3d7
--- /dev/null
+++ b/reports/uk/chromis/mysql/categorysales.jrxml
@@ -0,0 +1,459 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/chartsales.bs b/reports/uk/chromis/mysql/chartsales.bs
new file mode 100644
index 00000000..cb04d6bc
--- /dev/null
+++ b/reports/uk/chromis/mysql/chartsales.bs
@@ -0,0 +1,58 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see ..
+//
+// MySQL July 2016
+//
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.SalesChart");
+report.setReport("/uk/chromis/reports/chartsales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT CATEGORIES.ID, CATEGORIES.NAME, " +
+ "Sum(TICKETLINES.UNITS) AS QTY," +
+ "Sum((TICKETLINES.PRICE * TICKETLINES.UNITS) + ((TICKETLINES.PRICE * TAXES.RATE)* TICKETLINES.UNITS)) AS CATTOTAL " +
+
+ "FROM (TICKETS INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID) " +
+ "INNER JOIN ((CATEGORIES INNER JOIN PRODUCTS ON CATEGORIES.ID = PRODUCTS.CATEGORY) " +
+ "INNER JOIN (TAXES INNER JOIN TICKETLINES ON TAXES.ID = TICKETLINES.TAXID) " +
+ "ON PRODUCTS.ID = TICKETLINES.PRODUCT) ON TICKETS.ID = TICKETLINES.TICKET " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY CATEGORIES.ID, CATEGORIES.NAME");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("QTY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
diff --git a/reports/uk/chromis/mysql/chartsales.jrxml b/reports/uk/chromis/mysql/chartsales.jrxml
new file mode 100644
index 00000000..633946ff
--- /dev/null
+++ b/reports/uk/chromis/mysql/chartsales.jrxml
@@ -0,0 +1,223 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/closedpos.bs b/reports/uk/chromis/mysql/closedpos.bs
new file mode 100644
index 00000000..007d49bf
--- /dev/null
+++ b/reports/uk/chromis/mysql/closedpos.bs
@@ -0,0 +1,64 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Closing");
+report.setReport("/uk/chromis/reports/closedpos");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.HOSTSEQUENCE, " +
+ "CLOSEDCASH.MONEY, " +
+ "CLOSEDCASH.DATESTART, " +
+ "CLOSEDCASH.DATEEND, " +
+ "PAYMENTS.PAYMENT, " +
+ "SUM(PAYMENTS.TOTAL) AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = CLOSEDCASH.SITEGUID) AS SITE " +
+ "FROM CLOSEDCASH, PAYMENTS, RECEIPTS " +
+ "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY AND PAYMENTS.RECEIPT = RECEIPTS.ID AND ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.SITEGUID, CLOSEDCASH.HOST, CLOSEDCASH.HOSTSEQUENCE, CLOSEDCASH.MONEY, CLOSEDCASH.DATESTART, CLOSEDCASH.DATEEND, PAYMENTS.PAYMENT " +
+ "ORDER BY CLOSEDCASH.SITEGUID, CLOSEDCASH.HOST, CLOSEDCASH.HOSTSEQUENCE");
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("HOSTSEQUENCE", uk.chromis.data.loader.Datas.INT);
+report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATESTART", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/mysql/closedpos.jrxml b/reports/uk/chromis/mysql/closedpos.jrxml
new file mode 100644
index 00000000..79cf6647
--- /dev/null
+++ b/reports/uk/chromis/mysql/closedpos.jrxml
@@ -0,0 +1,473 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/closedpos_1.bs b/reports/uk/chromis/mysql/closedpos_1.bs
new file mode 100644
index 00000000..a1a17d5d
--- /dev/null
+++ b/reports/uk/chromis/mysql/closedpos_1.bs
@@ -0,0 +1,64 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Closing2");
+report.setReport("/uk/chromis/reports/closedpos_1");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.HOSTSEQUENCE, " +
+ "CLOSEDCASH.MONEY, " +
+ "CLOSEDCASH.DATESTART, " +
+ "CLOSEDCASH.DATEEND, " +
+ "PAYMENTS.PAYMENT, " +
+ "SUM(PAYMENTS.TOTAL) AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = CLOSEDCASH.SITEGUID) AS SITE " +
+ "FROM CLOSEDCASH, PAYMENTS, RECEIPTS " +
+ "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY AND PAYMENTS.RECEIPT = RECEIPTS.ID AND ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.SITEGUID, CLOSEDCASH.HOST, CLOSEDCASH.HOSTSEQUENCE, CLOSEDCASH.MONEY, CLOSEDCASH.DATESTART, CLOSEDCASH.DATEEND, PAYMENTS.PAYMENT " +
+ "ORDER BY CLOSEDCASH.SITEGUID, CLOSEDCASH.HOST, CLOSEDCASH.HOSTSEQUENCE");
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("HOSTSEQUENCE", uk.chromis.data.loader.Datas.INT);
+report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATESTART", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/mysql/closedpos_1.jrxml b/reports/uk/chromis/mysql/closedpos_1.jrxml
new file mode 100644
index 00000000..6d50a981
--- /dev/null
+++ b/reports/uk/chromis/mysql/closedpos_1.jrxml
@@ -0,0 +1,221 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/closedproducts.bs b/reports/uk/chromis/mysql/closedproducts.bs
new file mode 100644
index 00000000..c168b2ba
--- /dev/null
+++ b/reports/uk/chromis/mysql/closedproducts.bs
@@ -0,0 +1,80 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ClosedProducts");
+report.setReport("/uk/chromis/reports/closedproducts");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.MONEY, " +
+ "CLOSEDCASH.DATEEND, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "PRODUCTS.PRICESELL+(PRODUCTS.PRICESELL*TAXES.RATE) AS PRICE, " +
+ "Sum(TICKETLINES.UNITS) AS UNITS, " +
+ "Sum((PRODUCTS.PRICESELL+PRODUCTS.PRICESELL*TAXES.RATE)*UNITS) AS VALUE, " +
+ "Sum((PRODUCTS.PRICESELL+PRODUCTS.PRICESELL*TAXES.RATE)*TICKETLINES.UNITS-(TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS DISCOUNT, " +
+ "Sum((TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = CLOSEDCASH.SITEGUID) AS SITE " +
+ "FROM ((TICKETS INNER JOIN (TICKETLINES INNER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID) " +
+ "ON TICKETS.ID = TICKETLINES.TICKET) INNER JOIN (RECEIPTS INNER JOIN CLOSEDCASH " +
+ "ON RECEIPTS.MONEY = CLOSEDCASH.MONEY) ON TICKETS.ID = RECEIPTS.ID) INNER JOIN taxes ON TICKETLINES.TAXID = taxes.ID " +
+ "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY PRODUCTS.SITEGUID, CLOSEDCASH.HOST, CLOSEDCASH.MONEY, CLOSEDCASH.DATEEND, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.PRICESELL+(PRODUCTS.PRICESELL*TAXES.RATE) " +
+ "ORDER BY PRODUCTS.SITEGUID, PRODUCTS.NAME, CLOSEDCASH.HOST, CLOSEDCASH.DATEEND");
+
+
+paramdates = new uk.chromis.pos.ticket.ProductFilterReportWithDates();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.SITEGUID");
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(paramdates);
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("VALUE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("DISCOUNT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/closedproducts.jrxml b/reports/uk/chromis/mysql/closedproducts.jrxml
new file mode 100644
index 00000000..3086ce97
--- /dev/null
+++ b/reports/uk/chromis/mysql/closedproducts.jrxml
@@ -0,0 +1,670 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/closedproducts_1.bs b/reports/uk/chromis/mysql/closedproducts_1.bs
new file mode 100644
index 00000000..40d05e92
--- /dev/null
+++ b/reports/uk/chromis/mysql/closedproducts_1.bs
@@ -0,0 +1,73 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ClosedProducts");
+report.setReport("/uk/chromis/reports/closedproducts_1");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.DATESTART, " +
+ "CLOSEDCASH.DATEEND, " +
+ "TAXES.NAME AS TAXNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "PRODUCTS.PRICESELL, " +
+ "Sum(TICKETLINES.UNITS) AS UNITS, " +
+ "Sum((TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = CLOSEDCASH.SITEGUID) AS SITE " +
+ "FROM (TAXES INNER JOIN " +
+ "((PRODUCTS INNER JOIN " +
+ "(TICKETS INNER JOIN TICKETLINES ON TICKETS.ID = TICKETLINES.TICKET) " +
+ "ON PRODUCTS.ID = TICKETLINES.PRODUCT) " +
+ "INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID) " +
+ "ON TAXES.ID = TICKETLINES.TAXID) INNER JOIN CLOSEDCASH " +
+ "ON RECEIPTS.MONEY = CLOSEDCASH.MONEY " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.SITEGUID, CLOSEDCASH.HOST, CLOSEDCASH.DATEEND, CLOSEDCASH.DATESTART, TAXES.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.PRICESELL " +
+ "ORDER BY CLOSEDCASH.SITEGUID, CLOSEDCASH.HOST, TAXES.NAME, PRODUCTS.NAME");
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATESTART", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TAXNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/closedproducts_1.jrxml b/reports/uk/chromis/mysql/closedproducts_1.jrxml
new file mode 100644
index 00000000..795d2f57
--- /dev/null
+++ b/reports/uk/chromis/mysql/closedproducts_1.jrxml
@@ -0,0 +1,482 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/closedproducts_ean.bs b/reports/uk/chromis/mysql/closedproducts_ean.bs
new file mode 100644
index 00000000..20def40b
--- /dev/null
+++ b/reports/uk/chromis/mysql/closedproducts_ean.bs
@@ -0,0 +1,87 @@
+// Closedproducts Report with EAN-code instead of Ref.ID
+//
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+// **************************************************************************
+//
+// Derby & PostgreSQl July 2016
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ClosedProductsEAN");
+report.setReport("/uk/chromis/reports/closedproducts_ean");
+report.setResourceBundle("uk/chromis/reports/closedproducts_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.MONEY, " +
+ "CLOSEDCASH.DATEEND, " +
+ "PRODUCTS.CODE, " +
+ "(SELECT CATEGORIES.NAME FROM CATEGORIES WHERE PRODUCTS.CATEGORY = CATEGORIES.ID), " +
+ "PRODUCTS.NAME, " +
+ "Sum(PRODUCTS.PRICESELL+(PRODUCTS.PRICESELL*TAXES.RATE)) AS PRICE, " +
+ "Sum(TICKETLINES.UNITS) AS UNITS, " +
+ "Sum((PRODUCTS.PRICESELL+PRODUCTS.PRICESELL*TAXES.RATE)*UNITS) AS VALUE, " +
+ "Sum((PRODUCTS.PRICESELL+PRODUCTS.PRICESELL*TAXES.RATE)*TICKETLINES.UNITS-(TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS DISCOUNT, " +
+ "Sum((TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS TOTAL " +
+ "FROM ((TICKETS INNER JOIN (TICKETLINES INNER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID) " +
+ "ON TICKETS.ID = TICKETLINES.TICKET) INNER JOIN (RECEIPTS INNER JOIN CLOSEDCASH " +
+ "ON RECEIPTS.MONEY = CLOSEDCASH.MONEY) ON TICKETS.ID = RECEIPTS.ID) INNER JOIN taxes ON TICKETLINES.TAXID = taxes.ID " +
+ "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.MONEY, CLOSEDCASH.DATEEND, PRODUCTS.CODE, PRODUCTS.NAME " +
+ "ORDER BY PRODUCTS.NAME, CLOSEDCASH.HOST, CLOSEDCASH.DATEEND");
+
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+// JG - 8 Jan 14 paramdates.setEndDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter());
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("VALUE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("DISCOUNT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/closedproducts_ean.jrxml b/reports/uk/chromis/mysql/closedproducts_ean.jrxml
new file mode 100644
index 00000000..bb26d25c
--- /dev/null
+++ b/reports/uk/chromis/mysql/closedproducts_ean.jrxml
@@ -0,0 +1,631 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/customers.bs b/reports/uk/chromis/mysql/customers.bs
new file mode 100644
index 00000000..7d76da5b
--- /dev/null
+++ b/reports/uk/chromis/mysql/customers.bs
@@ -0,0 +1,55 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersReport");
+report.setReport("/uk/chromis/reports/customers");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT ID, TAXID, NAME, ADDRESS, NOTES, CARD, MAXDEBT, CURDATE, CURDEBT, DISCOUNT, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = CUSTOMERS.SITEGUID) AS SITE " +
+ "FROM CUSTOMERS " +
+ "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND ?(QBF_FILTER) " +
+ "ORDER BY SITE ");
+
+report.addParameter("ID");
+report.addParameter("NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
+report.addField("NOTES", uk.chromis.data.loader.Datas.STRING);
+report.addField("CARD", uk.chromis.data.loader.Datas.STRING);
+report.addField("MAXDEBT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CURDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("CURDEBT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("DISCOUNT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/customers.jrxml b/reports/uk/chromis/mysql/customers.jrxml
new file mode 100644
index 00000000..966b9ef8
--- /dev/null
+++ b/reports/uk/chromis/mysql/customers.jrxml
@@ -0,0 +1,337 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/customers_export.bs b/reports/uk/chromis/mysql/customers_export.bs
new file mode 100644
index 00000000..5ec2953f
--- /dev/null
+++ b/reports/uk/chromis/mysql/customers_export.bs
@@ -0,0 +1,45 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersExport");
+report.setReport("/uk/chromis/reports/customers_export");
+report.setResourceBundle("uk/chromis/reports/customers_messages");
+
+report.setSentence("SELECT ID,NAME,FIRSTNAME,LASTNAME,ADDRESS,ADDRESS2,CITY,POSTAL,PHONE,EMAIL " +
+ "FROM CUSTOMERS " +
+ "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND ?(QBF_FILTER)" +
+ "ORDER BY NAME ");
+
+report.addParameter("ID");
+report.addParameter("NAME");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("FIRSTNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("LASTNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS2", uk.chromis.data.loader.Datas.STRING);
+report.addField("CITY", uk.chromis.data.loader.Datas.STRING);
+report.addField("POSTAL", uk.chromis.data.loader.Datas.STRING);
+report.addField("PHONE", uk.chromis.data.loader.Datas.STRING);
+report.addField("EMAIL", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/customers_export.jrxml b/reports/uk/chromis/mysql/customers_export.jrxml
new file mode 100644
index 00000000..32dea957
--- /dev/null
+++ b/reports/uk/chromis/mysql/customers_export.jrxml
@@ -0,0 +1,242 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/customers_list.bs b/reports/uk/chromis/mysql/customers_list.bs
new file mode 100644
index 00000000..376af21f
--- /dev/null
+++ b/reports/uk/chromis/mysql/customers_list.bs
@@ -0,0 +1,55 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersList");
+report.setReport("/uk/chromis/reports/customers_list");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT TAXID, NAME, FIRSTNAME, LASTNAME,ADDRESS,ADDRESS2,CITY,POSTAL,PHONE,EMAIL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = CUSTOMERS.SITEGUID) AS SITE " +
+ "FROM CUSTOMERS " +
+ "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND ?(QBF_FILTER)" +
+ "ORDER BY CUSTOMERS.SITEGUID, NAME ");
+
+report.addParameter("TAXID");
+report.addParameter("NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("FIRSTNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("LASTNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS2", uk.chromis.data.loader.Datas.STRING);
+report.addField("CITY", uk.chromis.data.loader.Datas.STRING);
+report.addField("POSTAL", uk.chromis.data.loader.Datas.STRING);
+report.addField("PHONE", uk.chromis.data.loader.Datas.STRING);
+report.addField("EMAIL", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/customers_list.jrxml b/reports/uk/chromis/mysql/customers_list.jrxml
new file mode 100644
index 00000000..a85290b5
--- /dev/null
+++ b/reports/uk/chromis/mysql/customers_list.jrxml
@@ -0,0 +1,323 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/customersb.bs b/reports/uk/chromis/mysql/customersb.bs
new file mode 100644
index 00000000..f4f63b40
--- /dev/null
+++ b/reports/uk/chromis/mysql/customersb.bs
@@ -0,0 +1,56 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersBReport");
+report.setReport("/uk/chromis/reports/customersb");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT ID, TAXID, NAME, ADDRESS, NOTES, CARD, MAXDEBT, CURDATE, CURDEBT, DISCOUNT, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = CUSTOMERS.SITEGUID) AS SITE " +
+ "FROM CUSTOMERS " +
+ "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND CURDEBT IS NOT NULL AND CURDEBT <> 0 AND ?(QBF_FILTER)" +
+ "ORDER BY CUSTOMERS.SITEGUID ");
+
+report.addParameter("CUSTOMERS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsSites(true));
+
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
+report.addField("NOTES", uk.chromis.data.loader.Datas.STRING);
+report.addField("CARD", uk.chromis.data.loader.Datas.STRING);
+report.addField("MAXDEBT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CURDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("CURDEBT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("DISCOUNT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/mysql/customersb.jrxml b/reports/uk/chromis/mysql/customersb.jrxml
new file mode 100644
index 00000000..0797cee1
--- /dev/null
+++ b/reports/uk/chromis/mysql/customersb.jrxml
@@ -0,0 +1,337 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/customersdebtors.bs b/reports/uk/chromis/mysql/customersdebtors.bs
new file mode 100644
index 00000000..e2752e1c
--- /dev/null
+++ b/reports/uk/chromis/mysql/customersdebtors.bs
@@ -0,0 +1,52 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersList");
+report.setReport("/uk/chromis/reports/customersdebtors");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT ID, TAXID, NAME, ADDRESS, CURDEBT, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = CUSTOMERS.SITEGUID) AS SITE " +
+ "FROM CUSTOMERS " +
+ "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND ?(QBF_FILTER)" +
+ "ORDER BY NAME ");
+
+report.addParameter("ID");
+report.addParameter("NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
+report.addField("CURDEBT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/customersdebtors.jrxml b/reports/uk/chromis/mysql/customersdebtors.jrxml
new file mode 100644
index 00000000..2fe6fc24
--- /dev/null
+++ b/reports/uk/chromis/mysql/customersdebtors.jrxml
@@ -0,0 +1,278 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/customersdiary.bs b/reports/uk/chromis/mysql/customersdiary.bs
new file mode 100644
index 00000000..dd1c5aa5
--- /dev/null
+++ b/reports/uk/chromis/mysql/customersdiary.bs
@@ -0,0 +1,69 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersDiary");
+report.setReport("/uk/chromis/reports/customersdiary");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "RECEIPTS.DATENEW, " +
+ "TICKETS.TICKETID, " +
+ "PAYMENTS.PAYMENT, " +
+ "PAYMENTS.TOTAL, " +
+ "CUSTOMERS.TAXID, " +
+ "CUSTOMERS.NAME, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = RECEIPTS.SITEGUID) AS SITE " +
+ "FROM RECEIPTS, TICKETS, CUSTOMERS, PAYMENTS " +
+ "WHERE RECEIPTS.ID = TICKETS.ID AND RECEIPTS.ID = PAYMENTS.RECEIPT " +
+ "AND TICKETS.CUSTOMER = CUSTOMERS.ID " +
+ "AND ?(QBF_FILTER) " +
+ "ORDER BY RECEIPTS.SITEGUID, CUSTOMERS.NAME, RECEIPTS.DATENEW DESC");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addParameter("CUSTOMERS.ID");
+report.addParameter("CUSTOMERS.NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TICKETID", uk.chromis.data.loader.Datas.STRING);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/mysql/customersdiary.jrxml b/reports/uk/chromis/mysql/customersdiary.jrxml
new file mode 100644
index 00000000..b96225c8
--- /dev/null
+++ b/reports/uk/chromis/mysql/customersdiary.jrxml
@@ -0,0 +1,367 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/dailypresence.bs b/reports/uk/chromis/mysql/dailypresence.bs
new file mode 100644
index 00000000..cbc3eb58
--- /dev/null
+++ b/reports/uk/chromis/mysql/dailypresence.bs
@@ -0,0 +1,49 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.DailyPresenceReport");
+report.setReport("/uk/chromis/reports/dailypresence");
+report.setResourceBundle("uk/chromis/reports/dailypresence_messages");
+
+report.setSentence("SELECT " +
+ "PEOPLE.NAME, " +
+ "SHIFTS.STARTSHIFT, " +
+ "SHIFTS.ENDSHIFT, " +
+ "CONCAT('',TIMESTAMPDIFF(SHIFTS.ENDSHIFT, SHIFTS.STARTSHIFT)) AS TOTAL " +
+ "FROM PEOPLE LEFT JOIN SHIFTS ON SHIFTS.PPLID = PEOPLE.ID " +
+ "WHERE ?(QBF_FILTER) ");
+
+report.addParameter("SHIFTS.STARTSHIFT");
+report.addParameter("SHIFTS.ENDSHIFT");
+report.addParameter("SHIFTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/mysql/dailypresence.jrxml b/reports/uk/chromis/mysql/dailypresence.jrxml
new file mode 100644
index 00000000..8ad212b9
--- /dev/null
+++ b/reports/uk/chromis/mysql/dailypresence.jrxml
@@ -0,0 +1,343 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/dailypresencereport.bs b/reports/uk/chromis/mysql/dailypresencereport.bs
new file mode 100644
index 00000000..7726618a
--- /dev/null
+++ b/reports/uk/chromis/mysql/dailypresencereport.bs
@@ -0,0 +1,56 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.DailyPresenceReport");
+report.setReport("/uk/chromis/reports/dailypresence");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "PEOPLE.NAME, " +
+ "SHIFTS.STARTSHIFT, " +
+ "SHIFTS.ENDSHIFT, " +
+ "({fn TIMESTAMPDIFF(SQL_TSI_SECOND, SHIFTS.STARTSHIFT, SHIFTS.ENDSHIFT)}) AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PEOPLE.SITEGUID) AS SITE " +
+ "FROM PEOPLE LEFT JOIN SHIFTS ON SHIFTS.PPLID = PEOPLE.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY SITE ");
+
+report.addParameter("SHIFTS.STARTSHIFT");
+report.addParameter("SHIFTS.ENDSHIFT");
+report.addParameter("PEOPLE.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/mysql/dailyschedule.bs b/reports/uk/chromis/mysql/dailyschedule.bs
new file mode 100644
index 00000000..ae449be9
--- /dev/null
+++ b/reports/uk/chromis/mysql/dailyschedule.bs
@@ -0,0 +1,52 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.DailyScheduleReport");
+report.setReport("/uk/chromis/reports/dailyschedule");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "PEOPLE.NAME, " +
+ "LEAVES.STARTDATE, " +
+ "LEAVES.ENDDATE, " +
+ "CONCAT('',DATEDIFF(LEAVES.ENDDATE, LEAVES.STARTDATE)) AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = LEAVES.SITEGUID) AS SITE " +
+ "FROM PEOPLE LEFT JOIN LEAVES ON LEAVES.PPLID = PEOPLE.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY LEAVES.STARTDATE DESC ");
+
+report.addParameter("LEAVES.STARTDATE");
+report.addParameter("LEAVES.ENDDATE");
+report.addParameter("LEAVES.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/mysql/dailyschedule.jrxml b/reports/uk/chromis/mysql/dailyschedule.jrxml
new file mode 100644
index 00000000..ba44e758
--- /dev/null
+++ b/reports/uk/chromis/mysql/dailyschedule.jrxml
@@ -0,0 +1,343 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/dailyschedulereport.bs b/reports/uk/chromis/mysql/dailyschedulereport.bs
new file mode 100644
index 00000000..01ce42ba
--- /dev/null
+++ b/reports/uk/chromis/mysql/dailyschedulereport.bs
@@ -0,0 +1,59 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+
+report.setTitleKey("Menu.DailyScheduleReport");
+report.setReport("/uk/chromis/reports/dailyschedule");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "PEOPLE.NAME, " +
+ "LEAVES.STARTDATE, " +
+ "LEAVES.ENDDATE, " +
+ "CONCAT('',TIMEDIFF(LEAVES.ENDDATE, LEAVES.STARTDATE))/24 AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = LEAVES.SITEGUID) AS SITE " +
+ "FROM PEOPLE LEFT JOIN LEAVES ON LEAVES.PPLID = PEOPLE.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY SITE, LEAVES.STARTDATE DESC ");
+
+report.addParameter("LEAVES.STARTDATE");
+report.addParameter("LEAVES.ENDDATE");
+report.addParameter("LEAVES.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/employeetimesheet.bs b/reports/uk/chromis/mysql/employeetimesheet.bs
new file mode 100644
index 00000000..4113ed53
--- /dev/null
+++ b/reports/uk/chromis/mysql/employeetimesheet.bs
@@ -0,0 +1,49 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.EmployeeTimeSheet");
+report.setReport("/uk/chromis/reports/employeetimesheet");
+report.setResourceBundle("uk/chromis/reports/employeetimesheet_messages");
+
+report.setSentence("SELECT " +
+ "PEOPLE.NAME, " +
+ "SHIFTS.STARTSHIFT, " +
+ "SHIFTS.ENDSHIFT, " +
+ "CONCAT('',TIMEDIFF(SHIFTS.ENDSHIFT, SHIFTS.STARTSHIFT)) AS TOTAL " +
+ "FROM PEOPLE LEFT JOIN SHIFTS ON SHIFTS.PPLID = PEOPLE.ID " +
+ "WHERE ?(QBF_FILTER) ORDER BY PEOPLE.NAME ASC, SHIFTS.ENDSHIFT ASC");
+
+report.addParameter("SHIFTS.STARTSHIFT");
+report.addParameter("SHIFTS.ENDSHIFT");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/mysql/employeetimesheet.jrxml b/reports/uk/chromis/mysql/employeetimesheet.jrxml
new file mode 100644
index 00000000..fd429f37
--- /dev/null
+++ b/reports/uk/chromis/mysql/employeetimesheet.jrxml
@@ -0,0 +1,276 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/extendedcashregisterlog.bs b/reports/uk/chromis/mysql/extendedcashregisterlog.bs
new file mode 100644
index 00000000..a07cd5bc
--- /dev/null
+++ b/reports/uk/chromis/mysql/extendedcashregisterlog.bs
@@ -0,0 +1,62 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ExtendedCashRegisterLog");
+report.setReport("/uk/chromis/reports/extendedcashregisterlog");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "TICKETS.TICKETID AS TICKET_NO, " +
+ "RECEIPTS.DATENEW AS TICKET_DATE, " +
+ "PAYMENTS.TOTAL AS MONEY, " +
+ "CUSTOMERS.NAME AS CUSTOMER, " +
+ "PAYMENTS.PAYMENT AS PAYMENT, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = RECEIPTS.SITEGUID) AS SITE " +
+ "FROM RECEIPTS " +
+ "LEFT JOIN TICKETS ON RECEIPTS.ID = TICKETS.ID " +
+ "LEFT JOIN PAYMENTS ON RECEIPTS.ID = PAYMENTS.RECEIPT " +
+ "LEFT JOIN CUSTOMERS ON TICKETS.CUSTOMER = CUSTOMERS.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY RECEIPTS.SITEGUID, RECEIPTS.DATENEW");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("TICKET_NO", uk.chromis.data.loader.Datas.STRING);
+report.addField("TICKET_DATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("MONEY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CUSTOMER", uk.chromis.data.loader.Datas.STRING);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+
+return report;
diff --git a/reports/uk/chromis/mysql/extendedcashregisterlog.jrxml b/reports/uk/chromis/mysql/extendedcashregisterlog.jrxml
new file mode 100644
index 00000000..0a68a46a
--- /dev/null
+++ b/reports/uk/chromis/mysql/extendedcashregisterlog.jrxml
@@ -0,0 +1,391 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/extproducts.bs b/reports/uk/chromis/mysql/extproducts.bs
new file mode 100644
index 00000000..70e20cb1
--- /dev/null
+++ b/reports/uk/chromis/mysql/extproducts.bs
@@ -0,0 +1,80 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ExtendedByProducts");
+report.setReport("/uk/chromis/reports/extproducts");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CUSTOMERS.TAXID, " +
+ "CUSTOMERS.NAME AS CUSTOMER, " +
+ "CATEGORIES.NAME AS CATEGORY, " +
+ "PRODUCTS.REFERENCE AS REFERENCE, " +
+ "PRODUCTS.NAME AS PRODUCT, " +
+ "SUM(TICKETLINES.UNITS) AS UNIT, " +
+ "SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM TICKETS " +
+ "LEFT OUTER JOIN CUSTOMERS ON TICKETS.CUSTOMER = CUSTOMERS.ID, TICKETLINES " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID, RECEIPTS " +
+ "WHERE RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY PRODUCTS.SITEGUID, CUSTOMERS.TAXID, CUSTOMERS.NAME, CATEGORIES.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME " +
+ "ORDER BY PRODUCTS.SITEGUID, CUSTOMERS.NAME, CATEGORIES.NAME, PRODUCTS.NAME");
+
+paramdates = new uk.chromis.pos.ticket.ProductFilterReportWithDates();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(paramdates);
+
+report.addParameter("CUSTOMERS.ID");
+report.addParameter("CUSTOMERS.NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer(true));
+
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("CUSTOMER", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRODUCT", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNIT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+
+report;
+
diff --git a/reports/uk/chromis/mysql/extproducts.jrxml b/reports/uk/chromis/mysql/extproducts.jrxml
new file mode 100644
index 00000000..09830f35
--- /dev/null
+++ b/reports/uk/chromis/mysql/extproducts.jrxml
@@ -0,0 +1,550 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/invalidcategory.bs b/reports/uk/chromis/mysql/invalidcategory.bs
new file mode 100644
index 00000000..9d195aa2
--- /dev/null
+++ b/reports/uk/chromis/mysql/invalidcategory.bs
@@ -0,0 +1,38 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InvalidCategory");
+report.setReport("/uk/chromis/reports/invalidcategory");
+report.setResourceBundle("uk/chromis/reports/invalidcategory_messages");
+
+report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.ROWNUMBER, CSVIMPORT.CSVERROR,"+
+ "CSVIMPORT.CATEGORY FROM CSVIMPORT WHERE (CSVERROR = 'Bad category details')");
+
+
+
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("rownumber", uk.chromis.data.loader.Datas.STRING);
+report.addField("csverror", uk.chromis.data.loader.Datas.STRING);
+report.addField("category", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/invalidcategory.jrxml b/reports/uk/chromis/mysql/invalidcategory.jrxml
new file mode 100644
index 00000000..760b323c
--- /dev/null
+++ b/reports/uk/chromis/mysql/invalidcategory.jrxml
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/invaliddata.bs b/reports/uk/chromis/mysql/invaliddata.bs
new file mode 100644
index 00000000..28defdf1
--- /dev/null
+++ b/reports/uk/chromis/mysql/invaliddata.bs
@@ -0,0 +1,44 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InvalidData");
+report.setReport("/uk/chromis/reports/invaliddata");
+report.setResourceBundle("uk/chromis/reports/invaliddata_messages");
+
+report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.ROWNUMBER, CSVIMPORT.CSVERROR"+
+ " FROM CSVIMPORT WHERE (CSVERROR <> 'New product') and "+
+ "(CSVERROR <> 'Updated Price Details') and (CSVERROR <>"+
+ " 'Missing data or Invalid number')");
+
+
+
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("rownumber", uk.chromis.data.loader.Datas.STRING);
+report.addField("csverror", uk.chromis.data.loader.Datas.STRING);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/invaliddata.jrxml b/reports/uk/chromis/mysql/invaliddata.jrxml
new file mode 100644
index 00000000..5f8dafbc
--- /dev/null
+++ b/reports/uk/chromis/mysql/invaliddata.jrxml
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+ 'New product') and (CSVERROR <> 'Updated Price Details') and (CSVERROR <> 'Missing data or Invalid number')]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/inventory.bs b/reports/uk/chromis/mysql/inventory.bs
new file mode 100644
index 00000000..b19216d1
--- /dev/null
+++ b/reports/uk/chromis/mysql/inventory.bs
@@ -0,0 +1,82 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Inventory");
+report.setReport("/uk/chromis/reports/inventory");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "STOCKCURRENT.LOCATION AS LOCATIONID, " +
+ "LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME AS PRODUCTNAME, " +
+ "PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(STOCKCURRENT.UNITS) AS UNITS, " +
+ "PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, " +
+ "COALESCE(PRODUCTS.STOCKVOLUME, 0) AS STOCKVOLUME, " +
+ "COALESCE(PRODUCTS.STOCKCOST, 0) AS STOCKCOST, " +
+ "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
+ "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM STOCKCURRENT " +
+ "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
+ "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY STOCKCURRENT.LOCATION, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, PRODUCTS.STOCKVOLUME, PRODUCTS.STOCKCOST, STOCKLEVEL.STOCKSECURITY, STOCKLEVEL.STOCKMAXIMUM " +
+ "ORDER BY PRODUCTS.SITEGUID, STOCKCURRENT.LOCATION, CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat());
+
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKVOLUME", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKCOST", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/mysql/inventory.jrxml b/reports/uk/chromis/mysql/inventory.jrxml
new file mode 100644
index 00000000..53663e44
--- /dev/null
+++ b/reports/uk/chromis/mysql/inventory.jrxml
@@ -0,0 +1,726 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue()
+ && $F{UNITS}.doubleValue()<= $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/inventoryb.bs b/reports/uk/chromis/mysql/inventoryb.bs
new file mode 100644
index 00000000..f10b3d60
--- /dev/null
+++ b/reports/uk/chromis/mysql/inventoryb.bs
@@ -0,0 +1,75 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Inventory2");
+report.setReport("/uk/chromis/reports/inventoryb");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "STOCKCURRENT.LOCATION AS LOCATIONID, " +
+ "LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME AS NAME, " +
+ "PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(STOCKCURRENT.UNITS) AS UNITS, " +
+ "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
+ "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM STOCKCURRENT " +
+ "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
+ "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY STOCKCURRENT.LOCATION, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, STOCKLEVEL.STOCKSECURITY, STOCKLEVEL.STOCKMAXIMUM " +
+ "ORDER BY PRODUCTS.SITEGUID, CATEGORIES.NAME, PRODUCTS.NAME, STOCKCURRENT.LOCATION");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(true, false));
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/mysql/inventoryb.jrxml b/reports/uk/chromis/mysql/inventoryb.jrxml
new file mode 100644
index 00000000..5837577c
--- /dev/null
+++ b/reports/uk/chromis/mysql/inventoryb.jrxml
@@ -0,0 +1,415 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue()
+ && $F{UNITS}.doubleValue()<= $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/inventorybroken.bs b/reports/uk/chromis/mysql/inventorybroken.bs
new file mode 100644
index 00000000..f6da62ce
--- /dev/null
+++ b/reports/uk/chromis/mysql/inventorybroken.bs
@@ -0,0 +1,77 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InventoryBroken");
+report.setReport("/uk/chromis/reports/inventorybroken");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "STOCKCURRENT.LOCATION AS LOCATIONID, " +
+ "LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME AS NAME, " +
+ "PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(STOCKCURRENT.UNITS) AS UNITS, " +
+ "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
+ "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = LOCATIONS.SITEGUID) AS SITE " +
+ "FROM STOCKCURRENT " +
+ "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
+ "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY STOCKCURRENT.LOCATION, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, STOCKLEVEL.STOCKSECURITY, STOCKLEVEL.STOCKMAXIMUM " +
+ "HAVING STOCKLEVEL.STOCKSECURITY IS NOT NULL AND STOCKLEVEL.STOCKSECURITY >= SUM(STOCKCURRENT.UNITS) " +
+ "ORDER BY LOCATIONS.SITEGUID, CATEGORIES.NAME, PRODUCTS.NAME, STOCKCURRENT.LOCATION");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("LOCATIONS.SITEGUID");
+
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(true, false));
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/mysql/inventorybroken.jrxml b/reports/uk/chromis/mysql/inventorybroken.jrxml
new file mode 100644
index 00000000..3ca29bc0
--- /dev/null
+++ b/reports/uk/chromis/mysql/inventorybroken.jrxml
@@ -0,0 +1,415 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue()
+ && $F{UNITS}.doubleValue()<= $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/inventorydiff.bs b/reports/uk/chromis/mysql/inventorydiff.bs
new file mode 100644
index 00000000..7b68bf72
--- /dev/null
+++ b/reports/uk/chromis/mysql/inventorydiff.bs
@@ -0,0 +1,74 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InventoryDiff");
+report.setReport("/uk/chromis/reports/inventorydiff");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "LOCATIONS.ID AS LOCATIONID, LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS <0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSOUT, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS <0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALOUT, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSIN, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALIN, " +
+ "SUM(STOCKDIARY.UNITS) AS UNITSDIFF, " +
+ "SUM(STOCKDIARY.UNITS * STOCKDIARY.PRICE) AS TOTALDIFF, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = LOCATIONS.SITEGUID) AS SITE " +
+ "FROM STOCKDIARY JOIN LOCATIONS ON STOCKDIARY.LOCATION = LOCATIONS.ID, " +
+ "PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "WHERE PRODUCTS.ID = STOCKDIARY.PRODUCT " +
+ "AND ?(QBF_FILTER) " +
+ "GROUP BY LOCATIONS.ID, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME " +
+ "ORDER BY LOCATIONS.SITEGUID, LOCATIONS.ID, CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("STOCKDIARY.DATENEW");
+report.addParameter("STOCKDIARY.DATENEW");
+report.addParameter("LOCATIONS.SITEGUID");
+report.addParameter("LOCATIONS.ID");
+report.addParameter("STOCKDIARY.REASON");
+
+paramdates = new uk.chromis.pos.reports.JParamsInventory();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITSOUT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALOUT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITSIN", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALIN", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITSDIFF", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALDIFF", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/mysql/inventorydiff.jrxml b/reports/uk/chromis/mysql/inventorydiff.jrxml
new file mode 100644
index 00000000..c65c1ff2
--- /dev/null
+++ b/reports/uk/chromis/mysql/inventorydiff.jrxml
@@ -0,0 +1,635 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/inventorydiffdetail.bs b/reports/uk/chromis/mysql/inventorydiffdetail.bs
new file mode 100644
index 00000000..b0eaded7
--- /dev/null
+++ b/reports/uk/chromis/mysql/inventorydiffdetail.bs
@@ -0,0 +1,79 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InventoryDiffDetail");
+report.setReport("/uk/chromis/reports/inventorydiffdetail");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "LOCATIONS.ID AS LOCATIONID, LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, PRODUCTS.NAME, " +
+ "STOCKDIARY.ATTRIBUTESETINSTANCE_ID, ATTRIBUTESETINSTANCE.DESCRIPTION, " +
+ "PRODUCTS.CATEGORY, CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS <0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSOUT, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS <0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALOUT, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSIN, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALIN, " +
+ "SUM(STOCKDIARY.UNITS) AS UNITSDIFF, " +
+ "SUM(STOCKDIARY.UNITS * STOCKDIARY.PRICE) AS TOTALDIFF, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = LOCATIONS.SITEGUID) AS SITE " +
+ "FROM STOCKDIARY " +
+ "JOIN LOCATIONS ON STOCKDIARY.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON PRODUCTS.ID = STOCKDIARY.PRODUCT " +
+ "LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN ATTRIBUTESETINSTANCE ON STOCKDIARY.ATTRIBUTESETINSTANCE_ID = ATTRIBUTESETINSTANCE.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY LOCATIONS.ID, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, STOCKDIARY.ATTRIBUTESETINSTANCE_ID, ATTRIBUTESETINSTANCE.DESCRIPTION " +
+ "ORDER BY LOCATIONS.SITEGUID, LOCATIONS.ID, CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("STOCKDIARY.DATENEW");
+report.addParameter("STOCKDIARY.DATENEW");
+report.addParameter("LOCATIONS.SITEGUID");
+report.addParameter("LOCATIONS.ID");
+report.addParameter("STOCKDIARY.REASON");
+
+paramdates = new uk.chromis.pos.reports.JParamsInventory();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ATTINSTANCEID", uk.chromis.data.loader.Datas.STRING);
+report.addField("ATTINSTANCEDESC", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITSOUT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALOUT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITSIN", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALIN", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITSDIFF", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALDIFF", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/inventorydiffdetail.jrxml b/reports/uk/chromis/mysql/inventorydiffdetail.jrxml
new file mode 100644
index 00000000..a07dbe80
--- /dev/null
+++ b/reports/uk/chromis/mysql/inventorydiffdetail.jrxml
@@ -0,0 +1,664 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/inventorylistdetail.bs b/reports/uk/chromis/mysql/inventorylistdetail.bs
new file mode 100644
index 00000000..457e4d23
--- /dev/null
+++ b/reports/uk/chromis/mysql/inventorylistdetail.bs
@@ -0,0 +1,77 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InventoryListDetail");
+report.setReport("/uk/chromis/reports/inventorylistdetail");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "STOCKCURRENT.LOCATION AS LOCATIONID, " +
+ "LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME AS NAME, " +
+ "STOCKCURRENT.ATTRIBUTESETINSTANCE_ID, " +
+ "ATTRIBUTESETINSTANCE.DESCRIPTION, " +
+ "PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME AS CATEGORYNAME, " +
+ "STOCKCURRENT.UNITS, " +
+ "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
+ "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM STOCKCURRENT " +
+ "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
+ "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
+ "LEFT OUTER JOIN ATTRIBUTESETINSTANCE ON STOCKCURRENT.ATTRIBUTESETINSTANCE_ID = ATTRIBUTESETINSTANCE.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY PRODUCTS.SITEGUID, CATEGORIES.NAME, PRODUCTS.NAME, STOCKCURRENT.LOCATION");
+
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(true, false));
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ATTINSTANCEID", uk.chromis.data.loader.Datas.STRING);
+report.addField("ATTINSTANCEDESC", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/inventorylistdetail.jrxml b/reports/uk/chromis/mysql/inventorylistdetail.jrxml
new file mode 100644
index 00000000..22d88763
--- /dev/null
+++ b/reports/uk/chromis/mysql/inventorylistdetail.jrxml
@@ -0,0 +1,459 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue()
+? uk.chromis.format.Formats.DOUBLE.formatValue($V{UNITSTOTALWAREHOUSE})
+: ""]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue()
+ && $V{UNITSTOTALWAREHOUSE}.doubleValue()<= $F{STOCKMAXIMUM}.doubleValue()
+? uk.chromis.format.Formats.DOUBLE.formatValue($V{UNITSTOTALWAREHOUSE})
+: ""]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/inventoryreorder.bs b/reports/uk/chromis/mysql/inventoryreorder.bs
new file mode 100644
index 00000000..a1981dee
--- /dev/null
+++ b/reports/uk/chromis/mysql/inventoryreorder.bs
@@ -0,0 +1,83 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InventoryReOrder");
+report.setReport("/uk/chromis/reports/inventoryreorder");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "STOCKCURRENT.LOCATION AS LOCATIONID, " +
+ "LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME AS PRODUCTNAME, " +
+ "PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(STOCKCURRENT.UNITS) AS UNITS, " +
+ "PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, " +
+ "COALESCE(PRODUCTS.STOCKVOLUME, 0) AS STOCKVOLUME, " +
+ "COALESCE(PRODUCTS.STOCKCOST, 0) AS STOCKCOST, " +
+ "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
+ "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = LOCATIONS.SITEGUID) AS SITE " +
+ "FROM STOCKCURRENT " +
+ "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
+ "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
+ "WHERE ( UNITS < STOCKLEVEL.STOCKSECURITY ) AND ?(QBF_FILTER) " +
+ "GROUP BY STOCKCURRENT.LOCATION, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, PRODUCTS.STOCKVOLUME, PRODUCTS.STOCKCOST, STOCKLEVEL.STOCKSECURITY, STOCKLEVEL.STOCKMAXIMUM " +
+ "ORDER BY SITE, STOCKCURRENT.LOCATION, CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("LOCATIONS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat());
+
+
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKVOLUME", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKCOST", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/mysql/inventoryreorder.jrxml b/reports/uk/chromis/mysql/inventoryreorder.jrxml
new file mode 100644
index 00000000..7c1732b2
--- /dev/null
+++ b/reports/uk/chromis/mysql/inventoryreorder.jrxml
@@ -0,0 +1,782 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = 0.00) ? uk.chromis.format.Formats.DOUBLE.formatValue($F{UNITS}) : ""]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = 0.00) ? uk.chromis.format.Formats.CURRENCY.formatValue($F{UNITS} * $F{PRICEBUY}):""]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = 0.00) ?uk.chromis.format.Formats.CURRENCY.formatValue( $F{UNITS} *$F{PRICESELL}):""]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/inventoryreorderorig.jrxml b/reports/uk/chromis/mysql/inventoryreorderorig.jrxml
new file mode 100644
index 00000000..b1dfc0a6
--- /dev/null
+++ b/reports/uk/chromis/mysql/inventoryreorderorig.jrxml
@@ -0,0 +1,729 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue()
+ && $F{UNITS}.doubleValue()<= $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/missingdata.bs b/reports/uk/chromis/mysql/missingdata.bs
new file mode 100644
index 00000000..c0a02d20
--- /dev/null
+++ b/reports/uk/chromis/mysql/missingdata.bs
@@ -0,0 +1,43 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.MissingData");
+report.setReport("/uk/chromis/reports/missingdata");
+report.setResourceBundle("uk/chromis/reports/missingdata_messages");
+
+report.setSentence("SELECT CSVIMPORT.ROWNUMBER, CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.PRICEBUY, CSVIMPORT.PRICESELL"+
+ " FROM CSVIMPORT WHERE CSVIMPORT.CSVERROR='Missing data or Invalid number'");
+
+
+
+report.addField("rownumber", uk.chromis.data.loader.Datas.STRING);
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("pricebuy", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("pricesell", uk.chromis.data.loader.Datas.DOUBLE);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/missingdata.jrxml b/reports/uk/chromis/mysql/missingdata.jrxml
new file mode 100644
index 00000000..f9b3c3cf
--- /dev/null
+++ b/reports/uk/chromis/mysql/missingdata.jrxml
@@ -0,0 +1,218 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/newproducts.bs b/reports/uk/chromis/mysql/newproducts.bs
new file mode 100644
index 00000000..c87b3b86
--- /dev/null
+++ b/reports/uk/chromis/mysql/newproducts.bs
@@ -0,0 +1,43 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.NewProducts");
+report.setReport("/uk/chromis/reports/newproducts");
+report.setResourceBundle("uk/chromis/reports/newproducts_messages");
+
+report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.PRICEBUY, CSVIMPORT.PRICESELL,"+
+ "CSVIMPORT.CATEGORY FROM CSVIMPORT WHERE CSVIMPORT.CSVERROR='New product'");
+
+
+
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("pricebuy", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("pricesell", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("category",uk.chromis.data.loader.Datas.STRING);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/newproducts.jrxml b/reports/uk/chromis/mysql/newproducts.jrxml
new file mode 100644
index 00000000..4382ad2d
--- /dev/null
+++ b/reports/uk/chromis/mysql/newproducts.jrxml
@@ -0,0 +1,218 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/newproducts_1.jrxml b/reports/uk/chromis/mysql/newproducts_1.jrxml
new file mode 100644
index 00000000..4382ad2d
--- /dev/null
+++ b/reports/uk/chromis/mysql/newproducts_1.jrxml
@@ -0,0 +1,218 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/paymentreport.bs b/reports/uk/chromis/mysql/paymentreport.bs
new file mode 100644
index 00000000..5f8dfafb
--- /dev/null
+++ b/reports/uk/chromis/mysql/paymentreport.bs
@@ -0,0 +1,53 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.PaymentReport");
+report.setReport("/uk/chromis/reports/paymentreport");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT RECEIPTS.DATENEW,PAYMENTS.PAYMENT, PAYMENTS.NOTES, PAYMENTS.TOTAL, "+
+"(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = RECEIPTS.SITEGUID) AS SITE " +
+"FROM PAYMENTS,RECEIPTS "+
+"WHERE PAYMENTS.RECEIPT = RECEIPTS.ID AND ?(QBF_FILTER) "+
+"ORDER BY PAYMENTS.SITEGUID, RECEIPTS.DATENEW");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("NOTES", uk.chromis.data.loader.Datas.STRING);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+
+report;
diff --git a/reports/uk/chromis/mysql/paymentreport.jrxml b/reports/uk/chromis/mysql/paymentreport.jrxml
new file mode 100644
index 00000000..6ba9ebce
--- /dev/null
+++ b/reports/uk/chromis/mysql/paymentreport.jrxml
@@ -0,0 +1,370 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/people.bs b/reports/uk/chromis/mysql/people.bs
new file mode 100644
index 00000000..116a3719
--- /dev/null
+++ b/reports/uk/chromis/mysql/people.bs
@@ -0,0 +1,47 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.UsersReport");
+report.setReport("/uk/chromis/reports/people");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PEOPLE.ID, PEOPLE.NAME, PEOPLE.CARD, ROLES.NAME AS ROLE, PEOPLE.IMAGE, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PEOPLE.SITEGUID) AS SITE " +
+ "FROM PEOPLE, ROLES WHERE PEOPLE.ROLE = ROLES.ID AND PEOPLE.VISIBLE = " + app.getSession().DB.TRUE() +
+ " AND ?(QBF_FILTER) " +
+ " ORDER BY PEOPLE.SITEGUID ");
+
+report.addParameter("PEOPLE.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsSites(true));
+
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CARD", uk.chromis.data.loader.Datas.STRING);
+report.addField("ROLE", uk.chromis.data.loader.Datas.STRING);
+report.addField("IMAGE", uk.chromis.data.loader.Datas.IMAGE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/people.jrxml b/reports/uk/chromis/mysql/people.jrxml
new file mode 100644
index 00000000..e60954c0
--- /dev/null
+++ b/reports/uk/chromis/mysql/people.jrxml
@@ -0,0 +1,228 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/performancereport.bs b/reports/uk/chromis/mysql/performancereport.bs
new file mode 100644
index 00000000..6fff3cd6
--- /dev/null
+++ b/reports/uk/chromis/mysql/performancereport.bs
@@ -0,0 +1,52 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.PerformanceReport");
+report.setReport("/uk/chromis/reports/performancereport");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PEOPLE.NAME, MIN(RECEIPTS.DATENEW) AS STARTDATE, MAX(RECEIPTS.DATENEW) AS ENDDATE, SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL, " +
+"(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PEOPLE.SITEGUID) AS SITE " +
+"FROM PEOPLE, RECEIPTS, TICKETS, TICKETLINES WHERE PEOPLE.ID = TICKETS.PERSON AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY PEOPLE.ID, PEOPLE.NAME ORDER BY SITE, PEOPLE.NAME ");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("PEOPLE.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/mysql/performancereport.jrxml b/reports/uk/chromis/mysql/performancereport.jrxml
new file mode 100644
index 00000000..fb132c2e
--- /dev/null
+++ b/reports/uk/chromis/mysql/performancereport.jrxml
@@ -0,0 +1,411 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/piesalescat.bs b/reports/uk/chromis/mysql/piesalescat.bs
new file mode 100644
index 00000000..d8afcc2e
--- /dev/null
+++ b/reports/uk/chromis/mysql/piesalescat.bs
@@ -0,0 +1,59 @@
+// uniCenta oPOS - Touch Friendly Point Of Sale
+// Copyright (c) 2009-(c) 2015-2016uniCenta & previous Openbravo POS works
+// http://www.unicenta.net
+//
+// This file is part of uniCenta oPOS
+//
+// uniCenta oPOS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// uniCenta oPOS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with uniCenta oPOS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CategoryProductSalesChart");
+report.setReport("/uk/chromis/reports/piesalescat");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT "+
+ "CATEGORIES.NAME AS CAT, " +
+ "SUM(TICKETLINES.UNITS) AS UNITS, " +
+ "SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) AS TOTAL " +
+ "FROM TICKETLINES " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN TICKETS ON TICKETLINES.TICKET = TICKETS.ID " +
+ "LEFT OUTER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID " +
+ "WHERE LENGTH(CATEGORIES.NAME) > '1' AND ?(QBF_FILTER) " +
+ "GROUP BY CATEGORIES.ID, CATEGORIES.NAME "+
+ "ORDER BY CATEGORIES.NAME ASC");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval(false);
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("CAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
diff --git a/reports/uk/chromis/mysql/piesalescat.jrxml b/reports/uk/chromis/mysql/piesalescat.jrxml
new file mode 100644
index 00000000..8eb00d39
--- /dev/null
+++ b/reports/uk/chromis/mysql/piesalescat.jrxml
@@ -0,0 +1,290 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ '1'
+GROUP BY
+ CATEGORIES.ID
+ORDER BY
+ CATEGORIES.NAME ASC]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/productlabels.bs b/reports/uk/chromis/mysql/productlabels.bs
new file mode 100644
index 00000000..a61ab8f1
--- /dev/null
+++ b/reports/uk/chromis/mysql/productlabels.bs
@@ -0,0 +1,64 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ProductLabels");
+report.setReport("/uk/chromis/reports/productlabels");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, PRODUCTS.CODETYPE, " +
+ "PRODUCTS.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, TC.ID AS TAXCAT, " +
+ "TC.NAME AS TAXCATNAME, CATEGORIES.ID AS CATEGORY, CATEGORIES.NAME AS CATEGORYNAME, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON PRODUCTS.TAXCAT = TC.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY PRODUCTS.SITEGUID, CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(false, false));
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODETYPE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/mysql/productlabels.jrxml b/reports/uk/chromis/mysql/productlabels.jrxml
new file mode 100644
index 00000000..ef817cde
--- /dev/null
+++ b/reports/uk/chromis/mysql/productlabels.jrxml
@@ -0,0 +1,287 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/products.bs b/reports/uk/chromis/mysql/products.bs
new file mode 100644
index 00000000..cfe806cb
--- /dev/null
+++ b/reports/uk/chromis/mysql/products.bs
@@ -0,0 +1,60 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Catalog");
+report.setReport("/uk/chromis/reports/products");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, PRODUCTS.NAME, " +
+ "PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, TC.ID AS TAXCAT, TC.NAME AS TAXCATNAME, " +
+ "CATEGORIES.ID AS CATEGORY, CATEGORIES.NAME AS CATEGORYNAME, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON PRODUCTS.TAXCAT = TC.ID " +
+ "WHERE PRODUCTS.ISCATALOG = TRUE AND ?(QBF_FILTER)" +
+ "ORDER BY PRODUCTS.SITEGUID, CATEGORIES.NAME, PRODUCTS.CATORDER, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(false, false));
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/mysql/products.jrxml b/reports/uk/chromis/mysql/products.jrxml
new file mode 100644
index 00000000..8e2aa5b3
--- /dev/null
+++ b/reports/uk/chromis/mysql/products.jrxml
@@ -0,0 +1,367 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/productsales.bs b/reports/uk/chromis/mysql/productsales.bs
new file mode 100644
index 00000000..a31993bc
--- /dev/null
+++ b/reports/uk/chromis/mysql/productsales.bs
@@ -0,0 +1,68 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby & PostgreSQl July 2016
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ProductSales");
+report.setReport("/uk/chromis/reports/productsales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+ "SELECT " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "SUM(TICKETLINES.UNITS) AS UNITS, " +
+ "SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = RECEIPTS.SITEGUID) AS SITE " +
+ "FROM RECEIPTS, TICKETS, TICKETLINES, PRODUCTS " +
+ "WHERE RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND TICKETLINES.PRODUCT = PRODUCTS.ID AND ?(QBF_FILTER) " +
+ "GROUP BY PRODUCTS.REFERENCE, PRODUCTS.NAME " +
+ "ORDER BY PRODUCTS.NAME");
+
+
+paramdates = new uk.chromis.pos.ticket.ProductFilterReportWithDates();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("RECEIPTS.SITEGUID");
+
+report.addQBFFilter(paramdates);
+
+
+
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/mysql/productsales.jrxml b/reports/uk/chromis/mysql/productsales.jrxml
new file mode 100644
index 00000000..cc224939
--- /dev/null
+++ b/reports/uk/chromis/mysql/productsales.jrxml
@@ -0,0 +1,234 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/productsalesprofit.bs b/reports/uk/chromis/mysql/productsalesprofit.bs
new file mode 100644
index 00000000..1c9fb936
--- /dev/null
+++ b/reports/uk/chromis/mysql/productsalesprofit.bs
@@ -0,0 +1,78 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.SalesProfit");
+report.setReport("/uk/chromis/reports/productsalesprofit");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+
+report.setSentence("SELECT PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, " +
+ "SUM(TICKETLINES.UNITS) AS SOLD_UNITS, " +
+ "SUM(TICKETLINES.UNITS * PRODUCTS.PRICEBUY) AS COST_VALUE, " +
+ "SUM(TICKETLINES.UNITS * PRODUCTS.PRICESELL) AS EXPECTED_SALES_VALUE, " +
+ "SUM(TICKETLINES.PRICE) AS ACTUAL_SALES_VALUE, " +
+ "SUM(TICKETLINES.UNITS * PRODUCTS.PRICESELL) " +
+ "- SUM(TICKETLINES.UNITS * PRODUCTS.PRICEBUY) " +
+ "AS EXPECTED_PROFIT, " +
+ "SUM(TICKETLINES.PRICE) - SUM(TICKETLINES.UNITS * PRODUCTS.PRICEBUY) " +
+ "AS ACTUAL_PROFIT, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM (TICKETLINES TICKETLINES " +
+ "INNER JOIN RECEIPTS RECEIPTS " +
+ "ON (TICKETLINES.TICKET = RECEIPTS.ID)) " +
+ "LEFT OUTER JOIN PRODUCTS PRODUCTS " +
+ "ON (TICKETLINES.PRODUCT = PRODUCTS.ID) " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY TICKETLINES.PRODUCT " +
+ "ORDER BY PRODUCTS.SITEGUID, PRODUCTS.REFERENCE ASC");
+
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("PRODUCTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SOLD_UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("COST_VALUE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("EXPECTED_SALES_VALUE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("ACTUAL_SALES_VALUE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("EXPECTED_PROFIT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("ACTUAL_PROFIT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/productsalesprofit.jrxml b/reports/uk/chromis/mysql/productsalesprofit.jrxml
new file mode 100644
index 00000000..09130997
--- /dev/null
+++ b/reports/uk/chromis/mysql/productsalesprofit.jrxml
@@ -0,0 +1,476 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/productscatalog.bs b/reports/uk/chromis/mysql/productscatalog.bs
new file mode 100644
index 00000000..95ad80f1
--- /dev/null
+++ b/reports/uk/chromis/mysql/productscatalog.bs
@@ -0,0 +1,64 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Catalog");
+report.setReport("/uk/chromis/reports/productscatalog1");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, PRODUCTS.NAME, " +
+ "PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, TC.ID AS TAXCAT, TC.NAME AS TAXCATNAME, " +
+ "CATEGORIES.ID AS CATEGORY, CATEGORIES.NAME AS CATEGORYNAME, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON PRODUCTS.TAXCAT = TC.ID " +
+ "WHERE PRODUCTS.ISCATALOG = 1 AND ?(QBF_FILTER) " +
+ "GROUP BY PRODUCTS.SITEGUID, CATEGORIES.ID " +
+ "ORDER BY PRODUCTS.SITEGUID, CATEGORIES.ID, CATEGORIES.NAME, PRODUCTS.CATORDER, PRODUCTS.NAME");
+
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(false, false));
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/mysql/productscatalog.jrxml b/reports/uk/chromis/mysql/productscatalog.jrxml
new file mode 100644
index 00000000..88a042eb
--- /dev/null
+++ b/reports/uk/chromis/mysql/productscatalog.jrxml
@@ -0,0 +1,337 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/salebycustomer.bs b/reports/uk/chromis/mysql/salebycustomer.bs
new file mode 100644
index 00000000..0be12722
--- /dev/null
+++ b/reports/uk/chromis/mysql/salebycustomer.bs
@@ -0,0 +1,71 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.SalesByCustomer");
+report.setReport("/uk/chromis/reports/salebycustomer");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CUSTOMERS.NAME AS CNAME, " +
+ "RECEIPTS.DATENEW, " +
+ "TICKETS.TICKETID, " +
+ "PRODUCTS.NAME AS PNAME, " +
+ "TICKETS.TICKETTYPE, " +
+ "SUM(TICKETLINES.UNITS) AS UNITS, " +
+ "SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = RECEIPTS.SITEGUID) AS SITE " +
+ "FROM RECEIPTS, CUSTOMERS, TICKETS, TICKETLINES LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "WHERE CUSTOMERS.ID = TICKETS.CUSTOMER AND TICKETLINES.PRODUCT = PRODUCTS.ID AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY CUSTOMERS.NAME, RECEIPTS.DATENEW, TICKETS.TICKETID, PRODUCTS.NAME, TICKETS.TICKETTYPE " +
+ "ORDER BY RECEIPTS.SITEGUID, CUSTOMERS.NAME, PRODUCTS.NAME, RECEIPTS.DATENEW");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addParameter("CUSTOMERS.ID");
+report.addParameter("CUSTOMERS.NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("CNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TICKETID", uk.chromis.data.loader.Datas.STRING);
+report.addField("PNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("TICKETTYPE", uk.chromis.data.loader.Datas.INT);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/salebycustomer.jrxml b/reports/uk/chromis/mysql/salebycustomer.jrxml
new file mode 100644
index 00000000..47c1b14d
--- /dev/null
+++ b/reports/uk/chromis/mysql/salebycustomer.jrxml
@@ -0,0 +1,482 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/salecatalog.bs b/reports/uk/chromis/mysql/salecatalog.bs
new file mode 100644
index 00000000..e55362ca
--- /dev/null
+++ b/reports/uk/chromis/mysql/salecatalog.bs
@@ -0,0 +1,70 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL version
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.SaleCatalog");
+report.setReport("/uk/chromis/reports/salecatalog");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+"SELECT " +
+" PRODUCTS.ID, " +
+" PRODUCTS.REFERENCE, " +
+" PRODUCTS.CODE, " +
+" PRODUCTS.NAME, " +
+" PRODUCTS.PRICESELL, " +
+" PRODUCTS.IMAGE, " +
+" TC.ID AS TAXCAT, " +
+" CATEGORIES.NAME AS CATEGORYNAME, " +
+"(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+"FROM " +
+" PRODUCTS LEFT OUTER JOIN CATEGORIES ON " +
+" PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON " +
+" PRODUCTS.TAXCAT = TC.ID " +
+"WHERE PRODUCTS.ISCATALOG = 1 AND ?(QBF_FILTER) " +
+"ORDER BY PRODUCTS.SITEGUID, CATEGORIES.NAME, PRODUCTS.NAME");
+
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(false, false));
+
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("IMAGE", uk.chromis.data.loader.Datas.IMAGE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/mysql/salecatalog.jrxml b/reports/uk/chromis/mysql/salecatalog.jrxml
new file mode 100644
index 00000000..2a9a0bf4
--- /dev/null
+++ b/reports/uk/chromis/mysql/salecatalog.jrxml
@@ -0,0 +1,249 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/saletaxes.bs b/reports/uk/chromis/mysql/saletaxes.bs
new file mode 100644
index 00000000..671dd93d
--- /dev/null
+++ b/reports/uk/chromis/mysql/saletaxes.bs
@@ -0,0 +1,64 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+// added by g.irura @ 27/03/2010. If a retailer issues item which is
+// taxable but gets back a refund, means when this happens, the tax
+// effected initially is deducted. all taxes occur in taxlines.amount
+// where the sum is obtained. It is therefore important to show on this
+// report the taxes that were charged on a receipt but later refunded
+//
+// MySQL July 2016
+//
+
+
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.SaleTaxes");
+report.setReport("/uk/chromis/reports/saletaxes");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+ "SELECT TICKETS.TICKETID, RECEIPTS.DATENEW, PAYMENTS.PAYMENT, TAXCATEGORIES.NAME, TAXLINES.AMOUNT, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = RECEIPTS.SITEGUID) AS SITE " +
+ "FROM RECEIPTS, TAXLINES, TAXES, TAXCATEGORIES,TICKETS, PAYMENTS " +
+ "WHERE PAYMENTS.RECEIPT = RECEIPTS.ID AND RECEIPTS.ID = TAXLINES.RECEIPT AND RECEIPTS.ID=TICKETS.ID AND TAXLINES.TAXID = TAXES.ID AND TAXES.CATEGORY = TAXCATEGORIES.ID AND ?(QBF_FILTER) "+
+ "ORDER BY RECEIPTS.SITEGUID, RECEIPTS.DATENEW");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("TICKETID", uk.chromis.data.loader.Datas.INT);
+report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("AMOUNT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/saletaxes.jrxml b/reports/uk/chromis/mysql/saletaxes.jrxml
new file mode 100644
index 00000000..9fc59710
--- /dev/null
+++ b/reports/uk/chromis/mysql/saletaxes.jrxml
@@ -0,0 +1,400 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/saletaxesold.jrxml b/reports/uk/chromis/mysql/saletaxesold.jrxml
new file mode 100644
index 00000000..aa7f768a
--- /dev/null
+++ b/reports/uk/chromis/mysql/saletaxesold.jrxml
@@ -0,0 +1,390 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/shelfedgelabels.bs b/reports/uk/chromis/mysql/shelfedgelabels.bs
new file mode 100644
index 00000000..110fd6ca
--- /dev/null
+++ b/reports/uk/chromis/mysql/shelfedgelabels.bs
@@ -0,0 +1,65 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.BarcodeSheet");
+report.setReport("/uk/chromis/reports/shelfedgelabels");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, " +
+ "PRODUCTS.CODETYPE, PRODUCTS.NAME, PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, TC.ID AS TAXCAT, TC.NAME AS TAXCATNAME, " +
+ "CATEGORIES.ID AS CATEGORY, CATEGORIES.NAME AS CATEGORYNAME, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON PRODUCTS.TAXCAT = TC.ID " +
+ "WHERE PRODUCTS.CODETYPE IS NOT NULL AND ?(QBF_FILTER) " +
+ "ORDER BY PRODUCTS.SITEGUID, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(false, false));
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODETYPE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/mysql/shelfedgelabels.jrxml b/reports/uk/chromis/mysql/shelfedgelabels.jrxml
new file mode 100644
index 00000000..23669c94
--- /dev/null
+++ b/reports/uk/chromis/mysql/shelfedgelabels.jrxml
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/stockchanges.jrxml b/reports/uk/chromis/mysql/stockchanges.jrxml
new file mode 100644
index 00000000..0e04f5d0
--- /dev/null
+++ b/reports/uk/chromis/mysql/stockchanges.jrxml
@@ -0,0 +1,213 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/taxcatsales.bs b/reports/uk/chromis/mysql/taxcatsales.bs
new file mode 100644
index 00000000..db47d384
--- /dev/null
+++ b/reports/uk/chromis/mysql/taxcatsales.bs
@@ -0,0 +1,73 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.TaxCatSales");
+report.setReport("/uk/chromis/reports/taxcatsales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.MONEY, " +
+ "CLOSEDCASH.DATEEND, " +
+ "TAXES.NAME AS TAXNAME, CATEGORIES.NAME, " +
+ "SUM(TICKETLINES.UNITS) AS QTY, " +
+ "SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) AS CATPRICE, " +
+ "SUM((TICKETLINES.PRICE * TAXES.RATE ) * TICKETLINES.UNITS) AS CATTAX, " +
+ "SUM((TICKETLINES.PRICE + TICKETLINES.PRICE * TAXES.RATE ) * TICKETLINES.UNITS) AS CATTOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = CLOSEDCASH.SITEGUID) AS SITE " +
+ "FROM CLOSEDCASH, TAXES, TICKETLINES " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ //"LEFT OUTER JOIN PRODUCTS_CAT ON PRODUCTS_CAT.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN TICKETS ON TICKETS.ID = TICKETLINES.TICKET " +
+ "LEFT OUTER JOIN RECEIPTS ON RECEIPTS.ID = TICKETS.ID " +
+ "WHERE PRODUCTS.ISCATALOG = 1 AND CLOSEDCASH.MONEY = RECEIPTS.MONEY " +
+ "AND TICKETLINES.TAXID = TAXES.ID " +
+ "AND ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.MONEY, CLOSEDCASH.DATEEND, TAXES.NAME, CATEGORIES.NAME " +
+ "ORDER BY CLOSEDCASH.SITEGUID, TAXES.NAME, CATEGORIES.NAME");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("CLOSEDCASH.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TAXNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("QTY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATPRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATTAX", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/taxcatsales.jrxml b/reports/uk/chromis/mysql/taxcatsales.jrxml
new file mode 100644
index 00000000..b273a36e
--- /dev/null
+++ b/reports/uk/chromis/mysql/taxcatsales.jrxml
@@ -0,0 +1,485 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/taxes.bs b/reports/uk/chromis/mysql/taxes.bs
new file mode 100644
index 00000000..e58b7ea7
--- /dev/null
+++ b/reports/uk/chromis/mysql/taxes.bs
@@ -0,0 +1,59 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ReportTaxes");
+report.setReport("/uk/chromis/reports/taxes");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+ "SELECT TAXCATEGORIES.ID AS TAXID, TAXCATEGORIES.NAME AS TAXNAME, SUM(TAXLINES.AMOUNT) AS TOTALTAXES, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = RECEIPTS.SITEGUID) AS SITE " +
+ "FROM RECEIPTS, TAXLINES, TAXES, TAXCATEGORIES " +
+ "WHERE RECEIPTS.ID = TAXLINES.RECEIPT AND TAXLINES.TAXID = TAXES.ID AND TAXES.CATEGORY = TAXCATEGORIES.ID " +
+ "AND ?(QBF_FILTER) " +
+ "GROUP BY RECEIPTS.SITEGUID, TAXCATEGORIES.ID, TAXCATEGORIES.NAME " +
+ "ORDER BY RECEIPTS.SITEGUID, TAXCATEGORIES.NAME ");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+
+report.addQBFFilter(paramdates);
+
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("TOTALTAXES", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/mysql/taxes.jrxml b/reports/uk/chromis/mysql/taxes.jrxml
new file mode 100644
index 00000000..9d9a478f
--- /dev/null
+++ b/reports/uk/chromis/mysql/taxes.jrxml
@@ -0,0 +1,322 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/ticketsample.jrxml b/reports/uk/chromis/mysql/ticketsample.jrxml
new file mode 100644
index 00000000..da797cf5
--- /dev/null
+++ b/reports/uk/chromis/mysql/ticketsample.jrxml
@@ -0,0 +1,306 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/ticketsample_lines.jrxml b/reports/uk/chromis/mysql/ticketsample_lines.jrxml
new file mode 100644
index 00000000..85aba46d
--- /dev/null
+++ b/reports/uk/chromis/mysql/ticketsample_lines.jrxml
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/timeseriesproduct.bs b/reports/uk/chromis/mysql/timeseriesproduct.bs
new file mode 100644
index 00000000..3f4f31f7
--- /dev/null
+++ b/reports/uk/chromis/mysql/timeseriesproduct.bs
@@ -0,0 +1,90 @@
+ // Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.TimeSeriesProduct");
+report.setReport("/uk/chromis/reports/timeseriesproduct");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CATEGORIES.NAME AS CATNAME, " +
+ "PRODUCTS.NAME AS PRODUCT, " +
+ "PRODUCTS.REFERENCE AS REF, " +
+ "PRODUCTS.CODE AS BARCODE, " +
+ "PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, " +
+ "PRODUCTS.STOCKCOST, " +
+ "PRODUCTS.STOCKVOLUME, " +
+ "TAXCATEGORIES.ID AS TAXCAT, " +
+ "TAXCATEGORIES.NAME AS TAXCATNAME, " +
+ "PEOPLE.NAME AS SELLER, " +
+ "RECEIPTS.DATENEW AS RECEIPTDATE, " +
+ "SUM(TICKETLINES.UNITS) AS TOTALUNIT, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = PRODUCTS.SITEGUID) AS SITE " +
+ "FROM RECEIPTS LEFT OUTER JOIN TICKETS ON RECEIPTS.ID = TICKETS.ID LEFT OUTER JOIN TICKETLINES ON " +
+ "TICKETS.ID = TICKETLINES.TICKET, PRODUCTS LEFT OUTER JOIN CATEGORIES ON " +
+ "PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES ON PRODUCTS.TAXCAT = TAXCATEGORIES.ID, " +
+ " PEOPLE " +
+ "WHERE PRODUCTS.ID = TICKETLINES.PRODUCT AND PEOPLE.ID = TICKETS.PERSON AND PRODUCTS.ISCATALOG = 1 AND ?(QBF_FILTER) " +
+ "GROUP BY CATEGORIES.NAME, PRODUCTS.NAME, PRODUCTS.REFERENCE,PRODUCTS.CODE,PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, PRODUCTS.STOCKCOST,PRODUCTS.STOCKVOLUME, TAXCATEGORIES.ID, TAXCATEGORIES.NAME, PEOPLE.NAME, RECEIPTS.DATENEW " +
+ "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME, RECEIPTS.DATENEW, PEOPLE.NAME");
+
+
+paramdates = new uk.chromis.pos.ticket.ProductFilterReportWithDates();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+
+
+report.addQBFFilter(paramdates);
+
+report.addField("CATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRODUCT", uk.chromis.data.loader.Datas.STRING);
+report.addField("REF", uk.chromis.data.loader.Datas.STRING);
+report.addField("BARCODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKCOST", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKVOLUME", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("SALER", uk.chromis.data.loader.Datas.STRING);
+report.addField("RECEIPTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTALUNIT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+
+report;
+
diff --git a/reports/uk/chromis/mysql/timeseriesproduct.jrxml b/reports/uk/chromis/mysql/timeseriesproduct.jrxml
new file mode 100644
index 00000000..85610a93
--- /dev/null
+++ b/reports/uk/chromis/mysql/timeseriesproduct.jrxml
@@ -0,0 +1,516 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/top10sales.bs b/reports/uk/chromis/mysql/top10sales.bs
new file mode 100644
index 00000000..9712e067
--- /dev/null
+++ b/reports/uk/chromis/mysql/top10sales.bs
@@ -0,0 +1,70 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Top10Sales");
+report.setReport("/uk/chromis/reports/top10sales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+ "SELECT " +
+ "PRODUCTS.REFERENCE,PRODUCTS.NAME,PRODUCTS.PRICEBUY,PRODUCTS.PRICESELL, " +
+ "ROUND(SUM(TICKETLINES.UNITS)) AS UNITS, " +
+ "ROUND(SUM(TICKETLINES.PRICE * TICKETLINES.UNITS)) AS SUBTOTAL, " +
+ "ROUND(SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) * TAXES.RATE)) As TAXES, " +
+ "ROUND(SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) + SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) * TAXES.RATE)) AS GROSSTOTAL " +
+ "FROM TICKETLINES " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN TICKETS ON TICKETS.ID = TICKETLINES.TICKET " +
+ "LEFT OUTER JOIN RECEIPTS ON RECEIPTS.ID = TICKETS.ID, TAXES " +
+ "WHERE RECEIPTS.ID = TICKETS.ID " +
+ "AND TICKETS.ID = TICKETLINES.TICKET " +
+ "AND TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "AND TICKETLINES.TAXID = TAXES.ID " +
+ "AND ?(QBF_FILTER) " +
+ "GROUP BY PRODUCTS.REFERENCE, PRODUCTS.NAME,PRODUCTS.PRICEBUY,PRODUCTS.PRICESELL " +
+ "ORDER BY GROSSTOTAL DESC " +
+ "LIMIT 10");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SUBTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXES", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("GROSSTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report;
+
diff --git a/reports/uk/chromis/mysql/top10sales.jrxml b/reports/uk/chromis/mysql/top10sales.jrxml
new file mode 100644
index 00000000..d72c4957
--- /dev/null
+++ b/reports/uk/chromis/mysql/top10sales.jrxml
@@ -0,0 +1,348 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/top10sales1.jrxml b/reports/uk/chromis/mysql/top10sales1.jrxml
new file mode 100644
index 00000000..b3fe569a
--- /dev/null
+++ b/reports/uk/chromis/mysql/top10sales1.jrxml
@@ -0,0 +1,348 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/updatedprices.bs b/reports/uk/chromis/mysql/updatedprices.bs
new file mode 100644
index 00000000..76ceabeb
--- /dev/null
+++ b/reports/uk/chromis/mysql/updatedprices.bs
@@ -0,0 +1,43 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.UpdatedPrices");
+report.setReport("/uk/chromis/reports/updatedprices");
+report.setResourceBundle("uk/chromis/reports/updatedprices_messages");
+
+report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.PRICEBUY,CSVIMPORT.PRICESELL,CSVIMPORT.PREVIOUSBUY,CSVIMPORT.PREVIOUSSELL"+
+ " FROM CSVIMPORT WHERE CSVIMPORT.CSVERROR='Updated Price Details' ");
+
+
+
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("pricebuy", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("pricesell", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("previousbuy", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("previoussell", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/mysql/updatedprices.jrxml b/reports/uk/chromis/mysql/updatedprices.jrxml
new file mode 100644
index 00000000..e2070122
--- /dev/null
+++ b/reports/uk/chromis/mysql/updatedprices.jrxml
@@ -0,0 +1,259 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/mysql/usersales.bs b/reports/uk/chromis/mysql/usersales.bs
new file mode 100644
index 00000000..d9e66246
--- /dev/null
+++ b/reports/uk/chromis/mysql/usersales.bs
@@ -0,0 +1,56 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// MySQL July 2016
+//
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.UserSells");
+report.setReport("/uk/chromis/reports/usersales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PEOPLE.NAME, MIN(RECEIPTS.DATENEW) AS STARTDATE, MAX(RECEIPTS.DATENEW) AS ENDDATE, " +
+ "SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL, " +
+ "(SELECT SITES.NAME FROM SITES WHERE SITES.GUID = RECEIPTS.SITEGUID) AS SITE " +
+ "FROM PEOPLE, RECEIPTS, TICKETS, TICKETLINES " +
+ "WHERE PEOPLE.ID = TICKETS.PERSON AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY SITE, PEOPLE.NAME " +
+ "ORDER BY SITE, PEOPLE.NAME ");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SITE", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/mysql/usersales.jrxml b/reports/uk/chromis/mysql/usersales.jrxml
new file mode 100644
index 00000000..0f4b937c
--- /dev/null
+++ b/reports/uk/chromis/mysql/usersales.jrxml
@@ -0,0 +1,415 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/Barcodesheet.jrxml b/reports/uk/chromis/postgresql/Barcodesheet.jrxml
new file mode 100644
index 00000000..b74bd5ea
--- /dev/null
+++ b/reports/uk/chromis/postgresql/Barcodesheet.jrxml
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/badprice.bs b/reports/uk/chromis/postgresql/badprice.bs
new file mode 100644
index 00000000..3130570a
--- /dev/null
+++ b/reports/uk/chromis/postgresql/badprice.bs
@@ -0,0 +1,42 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.NewProducts");
+report.setReport("/uk/chromis/reports/newproducts");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.PRICEBUY, CSVIMPORT.PRICESELL"+
+ " FROM CSVIMPORT WHERE CSVIMPORT.CSVERROR='New product'");
+
+
+
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("pricebuy", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("pricesell", uk.chromis.data.loader.Datas.DOUBLE);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/badprice.jrxml b/reports/uk/chromis/postgresql/badprice.jrxml
new file mode 100644
index 00000000..d81c2465
--- /dev/null
+++ b/reports/uk/chromis/postgresql/badprice.jrxml
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/barcodesheet.bs b/reports/uk/chromis/postgresql/barcodesheet.bs
new file mode 100644
index 00000000..207a7c1d
--- /dev/null
+++ b/reports/uk/chromis/postgresql/barcodesheet.bs
@@ -0,0 +1,47 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.BarcodeSheet");
+report.setReport("/uk/chromis/reports/barcodesheet");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT "
+ + "PRODUCTS.CODE, PRODUCTS.CODETYPE, PRODUCTS.NAME, "
+ + "CATEGORIES.ID AS CATEGORY, "
+ + "CATEGORIES.NAME AS CATEGORYNAME "
+ + "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID "
+ + "WHERE PRODUCTS.CODETYPE IS NOT NULL AND ?(QBF_FILTER) "
+ + "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter1());
+
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODETYPE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/postgresql/bestsellers.bs b/reports/uk/chromis/postgresql/bestsellers.bs
new file mode 100644
index 00000000..671f6787
--- /dev/null
+++ b/reports/uk/chromis/postgresql/bestsellers.bs
@@ -0,0 +1,68 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.BestSellers");
+report.setReport("/uk/chromis/reports/bestsellers");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.DATESTART, " +
+ "CLOSEDCASH.DATEEND, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "PRODUCTS.PRICESELL, " +
+ "Sum(TICKETLINES.UNITS) AS UNITS, " +
+ "Sum((TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS TOTAL " +
+ "FROM (TAXES INNER JOIN " +
+ "((PRODUCTS INNER JOIN " +
+ "(TICKETS INNER JOIN TICKETLINES ON TICKETS.ID = TICKETLINES.TICKET) " +
+ "ON PRODUCTS.ID = TICKETLINES.PRODUCT) " +
+ "INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID) " +
+ "ON TAXES.ID = TICKETLINES.TAXID) INNER JOIN CLOSEDCASH " +
+ "ON RECEIPTS.MONEY = CLOSEDCASH.MONEY " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.PRICESELL " +
+ "ORDER BY TOTAL DESC, PRODUCTS.NAME");
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.SITEGUID");
+
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("DATESTART", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/bestsellers.jrxml b/reports/uk/chromis/postgresql/bestsellers.jrxml
new file mode 100644
index 00000000..3b37ec58
--- /dev/null
+++ b/reports/uk/chromis/postgresql/bestsellers.jrxml
@@ -0,0 +1,347 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/bestsellersbysite.jrxml b/reports/uk/chromis/postgresql/bestsellersbysite.jrxml
new file mode 100644
index 00000000..d8393654
--- /dev/null
+++ b/reports/uk/chromis/postgresql/bestsellersbysite.jrxml
@@ -0,0 +1,455 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/cashflow.bs b/reports/uk/chromis/postgresql/cashflow.bs
new file mode 100644
index 00000000..f1a4fd1b
--- /dev/null
+++ b/reports/uk/chromis/postgresql/cashflow.bs
@@ -0,0 +1,53 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CashFlow");
+report.setReport("/uk/chromis/reports/cashflow");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "PAYMENTS.PAYMENT, " +
+ "SUM( PAYMENTS.TOTAL ) AS PAYMENT_TOTAL " +
+ "FROM CLOSEDCASH, PAYMENTS, RECEIPTS " +
+ "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY " +
+ "AND PAYMENTS.RECEIPT = RECEIPTS.ID AND ?(QBF_FILTER) " +
+ "GROUP BY PAYMENTS.PAYMENT");
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("PAYMENTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("PAYMENT_TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+return report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/cashflow.jrxml b/reports/uk/chromis/postgresql/cashflow.jrxml
new file mode 100644
index 00000000..60a0e48b
--- /dev/null
+++ b/reports/uk/chromis/postgresql/cashflow.jrxml
@@ -0,0 +1,271 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/cashregisterlog.bs b/reports/uk/chromis/postgresql/cashregisterlog.bs
new file mode 100644
index 00000000..bc05e80d
--- /dev/null
+++ b/reports/uk/chromis/postgresql/cashregisterlog.bs
@@ -0,0 +1,53 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CashRegisterLog");
+report.setReport("/uk/chromis/reports/cashregisterlog");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "RECEIPTS.DATENEW, " +
+ "PAYMENTS.PAYMENT, " +
+ "SUM( PAYMENTS.TOTAL ) AS PAYMENT_TOTAL " +
+ "FROM RECEIPTS " +
+ "LEFT JOIN PAYMENTS ON RECEIPTS.ID = PAYMENTS.RECEIPT " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY RECEIPTS.DATENEW, PAYMENTS.PAYMENT");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("PAYMENT_TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+return report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/cashregisterlog.jrxml b/reports/uk/chromis/postgresql/cashregisterlog.jrxml
new file mode 100644
index 00000000..59a95ace
--- /dev/null
+++ b/reports/uk/chromis/postgresql/cashregisterlog.jrxml
@@ -0,0 +1,299 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/categorysales.bs b/reports/uk/chromis/postgresql/categorysales.bs
new file mode 100644
index 00000000..1fbae5b3
--- /dev/null
+++ b/reports/uk/chromis/postgresql/categorysales.bs
@@ -0,0 +1,60 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CategorySales");
+report.setReport("/uk/chromis/reports/categorysales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+
+report.setSentence("SELECT CATEGORIES.ID, CATEGORIES.NAME, " +
+"SUM(TICKETLINES.UNITS) AS QTY, " +
+"SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) AS CATPRICE, " +
+"SUM((PRODUCTS.PRICESELL * TICKETLINES.UNITS)-((CASE WHEN ISVPRICE = TRUE THEN 1 ELSE 0 END) * (TICKETLINES.PRICE * TICKETLINES.UNITS))) AS DISC, " +
+"SUM((TICKETLINES.PRICE * TAXES.RATE)* TICKETLINES.UNITS) AS CATTAX, " +
+"SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) + ((TICKETLINES.PRICE * TAXES.RATE)* TICKETLINES.UNITS)) AS CATTOTAL " +
+"FROM (TICKETS INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID) INNER JOIN ((CATEGORIES INNER JOIN PRODUCTS ON CATEGORIES.ID = PRODUCTS.CATEGORY) INNER JOIN (TAXES INNER JOIN TICKETLINES ON TAXES.ID = TICKETLINES.TAXID) ON PRODUCTS.ID = TICKETLINES.PRODUCT) ON TICKETS.ID = TICKETLINES.TICKET " +
+"WHERE ?(QBF_FILTER) " +
+"GROUP BY CATEGORIES.ID, CATEGORIES.NAME " +
+"ORDER BY CATEGORIES.NAME");;
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("QTY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATPRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("DISC", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATTAX", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/categorysales.jrxml b/reports/uk/chromis/postgresql/categorysales.jrxml
new file mode 100644
index 00000000..8843528b
--- /dev/null
+++ b/reports/uk/chromis/postgresql/categorysales.jrxml
@@ -0,0 +1,404 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/chartsales.bs b/reports/uk/chromis/postgresql/chartsales.bs
new file mode 100644
index 00000000..7b093a9e
--- /dev/null
+++ b/reports/uk/chromis/postgresql/chartsales.bs
@@ -0,0 +1,55 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see ..
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.SalesChart");
+report.setReport("/uk/chromis/reports/chartsales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT CATEGORIES.ID, CATEGORIES.NAME, " +
+ "Sum(TICKETLINES.UNITS) AS QTY," +
+ "Sum((TICKETLINES.PRICE * TICKETLINES.UNITS) + ((TICKETLINES.PRICE * TAXES.RATE)* TICKETLINES.UNITS)) AS CATTOTAL " +
+ "FROM (TICKETS INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID) " +
+ "INNER JOIN ((CATEGORIES INNER JOIN PRODUCTS ON CATEGORIES.ID = PRODUCTS.CATEGORY) " +
+ "INNER JOIN (TAXES INNER JOIN TICKETLINES ON TAXES.ID = TICKETLINES.TAXID) " +
+ "ON PRODUCTS.ID = TICKETLINES.PRODUCT) ON TICKETS.ID = TICKETLINES.TICKET " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY CATEGORIES.ID, CATEGORIES.NAME");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("QTY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
diff --git a/reports/uk/chromis/postgresql/chartsales.jrxml b/reports/uk/chromis/postgresql/chartsales.jrxml
new file mode 100644
index 00000000..122e3e11
--- /dev/null
+++ b/reports/uk/chromis/postgresql/chartsales.jrxml
@@ -0,0 +1,215 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/closedpos.bs b/reports/uk/chromis/postgresql/closedpos.bs
new file mode 100644
index 00000000..a8f26b58
--- /dev/null
+++ b/reports/uk/chromis/postgresql/closedpos.bs
@@ -0,0 +1,63 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Closing");
+report.setReport("/uk/chromis/reports/closedpos");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.HOSTSEQUENCE, " +
+ "CLOSEDCASH.MONEY, " +
+ "CLOSEDCASH.DATESTART, " +
+ "CLOSEDCASH.DATEEND, " +
+ "PAYMENTS.PAYMENT, " +
+ "SUM(PAYMENTS.TOTAL) AS TOTAL " +
+ "FROM CLOSEDCASH, PAYMENTS, RECEIPTS " +
+ "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY AND PAYMENTS.RECEIPT = RECEIPTS.ID AND ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.HOSTSEQUENCE, CLOSEDCASH.MONEY, CLOSEDCASH.DATESTART, CLOSEDCASH.DATEEND, PAYMENTS.PAYMENT " +
+ "ORDER BY CLOSEDCASH.HOST, CLOSEDCASH.HOSTSEQUENCE");
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);;
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("HOSTSEQUENCE", uk.chromis.data.loader.Datas.INT);
+report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATESTART", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
+
diff --git a/reports/uk/chromis/postgresql/closedpos.jrxml b/reports/uk/chromis/postgresql/closedpos.jrxml
new file mode 100644
index 00000000..87ecb43a
--- /dev/null
+++ b/reports/uk/chromis/postgresql/closedpos.jrxml
@@ -0,0 +1,361 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/closedpos_1.bs b/reports/uk/chromis/postgresql/closedpos_1.bs
new file mode 100644
index 00000000..93b054bd
--- /dev/null
+++ b/reports/uk/chromis/postgresql/closedpos_1.bs
@@ -0,0 +1,63 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Closing2");
+report.setReport("/uk/chromis/reports/closedpos_1");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.HOSTSEQUENCE, " +
+ "CLOSEDCASH.MONEY, " +
+ "CLOSEDCASH.DATESTART, " +
+ "CLOSEDCASH.DATEEND, " +
+ "PAYMENTS.PAYMENT, " +
+ "SUM(PAYMENTS.TOTAL) AS TOTAL " +
+ "FROM CLOSEDCASH, PAYMENTS, RECEIPTS " +
+ "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY AND PAYMENTS.RECEIPT = RECEIPTS.ID AND ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.HOSTSEQUENCE, CLOSEDCASH.MONEY, CLOSEDCASH.DATESTART, CLOSEDCASH.DATEEND, PAYMENTS.PAYMENT " +
+ "ORDER BY CLOSEDCASH.HOST, CLOSEDCASH.HOSTSEQUENCE");
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("HOSTSEQUENCE", uk.chromis.data.loader.Datas.INT);
+report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATESTART", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
+
diff --git a/reports/uk/chromis/postgresql/closedpos_1.jrxml b/reports/uk/chromis/postgresql/closedpos_1.jrxml
new file mode 100644
index 00000000..11ceae7f
--- /dev/null
+++ b/reports/uk/chromis/postgresql/closedpos_1.jrxml
@@ -0,0 +1,205 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/closedproducts.bs b/reports/uk/chromis/postgresql/closedproducts.bs
new file mode 100644
index 00000000..dbb0e8b1
--- /dev/null
+++ b/reports/uk/chromis/postgresql/closedproducts.bs
@@ -0,0 +1,76 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ClosedProducts");
+report.setReport("/uk/chromis/reports/closedproducts");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.MONEY, " +
+ "CLOSEDCASH.DATEEND, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "PRODUCTS.PRICESELL+(PRODUCTS.PRICESELL*TAXES.RATE) AS PRICE, " +
+ "Sum(TICKETLINES.UNITS) AS UNITS, " +
+ "Sum((PRODUCTS.PRICESELL+PRODUCTS.PRICESELL*TAXES.RATE)*UNITS) AS VALUE, " +
+ "Sum((PRODUCTS.PRICESELL+PRODUCTS.PRICESELL*TAXES.RATE)*TICKETLINES.UNITS-(TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS DISCOUNT, " +
+ "Sum((TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS TOTAL " +
+ "FROM ((TICKETS INNER JOIN (TICKETLINES INNER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID) " +
+ "ON TICKETS.ID = TICKETLINES.TICKET) INNER JOIN (RECEIPTS INNER JOIN CLOSEDCASH " +
+ "ON RECEIPTS.MONEY = CLOSEDCASH.MONEY) ON TICKETS.ID = RECEIPTS.ID) INNER JOIN taxes ON TICKETLINES.TAXID = taxes.ID " +
+ "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.MONEY, CLOSEDCASH.DATEEND, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.PRICESELL+(PRODUCTS.PRICESELL*TAXES.RATE) " +
+ "ORDER BY PRODUCTS.NAME, CLOSEDCASH.HOST, CLOSEDCASH.DATEEND");
+
+paramdates = new uk.chromis.pos.ticket.ProductFilterReportWithDates();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.SITEGUID");
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(paramdates);
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("VALUE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("DISCOUNT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/closedproducts.jrxml b/reports/uk/chromis/postgresql/closedproducts.jrxml
new file mode 100644
index 00000000..ba1edcd5
--- /dev/null
+++ b/reports/uk/chromis/postgresql/closedproducts.jrxml
@@ -0,0 +1,641 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/closedproducts_1.bs b/reports/uk/chromis/postgresql/closedproducts_1.bs
new file mode 100644
index 00000000..3a4a0dda
--- /dev/null
+++ b/reports/uk/chromis/postgresql/closedproducts_1.bs
@@ -0,0 +1,71 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ClosedProducts");
+report.setReport("/uk/chromis/reports/closedproducts_1");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.DATESTART, " +
+ "CLOSEDCASH.DATEEND, " +
+ "TAXES.NAME AS TAXNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "PRODUCTS.PRICESELL, " +
+ "Sum(TICKETLINES.UNITS) AS UNITS, " +
+ "Sum((TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS TOTAL " +
+ "FROM (TAXES INNER JOIN " +
+ "((PRODUCTS INNER JOIN " +
+ "(TICKETS INNER JOIN TICKETLINES ON TICKETS.ID = TICKETLINES.TICKET) " +
+ "ON PRODUCTS.ID = TICKETLINES.PRODUCT) " +
+ "INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID) " +
+ "ON TAXES.ID = TICKETLINES.TAXID) INNER JOIN CLOSEDCASH " +
+ "ON RECEIPTS.MONEY = CLOSEDCASH.MONEY " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.DATESTART, CLOSEDCASH.DATEEND, TAXES.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.PRICESELL " +
+ "ORDER BY CLOSEDCASH.HOST, TAXES.NAME, PRODUCTS.NAME");
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATESTART", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TAXNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/closedproducts_1.jrxml b/reports/uk/chromis/postgresql/closedproducts_1.jrxml
new file mode 100644
index 00000000..40eef527
--- /dev/null
+++ b/reports/uk/chromis/postgresql/closedproducts_1.jrxml
@@ -0,0 +1,461 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/closedproducts_ean.bs b/reports/uk/chromis/postgresql/closedproducts_ean.bs
new file mode 100644
index 00000000..19d62fce
--- /dev/null
+++ b/reports/uk/chromis/postgresql/closedproducts_ean.bs
@@ -0,0 +1,84 @@
+// Closedproducts Report with EAN-code instead of Ref.ID
+//
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+// **************************************************************************
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ClosedProductsEAN");
+report.setReport("/uk/chromis/reports/closedproducts_ean");
+report.setResourceBundle("uk/chromis/reports/closedproducts_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.MONEY, " +
+ "CLOSEDCASH.DATEEND, " +
+ "PRODUCTS.CODE, " +
+ "(SELECT CATEGORIES.NAME FROM CATEGORIES WHERE PRODUCTS.CATEGORY = CATEGORIES.ID), " +
+ "PRODUCTS.NAME, " +
+ "Sum(PRODUCTS.PRICESELL+(PRODUCTS.PRICESELL*TAXES.RATE)) AS PRICE, " +
+ "Sum(TICKETLINES.UNITS) AS UNITS, " +
+ "Sum((PRODUCTS.PRICESELL+PRODUCTS.PRICESELL*TAXES.RATE)*UNITS) AS VALUE, " +
+ "Sum((PRODUCTS.PRICESELL+PRODUCTS.PRICESELL*TAXES.RATE)*TICKETLINES.UNITS-(TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS DISCOUNT, " +
+ "Sum((TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS TOTAL " +
+ "FROM ((TICKETS INNER JOIN (TICKETLINES INNER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID) " +
+ "ON TICKETS.ID = TICKETLINES.TICKET) INNER JOIN (RECEIPTS INNER JOIN CLOSEDCASH " +
+ "ON RECEIPTS.MONEY = CLOSEDCASH.MONEY) ON TICKETS.ID = RECEIPTS.ID) INNER JOIN taxes ON TICKETLINES.TAXID = taxes.ID " +
+ "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.MONEY, CLOSEDCASH.DATEEND, PRODUCTS.CODE, PRODUCTS.NAME " +
+ "ORDER BY PRODUCTS.NAME, CLOSEDCASH.HOST, CLOSEDCASH.DATEEND");
+
+
+report.addParameter("CLOSEDCASH.DATEEND");
+report.addParameter("CLOSEDCASH.DATEEND");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+// JG - 8 Jan 14 paramdates.setEndDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter());
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("VALUE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("DISCOUNT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/closedproducts_ean.jrxml b/reports/uk/chromis/postgresql/closedproducts_ean.jrxml
new file mode 100644
index 00000000..bb26d25c
--- /dev/null
+++ b/reports/uk/chromis/postgresql/closedproducts_ean.jrxml
@@ -0,0 +1,631 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/customers.bs b/reports/uk/chromis/postgresql/customers.bs
new file mode 100644
index 00000000..fcfaa7fa
--- /dev/null
+++ b/reports/uk/chromis/postgresql/customers.bs
@@ -0,0 +1,51 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersReport");
+report.setReport("/uk/chromis/reports/customers");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT ID, TAXID, NAME, ADDRESS, NOTES, CARD, MAXDEBT, CURDATE, CURDEBT, DISCOUNT " +
+ "FROM CUSTOMERS " +
+ "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND ?(QBF_FILTER)");
+
+report.addParameter("ID");
+report.addParameter("NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
+report.addField("NOTES", uk.chromis.data.loader.Datas.STRING);
+report.addField("CARD", uk.chromis.data.loader.Datas.STRING);
+report.addField("MAXDEBT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CURDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("CURDEBT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("DISCOUNT", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/customers.jrxml b/reports/uk/chromis/postgresql/customers.jrxml
new file mode 100644
index 00000000..b1b4bab1
--- /dev/null
+++ b/reports/uk/chromis/postgresql/customers.jrxml
@@ -0,0 +1,314 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/customers_export.bs b/reports/uk/chromis/postgresql/customers_export.bs
new file mode 100644
index 00000000..0005431c
--- /dev/null
+++ b/reports/uk/chromis/postgresql/customers_export.bs
@@ -0,0 +1,49 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersExport");
+report.setReport("/uk/chromis/reports/customers_export");
+report.setResourceBundle("uk/chromis/reports/customers_messages");
+
+report.setSentence("SELECT ID,NAME,FIRSTNAME,LASTNAME,ADDRESS,ADDRESS2,CITY,POSTAL,PHONE,EMAIL " +
+ "FROM CUSTOMERS " +
+ "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND ?(QBF_FILTER)" +
+ "ORDER BY NAME ");
+
+report.addParameter("ID");
+report.addParameter("NAME");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("FIRSTNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("LASTNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS2", uk.chromis.data.loader.Datas.STRING);
+report.addField("CITY", uk.chromis.data.loader.Datas.STRING);
+report.addField("POSTAL", uk.chromis.data.loader.Datas.STRING);
+report.addField("PHONE", uk.chromis.data.loader.Datas.STRING);
+report.addField("EMAIL", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/customers_export.jrxml b/reports/uk/chromis/postgresql/customers_export.jrxml
new file mode 100644
index 00000000..32dea957
--- /dev/null
+++ b/reports/uk/chromis/postgresql/customers_export.jrxml
@@ -0,0 +1,242 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/customers_list.bs b/reports/uk/chromis/postgresql/customers_list.bs
new file mode 100644
index 00000000..51bb7802
--- /dev/null
+++ b/reports/uk/chromis/postgresql/customers_list.bs
@@ -0,0 +1,50 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersList");
+report.setReport("/uk/chromis/reports/customers_list");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT TAXID, NAME, FIRSTNAME, LASTNAME,ADDRESS,ADDRESS2,CITY,POSTAL,PHONE,EMAIL " +
+ "FROM CUSTOMERS " +
+ "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND ?(QBF_FILTER)" +
+ "ORDER BY NAME ");
+
+report.addParameter("TAXID");
+report.addParameter("NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("FIRSTNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("LASTNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS2", uk.chromis.data.loader.Datas.STRING);
+report.addField("CITY", uk.chromis.data.loader.Datas.STRING);
+report.addField("POSTAL", uk.chromis.data.loader.Datas.STRING);
+report.addField("PHONE", uk.chromis.data.loader.Datas.STRING);
+report.addField("EMAIL", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/customers_list.jrxml b/reports/uk/chromis/postgresql/customers_list.jrxml
new file mode 100644
index 00000000..1c460e55
--- /dev/null
+++ b/reports/uk/chromis/postgresql/customers_list.jrxml
@@ -0,0 +1,300 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/customersb.bs b/reports/uk/chromis/postgresql/customersb.bs
new file mode 100644
index 00000000..41017ee7
--- /dev/null
+++ b/reports/uk/chromis/postgresql/customersb.bs
@@ -0,0 +1,45 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersBReport");
+report.setReport("/uk/chromis/reports/customers");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT ID, TAXID, NAME, ADDRESS, NOTES, CARD, MAXDEBT, CURDATE, CURDEBT, DISCOUNT " +
+ "FROM CUSTOMERS " +
+ "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND CURDEBT IS NOT NULL AND CURDEBT <> 0");
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
+report.addField("NOTES", uk.chromis.data.loader.Datas.STRING);
+report.addField("CARD", uk.chromis.data.loader.Datas.STRING);
+report.addField("MAXDEBT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CURDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("CURDEBT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("DISCOUNT", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
+
diff --git a/reports/uk/chromis/postgresql/customersb.jrxml b/reports/uk/chromis/postgresql/customersb.jrxml
new file mode 100644
index 00000000..578bdd16
--- /dev/null
+++ b/reports/uk/chromis/postgresql/customersb.jrxml
@@ -0,0 +1,314 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/customersdebtors.bs b/reports/uk/chromis/postgresql/customersdebtors.bs
new file mode 100644
index 00000000..809ff8b2
--- /dev/null
+++ b/reports/uk/chromis/postgresql/customersdebtors.bs
@@ -0,0 +1,45 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersList");
+report.setReport("/uk/chromis/reports/customersdebtors");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT ID, TAXID, NAME, ADDRESS, CURDEBT " +
+ "FROM CUSTOMERS " +
+ "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND ?(QBF_FILTER)" +
+ "ORDER BY NAME ");
+
+report.addParameter("ID");
+report.addParameter("NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
+report.addField("CURDEBT", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/customersdebtors.jrxml b/reports/uk/chromis/postgresql/customersdebtors.jrxml
new file mode 100644
index 00000000..1dea3c30
--- /dev/null
+++ b/reports/uk/chromis/postgresql/customersdebtors.jrxml
@@ -0,0 +1,255 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/customersdiary.bs b/reports/uk/chromis/postgresql/customersdiary.bs
new file mode 100644
index 00000000..4fe8a15b
--- /dev/null
+++ b/reports/uk/chromis/postgresql/customersdiary.bs
@@ -0,0 +1,65 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CustomersDiary");
+report.setReport("/uk/chromis/reports/customersdiary");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "RECEIPTS.DATENEW, " +
+ "TICKETS.TICKETID, " +
+ "PAYMENTS.PAYMENT, " +
+ "PAYMENTS.TOTAL, " +
+ "CUSTOMERS.TAXID, " +
+ "CUSTOMERS.NAME " +
+ "FROM RECEIPTS, TICKETS, CUSTOMERS, PAYMENTS " +
+ "WHERE RECEIPTS.ID = TICKETS.ID AND RECEIPTS.ID = PAYMENTS.RECEIPT " +
+ "AND TICKETS.CUSTOMER = CUSTOMERS.ID " +
+ "AND ?(QBF_FILTER) " +
+ "ORDER BY CUSTOMERS.NAME, RECEIPTS.DATENEW DESC");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addParameter("CUSTOMERS.ID");
+report.addParameter("CUSTOMERS.NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TICKETID", uk.chromis.data.loader.Datas.STRING);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/postgresql/customersdiary.jrxml b/reports/uk/chromis/postgresql/customersdiary.jrxml
new file mode 100644
index 00000000..fa45a5b3
--- /dev/null
+++ b/reports/uk/chromis/postgresql/customersdiary.jrxml
@@ -0,0 +1,344 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/dailypresence.bs b/reports/uk/chromis/postgresql/dailypresence.bs
new file mode 100644
index 00000000..eaaec34d
--- /dev/null
+++ b/reports/uk/chromis/postgresql/dailypresence.bs
@@ -0,0 +1,53 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.DailyPresenceReport");
+report.setReport("/uk/chromis/reports/dailypresence");
+report.setResourceBundle("uk/chromis/reports/dailypresence_messages");
+
+report.setSentence("SELECT " +
+ "PEOPLE.NAME, " +
+ "SHIFTS.STARTSHIFT, " +
+ "SHIFTS.ENDSHIFT, " +
+ "CONCAT('',TIMESTAMPDIFF(SHIFTS.ENDSHIFT, SHIFTS.STARTSHIFT)) AS TOTAL " +
+ "FROM PEOPLE LEFT JOIN SHIFTS ON SHIFTS.PPLID = PEOPLE.ID " +
+ "WHERE ?(QBF_FILTER) ");
+
+report.addParameter("SHIFTS.STARTSHIFT");
+report.addParameter("SHIFTS.ENDSHIFT");
+report.addParameter("SHIFTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/postgresql/dailypresence.jrxml b/reports/uk/chromis/postgresql/dailypresence.jrxml
new file mode 100644
index 00000000..47342f32
--- /dev/null
+++ b/reports/uk/chromis/postgresql/dailypresence.jrxml
@@ -0,0 +1,320 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/dailypresencereport.bs b/reports/uk/chromis/postgresql/dailypresencereport.bs
new file mode 100644
index 00000000..16fb4cb3
--- /dev/null
+++ b/reports/uk/chromis/postgresql/dailypresencereport.bs
@@ -0,0 +1,56 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Postgresql July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.DailyPresenceReport");
+report.setReport("/uk/chromis/reports/dailypresence");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "PEOPLE.NAME, " +
+ "SHIFTS.STARTSHIFT, " +
+ "SHIFTS.ENDSHIFT, " +
+ "((DATE_PART('day', SHIFTS.ENDSHIFT - SHIFTS.STARTSHIFT) * 24 + " +
+ "DATE_PART('hour', SHIFTS.ENDSHIFT - SHIFTS.STARTSHIFT)) * 60 + " +
+ "DATE_PART('minute', SHIFTS.ENDSHIFT - SHIFTS.STARTSHIFT)) * 60 + " +
+ "DATE_PART('second', SHIFTS.ENDSHIFT - SHIFTS.STARTSHIFT) AS TOTAL " +
+ "FROM PEOPLE LEFT JOIN SHIFTS ON SHIFTS.PPLID = PEOPLE.ID " +
+ "WHERE ?(QBF_FILTER) ");
+
+report.addParameter("SHIFTS.STARTSHIFT");
+report.addParameter("SHIFTS.ENDSHIFT");
+report.addParameter("PEOPLE.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/postgresql/dailyschedule.bs b/reports/uk/chromis/postgresql/dailyschedule.bs
new file mode 100644
index 00000000..1d70eaf2
--- /dev/null
+++ b/reports/uk/chromis/postgresql/dailyschedule.bs
@@ -0,0 +1,50 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.DailyScheduleReport");
+report.setReport("/uk/chromis/reports/dailyschedule");
+report.setResourceBundle("uk/chromis/reports/dailyschedule_messages");
+
+report.setSentence("SELECT " +
+ "PEOPLE.NAME, " +
+ "LEAVES.STARTDATE, " +
+ "LEAVES.ENDDATE, " +
+ "CONCAT('',DATEDIFF(LEAVES.ENDDATE, LEAVES.STARTDATE)) AS TOTAL " +
+ "FROM PEOPLE LEFT JOIN LEAVES ON LEAVES.PPLID = PEOPLE.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY LEAVES.STARTDATE DESC ");
+
+report.addParameter("LEAVES.STARTDATE");
+report.addParameter("LEAVES.ENDDATE");
+report.addParameter("LEAVES.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/postgresql/dailyschedule.jrxml b/reports/uk/chromis/postgresql/dailyschedule.jrxml
new file mode 100644
index 00000000..ffe2d6f0
--- /dev/null
+++ b/reports/uk/chromis/postgresql/dailyschedule.jrxml
@@ -0,0 +1,320 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/dailyschedulereport.bs b/reports/uk/chromis/postgresql/dailyschedulereport.bs
new file mode 100644
index 00000000..30c12ed7
--- /dev/null
+++ b/reports/uk/chromis/postgresql/dailyschedulereport.bs
@@ -0,0 +1,56 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Postgresql July 2016
+//
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.DailyScheduleReport");
+report.setReport("/uk/chromis/reports/dailyschedule");
+ report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "PEOPLE.NAME, " +
+ "LEAVES.STARTDATE, " +
+ "LEAVES.ENDDATE, " +
+ "((DATE_PART('day', LEAVES.ENDDATE - LEAVES.STARTDATE) * 24 + " +
+ "DATE_PART('hour', LEAVES.ENDDATE - LEAVES.STARTDATE)) * 60 + " +
+ "DATE_PART('minute', LEAVES.ENDDATE - LEAVES.STARTDATE)) * 60 + " +
+ "DATE_PART('second', LEAVES.ENDDATE - LEAVES.STARTDATE) AS TOTAL " +
+ "FROM PEOPLE LEFT JOIN LEAVES ON LEAVES.PPLID = PEOPLE.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY LEAVES.STARTDATE DESC ");
+
+report.addParameter("LEAVES.STARTDATE");
+report.addParameter("LEAVES.ENDDATE");
+report.addParameter("PEOPLE.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/postgresql/employeetimesheet.bs b/reports/uk/chromis/postgresql/employeetimesheet.bs
new file mode 100644
index 00000000..05d009e0
--- /dev/null
+++ b/reports/uk/chromis/postgresql/employeetimesheet.bs
@@ -0,0 +1,53 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.EmployeeTimeSheet");
+report.setReport("/uk/chromis/reports/employeetimesheet");
+report.setResourceBundle("uk/chromis/reports/employeetimesheet_messages");
+
+report.setSentence("SELECT " +
+ "PEOPLE.NAME, " +
+ "SHIFTS.STARTSHIFT, " +
+ "SHIFTS.ENDSHIFT, " +
+ "CONCAT('',TIMEDIFF(SHIFTS.ENDSHIFT, SHIFTS.STARTSHIFT)) AS TOTAL " +
+ "FROM PEOPLE LEFT JOIN SHIFTS ON SHIFTS.PPLID = PEOPLE.ID " +
+ "WHERE ?(QBF_FILTER) ORDER BY PEOPLE.NAME ASC, SHIFTS.ENDSHIFT ASC");
+
+report.addParameter("SHIFTS.STARTSHIFT");
+report.addParameter("SHIFTS.ENDSHIFT");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDSHIFT", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/postgresql/employeetimesheet.jrxml b/reports/uk/chromis/postgresql/employeetimesheet.jrxml
new file mode 100644
index 00000000..fd429f37
--- /dev/null
+++ b/reports/uk/chromis/postgresql/employeetimesheet.jrxml
@@ -0,0 +1,276 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/extendedcashregisterlog.bs b/reports/uk/chromis/postgresql/extendedcashregisterlog.bs
new file mode 100644
index 00000000..8bb54eef
--- /dev/null
+++ b/reports/uk/chromis/postgresql/extendedcashregisterlog.bs
@@ -0,0 +1,59 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ExtendedCashRegisterLog");
+report.setReport("/uk/chromis/reports/extendedcashregisterlog");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "TICKETS.TICKETID AS TICKET_NO, " +
+ "RECEIPTS.DATENEW AS TICKET_DATE, " +
+ "PAYMENTS.TOTAL AS MONEY, " +
+ "CUSTOMERS.NAME AS CUSTOMER, " +
+ "PAYMENTS.PAYMENT AS PAYMENT " +
+ "FROM RECEIPTS " +
+ "LEFT JOIN TICKETS ON RECEIPTS.ID = TICKETS.ID " +
+ "LEFT JOIN PAYMENTS ON RECEIPTS.ID = PAYMENTS.RECEIPT " +
+ "LEFT JOIN CUSTOMERS ON TICKETS.CUSTOMER = CUSTOMERS.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY RECEIPTS.DATENEW");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("TICKET_NO", uk.chromis.data.loader.Datas.STRING);
+report.addField("TICKET_DATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("MONEY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CUSTOMER", uk.chromis.data.loader.Datas.STRING);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+
+return report;
diff --git a/reports/uk/chromis/postgresql/extendedcashregisterlog.jrxml b/reports/uk/chromis/postgresql/extendedcashregisterlog.jrxml
new file mode 100644
index 00000000..40a5d3d5
--- /dev/null
+++ b/reports/uk/chromis/postgresql/extendedcashregisterlog.jrxml
@@ -0,0 +1,334 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/extproducts.bs b/reports/uk/chromis/postgresql/extproducts.bs
new file mode 100644
index 00000000..86975f94
--- /dev/null
+++ b/reports/uk/chromis/postgresql/extproducts.bs
@@ -0,0 +1,77 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ExtendedByProducts");
+report.setReport("/uk/chromis/reports/extproducts");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CUSTOMERS.TAXID, " +
+ "CUSTOMERS.NAME AS CUSTOMER, " +
+ "CATEGORIES.NAME AS CATEGORY, " +
+ "PRODUCTS.REFERENCE AS REFERENCE, " +
+ "PRODUCTS.NAME AS PRODUCT, " +
+ "SUM(TICKETLINES.UNITS) AS UNIT, " +
+ "SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL " +
+ "FROM TICKETS " +
+ "LEFT OUTER JOIN CUSTOMERS ON TICKETS.CUSTOMER = CUSTOMERS.ID, TICKETLINES " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID, RECEIPTS " +
+ "WHERE RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY CUSTOMERS.TAXID, CUSTOMERS.NAME, CATEGORIES.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME " +
+ "ORDER BY CUSTOMERS.NAME, CATEGORIES.NAME, PRODUCTS.NAME");
+
+paramdates = new uk.chromis.pos.ticket.ProductFilterReportWithDates();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(paramdates);
+
+report.addParameter("CUSTOMERS.ID");
+report.addParameter("CUSTOMERS.NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer(true));
+
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("CUSTOMER", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRODUCT", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNIT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
+
diff --git a/reports/uk/chromis/postgresql/extproducts.jrxml b/reports/uk/chromis/postgresql/extproducts.jrxml
new file mode 100644
index 00000000..5eaa5b25
--- /dev/null
+++ b/reports/uk/chromis/postgresql/extproducts.jrxml
@@ -0,0 +1,521 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/invalidcategory.bs b/reports/uk/chromis/postgresql/invalidcategory.bs
new file mode 100644
index 00000000..4558c498
--- /dev/null
+++ b/reports/uk/chromis/postgresql/invalidcategory.bs
@@ -0,0 +1,42 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InvalidCategory");
+report.setReport("/uk/chromis/reports/invalidcategory");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.ROWNUMBER, CSVIMPORT.CSVERROR,"+
+ "CSVIMPORT.CATEGORY FROM CSVIMPORT WHERE (CSVERROR = 'Bad category details')");
+
+
+
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("rownumber", uk.chromis.data.loader.Datas.STRING);
+report.addField("csverror", uk.chromis.data.loader.Datas.STRING);
+report.addField("category", uk.chromis.data.loader.Datas.STRING);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/invalidcategory.jrxml b/reports/uk/chromis/postgresql/invalidcategory.jrxml
new file mode 100644
index 00000000..760b323c
--- /dev/null
+++ b/reports/uk/chromis/postgresql/invalidcategory.jrxml
@@ -0,0 +1,204 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/invaliddata.bs b/reports/uk/chromis/postgresql/invaliddata.bs
new file mode 100644
index 00000000..32d6f21d
--- /dev/null
+++ b/reports/uk/chromis/postgresql/invaliddata.bs
@@ -0,0 +1,45 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InvalidData");
+report.setReport("/uk/chromis/reports/invaliddata");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.ROWNUMBER, CSVIMPORT.CSVERROR"+
+ " FROM CSVIMPORT WHERE (CSVERROR <> 'New product') and "+
+ "(CSVERROR <> 'Updated Price Details') and (CSVERROR <>"+
+ " 'Missing data or Invalid number')");
+
+
+
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("rownumber", uk.chromis.data.loader.Datas.STRING);
+report.addField("csverror", uk.chromis.data.loader.Datas.STRING);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/invaliddata.jrxml b/reports/uk/chromis/postgresql/invaliddata.jrxml
new file mode 100644
index 00000000..5f8dafbc
--- /dev/null
+++ b/reports/uk/chromis/postgresql/invaliddata.jrxml
@@ -0,0 +1,203 @@
+
+
+
+
+
+
+ 'New product') and (CSVERROR <> 'Updated Price Details') and (CSVERROR <> 'Missing data or Invalid number')]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/inventory.bs b/reports/uk/chromis/postgresql/inventory.bs
new file mode 100644
index 00000000..13b99cc6
--- /dev/null
+++ b/reports/uk/chromis/postgresql/inventory.bs
@@ -0,0 +1,79 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Inventory");
+report.setReport("/uk/chromis/reports/inventory");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "STOCKCURRENT.LOCATION AS LOCATIONID, " +
+ "LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME AS PRODUCTNAME, " +
+ "PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(STOCKCURRENT.UNITS) AS UNITS, " +
+ "PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, " +
+ "COALESCE(PRODUCTS.STOCKVOLUME, 0) AS STOCKVOLUME, " +
+ "COALESCE(PRODUCTS.STOCKCOST, 0) AS STOCKCOST, " +
+ "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
+ "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM " +
+ "FROM STOCKCURRENT " +
+ "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
+ "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY STOCKCURRENT.LOCATION, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, PRODUCTS.STOCKVOLUME, PRODUCTS.STOCKCOST, STOCKLEVEL.STOCKSECURITY, STOCKLEVEL.STOCKMAXIMUM " +
+ "ORDER BY STOCKCURRENT.LOCATION, CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat());
+
+
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKVOLUME", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKCOST", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
diff --git a/reports/uk/chromis/postgresql/inventory.jrxml b/reports/uk/chromis/postgresql/inventory.jrxml
new file mode 100644
index 00000000..7ae99de6
--- /dev/null
+++ b/reports/uk/chromis/postgresql/inventory.jrxml
@@ -0,0 +1,703 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue()
+ && $F{UNITS}.doubleValue()<= $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/inventoryb.bs b/reports/uk/chromis/postgresql/inventoryb.bs
new file mode 100644
index 00000000..40283f01
--- /dev/null
+++ b/reports/uk/chromis/postgresql/inventoryb.bs
@@ -0,0 +1,72 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQl July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Inventory2");
+report.setReport("/uk/chromis/reports/inventoryb");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "STOCKCURRENT.LOCATION AS LOCATIONID, " +
+ "LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME AS NAME, " +
+ "PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(STOCKCURRENT.UNITS) AS UNITS, " +
+ "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
+ "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM " +
+ "FROM STOCKCURRENT " +
+ "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
+ "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY STOCKCURRENT.LOCATION, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, STOCKLEVEL.STOCKSECURITY, STOCKLEVEL.STOCKMAXIMUM " +
+ "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME, STOCKCURRENT.LOCATION");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(true, false));
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
+
diff --git a/reports/uk/chromis/postgresql/inventoryb.jrxml b/reports/uk/chromis/postgresql/inventoryb.jrxml
new file mode 100644
index 00000000..1ad4955b
--- /dev/null
+++ b/reports/uk/chromis/postgresql/inventoryb.jrxml
@@ -0,0 +1,392 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue()
+ && $F{UNITS}.doubleValue()<= $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/inventorybroken.bs b/reports/uk/chromis/postgresql/inventorybroken.bs
new file mode 100644
index 00000000..646cb3c3
--- /dev/null
+++ b/reports/uk/chromis/postgresql/inventorybroken.bs
@@ -0,0 +1,73 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InventoryBroken");
+report.setReport("/uk/chromis/reports/inventoryb");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "STOCKCURRENT.LOCATION AS LOCATIONID, " +
+ "LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME AS NAME, " +
+ "PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(STOCKCURRENT.UNITS) AS UNITS, " +
+ "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
+ "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM " +
+ "FROM STOCKCURRENT " +
+ "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
+ "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY STOCKCURRENT.LOCATION, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, STOCKLEVEL.STOCKSECURITY, STOCKLEVEL.STOCKMAXIMUM " +
+ "HAVING STOCKLEVEL.STOCKSECURITY IS NOT NULL AND STOCKLEVEL.STOCKSECURITY >= SUM(STOCKCURRENT.UNITS) " +
+ "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME, STOCKCURRENT.LOCATION");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("LOCATIONS.SITEGUID");
+
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(true, false));
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
+
diff --git a/reports/uk/chromis/postgresql/inventorybroken.jrxml b/reports/uk/chromis/postgresql/inventorybroken.jrxml
new file mode 100644
index 00000000..bc0a3b4c
--- /dev/null
+++ b/reports/uk/chromis/postgresql/inventorybroken.jrxml
@@ -0,0 +1,414 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue()
+ && $F{UNITS}.doubleValue()<= $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/inventorydiff.bs b/reports/uk/chromis/postgresql/inventorydiff.bs
new file mode 100644
index 00000000..4942f75f
--- /dev/null
+++ b/reports/uk/chromis/postgresql/inventorydiff.bs
@@ -0,0 +1,72 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InventoryDiff");
+report.setReport("/uk/chromis/reports/inventorydiff");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "LOCATIONS.ID AS LOCATIONID, LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS <0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSOUT, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS <0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALOUT, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSIN, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALIN, " +
+ "SUM(STOCKDIARY.UNITS) AS UNITSDIFF, " +
+ "SUM(STOCKDIARY.UNITS * STOCKDIARY.PRICE) AS TOTALDIFF " +
+ "FROM STOCKDIARY JOIN LOCATIONS ON STOCKDIARY.LOCATION = LOCATIONS.ID, " +
+ "PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "WHERE PRODUCTS.ID = STOCKDIARY.PRODUCT " +
+ "AND ?(QBF_FILTER) " +
+ "GROUP BY LOCATIONS.ID, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME " +
+ "ORDER BY LOCATIONS.ID, CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("STOCKDIARY.DATENEW");
+report.addParameter("STOCKDIARY.DATENEW");
+report.addParameter("LOCATIONS.SITEGUID");
+report.addParameter("LOCATIONS.ID");
+report.addParameter("STOCKDIARY.REASON");
+
+paramdates = new uk.chromis.pos.reports.JParamsInventory();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITSOUT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALOUT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITSIN", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALIN", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITSDIFF", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALDIFF", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
+
diff --git a/reports/uk/chromis/postgresql/inventorydiff.jrxml b/reports/uk/chromis/postgresql/inventorydiff.jrxml
new file mode 100644
index 00000000..df3a035c
--- /dev/null
+++ b/reports/uk/chromis/postgresql/inventorydiff.jrxml
@@ -0,0 +1,612 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/inventorydiffdetail.bs b/reports/uk/chromis/postgresql/inventorydiffdetail.bs
new file mode 100644
index 00000000..cc2235ee
--- /dev/null
+++ b/reports/uk/chromis/postgresql/inventorydiffdetail.bs
@@ -0,0 +1,77 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InventoryDiffDetail");
+report.setReport("/uk/chromis/reports/inventorydiffdetail");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "LOCATIONS.ID AS LOCATIONID, LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, PRODUCTS.NAME, " +
+ "STOCKDIARY.ATTRIBUTESETINSTANCE_ID, ATTRIBUTESETINSTANCE.DESCRIPTION, " +
+ "PRODUCTS.CATEGORY, CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS <0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSOUT, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS <0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALOUT, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSIN, " +
+ "SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALIN, " +
+ "SUM(STOCKDIARY.UNITS) AS UNITSDIFF, " +
+ "SUM(STOCKDIARY.UNITS * STOCKDIARY.PRICE) AS TOTALDIFF " +
+ "FROM STOCKDIARY " +
+ "JOIN LOCATIONS ON STOCKDIARY.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON PRODUCTS.ID = STOCKDIARY.PRODUCT " +
+ "LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN ATTRIBUTESETINSTANCE ON STOCKDIARY.ATTRIBUTESETINSTANCE_ID = ATTRIBUTESETINSTANCE.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY LOCATIONS.ID, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, STOCKDIARY.ATTRIBUTESETINSTANCE_ID, ATTRIBUTESETINSTANCE.DESCRIPTION " +
+ "ORDER BY LOCATIONS.ID, CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("STOCKDIARY.DATENEW");
+report.addParameter("STOCKDIARY.DATENEW");
+report.addParameter("LOCATIONS.SITEGUID");
+report.addParameter("LOCATIONS.ID");
+report.addParameter("STOCKDIARY.REASON");
+
+paramdates = new uk.chromis.pos.reports.JParamsInventory();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ATTINSTANCEID", uk.chromis.data.loader.Datas.STRING);
+report.addField("ATTINSTANCEDESC", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITSOUT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALOUT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITSIN", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALIN", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("UNITSDIFF", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTALDIFF", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/inventorydiffdetail.jrxml b/reports/uk/chromis/postgresql/inventorydiffdetail.jrxml
new file mode 100644
index 00000000..316acf2c
--- /dev/null
+++ b/reports/uk/chromis/postgresql/inventorydiffdetail.jrxml
@@ -0,0 +1,641 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/inventorylistdetail.bs b/reports/uk/chromis/postgresql/inventorylistdetail.bs
new file mode 100644
index 00000000..38b1fab7
--- /dev/null
+++ b/reports/uk/chromis/postgresql/inventorylistdetail.bs
@@ -0,0 +1,74 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// Derby July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InventoryListDetail");
+report.setReport("/uk/chromis/reports/inventorylistdetail");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "STOCKCURRENT.LOCATION AS LOCATIONID, " +
+ "LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME AS NAME, " +
+ "STOCKCURRENT.ATTRIBUTESETINSTANCE_ID, " +
+ "ATTRIBUTESETINSTANCE.DESCRIPTION, " +
+ "PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME AS CATEGORYNAME, " +
+ "STOCKCURRENT.UNITS, " +
+ "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
+ "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM " +
+ "FROM STOCKCURRENT " +
+ "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
+ "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
+ "LEFT OUTER JOIN ATTRIBUTESETINSTANCE ON STOCKCURRENT.ATTRIBUTESETINSTANCE_ID = ATTRIBUTESETINSTANCE.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME, STOCKCURRENT.LOCATION");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(true, false));
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("ATTINSTANCEID", uk.chromis.data.loader.Datas.STRING);
+report.addField("ATTINSTANCEDESC", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/inventorylistdetail.jrxml b/reports/uk/chromis/postgresql/inventorylistdetail.jrxml
new file mode 100644
index 00000000..92e3c3eb
--- /dev/null
+++ b/reports/uk/chromis/postgresql/inventorylistdetail.jrxml
@@ -0,0 +1,436 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue()
+? uk.chromis.format.Formats.DOUBLE.formatValue($V{UNITSTOTALWAREHOUSE})
+: ""]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue()
+ && $V{UNITSTOTALWAREHOUSE}.doubleValue()<= $F{STOCKMAXIMUM}.doubleValue()
+? uk.chromis.format.Formats.DOUBLE.formatValue($V{UNITSTOTALWAREHOUSE})
+: ""]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/inventoryreorder.bs b/reports/uk/chromis/postgresql/inventoryreorder.bs
new file mode 100644
index 00000000..5acf2fd3
--- /dev/null
+++ b/reports/uk/chromis/postgresql/inventoryreorder.bs
@@ -0,0 +1,77 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.InventoryReOrder");
+report.setReport("/uk/chromis/reports/inventoryreorder");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "STOCKCURRENT.LOCATION AS LOCATIONID, " +
+ "LOCATIONS.NAME AS LOCATIONNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME AS PRODUCTNAME, " +
+ "PRODUCTS.CATEGORY, " +
+ "CATEGORIES.NAME AS CATEGORYNAME, " +
+ "SUM(STOCKCURRENT.UNITS) AS UNITS, " +
+ "PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, " +
+ "COALESCE(PRODUCTS.STOCKVOLUME, 0) AS STOCKVOLUME, " +
+ "COALESCE(PRODUCTS.STOCKCOST, 0) AS STOCKCOST, " +
+ "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
+ "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM " +
+ "FROM STOCKCURRENT " +
+ "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
+ "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
+ "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
+ "WHERE ( UNITS < STOCKLEVEL.STOCKSECURITY ) AND ?(QBF_FILTER) " +
+ "GROUP BY STOCKCURRENT.LOCATION, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, PRODUCTS.STOCKVOLUME, PRODUCTS.STOCKCOST, STOCKLEVEL.STOCKSECURITY, STOCKLEVEL.STOCKMAXIMUM " +
+ "ORDER BY STOCKCURRENT.LOCATION, CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("LOCATIONS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat());
+
+report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
+report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKVOLUME", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKCOST", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
diff --git a/reports/uk/chromis/postgresql/inventoryreorder.jrxml b/reports/uk/chromis/postgresql/inventoryreorder.jrxml
new file mode 100644
index 00000000..799e46ea
--- /dev/null
+++ b/reports/uk/chromis/postgresql/inventoryreorder.jrxml
@@ -0,0 +1,662 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = 0.00) ? uk.chromis.format.Formats.DOUBLE.formatValue($F{UNITS}) : ""]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = 0.00) ? uk.chromis.format.Formats.CURRENCY.formatValue($F{UNITS} * $F{PRICEBUY}):""]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = 0.00) ?uk.chromis.format.Formats.CURRENCY.formatValue( $F{UNITS} *$F{PRICESELL}):""]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/inventoryreorderorig.jrxml b/reports/uk/chromis/postgresql/inventoryreorderorig.jrxml
new file mode 100644
index 00000000..6fa1f45c
--- /dev/null
+++ b/reports/uk/chromis/postgresql/inventoryreorderorig.jrxml
@@ -0,0 +1,710 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ = $F{STOCKSECURITY}.doubleValue()
+ && $F{UNITS}.doubleValue()<= $F{STOCKMAXIMUM}.doubleValue())]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/missingdata.bs b/reports/uk/chromis/postgresql/missingdata.bs
new file mode 100644
index 00000000..e82dad83
--- /dev/null
+++ b/reports/uk/chromis/postgresql/missingdata.bs
@@ -0,0 +1,45 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.MissingData");
+report.setReport("/uk/chromis/reports/missingdata");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT CSVIMPORT.ROWNUMBER, CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.PRICEBUY, CSVIMPORT.PRICESELL"+
+ " FROM CSVIMPORT WHERE CSVIMPORT.CSVERROR='Missing data or Invalid number'");
+
+
+
+report.addField("rownumber", uk.chromis.data.loader.Datas.STRING);
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("pricebuy", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("pricesell", uk.chromis.data.loader.Datas.DOUBLE);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/missingdata.jrxml b/reports/uk/chromis/postgresql/missingdata.jrxml
new file mode 100644
index 00000000..f9b3c3cf
--- /dev/null
+++ b/reports/uk/chromis/postgresql/missingdata.jrxml
@@ -0,0 +1,218 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/newproducts.bs b/reports/uk/chromis/postgresql/newproducts.bs
new file mode 100644
index 00000000..fc2270a6
--- /dev/null
+++ b/reports/uk/chromis/postgresql/newproducts.bs
@@ -0,0 +1,45 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.NewProducts");
+report.setReport("/uk/chromis/reports/newproducts");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.PRICEBUY, CSVIMPORT.PRICESELL,"+
+ "CSVIMPORT.CATEGORY FROM CSVIMPORT WHERE CSVIMPORT.CSVERROR='New product'");
+
+
+
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("pricebuy", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("pricesell", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("category",uk.chromis.data.loader.Datas.STRING);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/newproducts.jrxml b/reports/uk/chromis/postgresql/newproducts.jrxml
new file mode 100644
index 00000000..4382ad2d
--- /dev/null
+++ b/reports/uk/chromis/postgresql/newproducts.jrxml
@@ -0,0 +1,218 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/newproducts_1.jrxml b/reports/uk/chromis/postgresql/newproducts_1.jrxml
new file mode 100644
index 00000000..4382ad2d
--- /dev/null
+++ b/reports/uk/chromis/postgresql/newproducts_1.jrxml
@@ -0,0 +1,218 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/paymentreport.bs b/reports/uk/chromis/postgresql/paymentreport.bs
new file mode 100644
index 00000000..6d4e96a7
--- /dev/null
+++ b/reports/uk/chromis/postgresql/paymentreport.bs
@@ -0,0 +1,50 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.PaymentReport");
+report.setReport("/uk/chromis/reports/paymentreport");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT RECEIPTS.DATENEW,PAYMENTS.PAYMENT, PAYMENTS.NOTES, PAYMENTS.TOTAL "+
+"FROM PAYMENTS,RECEIPTS "+
+"WHERE PAYMENTS.RECEIPT = RECEIPTS.ID AND ?(QBF_FILTER) "+
+"ORDER BY RECEIPTS.DATENEW");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("NOTES", uk.chromis.data.loader.Datas.STRING);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
diff --git a/reports/uk/chromis/postgresql/paymentreport.jrxml b/reports/uk/chromis/postgresql/paymentreport.jrxml
new file mode 100644
index 00000000..72fa3902
--- /dev/null
+++ b/reports/uk/chromis/postgresql/paymentreport.jrxml
@@ -0,0 +1,315 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/people.bs b/reports/uk/chromis/postgresql/people.bs
new file mode 100644
index 00000000..28332c3e
--- /dev/null
+++ b/reports/uk/chromis/postgresql/people.bs
@@ -0,0 +1,38 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.UsersReport");
+report.setReport("/uk/chromis/reports/people");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PEOPLE.ID, PEOPLE.NAME, PEOPLE.CARD, ROLES.NAME AS ROLE, PEOPLE.IMAGE " +
+ "FROM PEOPLE, ROLES WHERE PEOPLE.ROLE = ROLES.ID AND PEOPLE.VISIBLE = " + app.getSession().DB.TRUE());
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CARD", uk.chromis.data.loader.Datas.STRING);
+report.addField("ROLE", uk.chromis.data.loader.Datas.STRING);
+report.addField("IMAGE", uk.chromis.data.loader.Datas.IMAGE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/people.jrxml b/reports/uk/chromis/postgresql/people.jrxml
new file mode 100644
index 00000000..7c2fd334
--- /dev/null
+++ b/reports/uk/chromis/postgresql/people.jrxml
@@ -0,0 +1,199 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/performancereport.bs b/reports/uk/chromis/postgresql/performancereport.bs
new file mode 100644
index 00000000..e38a3863
--- /dev/null
+++ b/reports/uk/chromis/postgresql/performancereport.bs
@@ -0,0 +1,48 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.PerformanceReport");
+report.setReport("/uk/chromis/reports/performancereport");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PEOPLE.NAME, MIN(RECEIPTS.DATENEW) AS STARTDATE, MAX(RECEIPTS.DATENEW) AS ENDDATE, SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL " +
+ "FROM PEOPLE, RECEIPTS, TICKETS, TICKETLINES WHERE PEOPLE.ID = TICKETS.PERSON AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY PEOPLE.NAME ORDER BY PEOPLE.NAME");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("PEOPLE.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
diff --git a/reports/uk/chromis/postgresql/performancereport.jrxml b/reports/uk/chromis/postgresql/performancereport.jrxml
new file mode 100644
index 00000000..8c3427bc
--- /dev/null
+++ b/reports/uk/chromis/postgresql/performancereport.jrxml
@@ -0,0 +1,356 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/piesalescat.bs b/reports/uk/chromis/postgresql/piesalescat.bs
new file mode 100644
index 00000000..0249c29e
--- /dev/null
+++ b/reports/uk/chromis/postgresql/piesalescat.bs
@@ -0,0 +1,58 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.CategoryProductSalesChart");
+report.setReport("/uk/chromis/reports/piesalescat");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT "+
+ "CATEGORIES.NAME AS CAT, " +
+ "SUM(TICKETLINES.UNITS) AS UNITS, " +
+ "SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) AS TOTAL " +
+ "FROM TICKETLINES " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN TICKETS ON TICKETLINES.TICKET = TICKETS.ID " +
+ "LEFT OUTER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID " +
+ "WHERE LENGTH(CATEGORIES.NAME) > 1 AND ?(QBF_FILTER) " +
+ "GROUP BY CATEGORIES.ID, CATEGORIES.NAME "+
+ "ORDER BY CATEGORIES.NAME ASC");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("CAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
diff --git a/reports/uk/chromis/postgresql/piesalescat.jrxml b/reports/uk/chromis/postgresql/piesalescat.jrxml
new file mode 100644
index 00000000..8eb00d39
--- /dev/null
+++ b/reports/uk/chromis/postgresql/piesalescat.jrxml
@@ -0,0 +1,290 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ '1'
+GROUP BY
+ CATEGORIES.ID
+ORDER BY
+ CATEGORIES.NAME ASC]]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/productlabels.bs b/reports/uk/chromis/postgresql/productlabels.bs
new file mode 100644
index 00000000..a333c156
--- /dev/null
+++ b/reports/uk/chromis/postgresql/productlabels.bs
@@ -0,0 +1,60 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ProductLabels");
+report.setReport("/uk/chromis/reports/productlabels");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, PRODUCTS.CODETYPE, PRODUCTS.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, TC.ID AS TAXCAT, TC.NAME AS TAXCATNAME, CATEGORIES.ID AS CATEGORY, CATEGORIES.NAME AS CATEGORYNAME " +
+ "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON PRODUCTS.TAXCAT = TC.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(false, false));
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODETYPE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/postgresql/productlabels.jrxml b/reports/uk/chromis/postgresql/productlabels.jrxml
new file mode 100644
index 00000000..c3d2f27c
--- /dev/null
+++ b/reports/uk/chromis/postgresql/productlabels.jrxml
@@ -0,0 +1,264 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/products.bs b/reports/uk/chromis/postgresql/products.bs
new file mode 100644
index 00000000..fa043244
--- /dev/null
+++ b/reports/uk/chromis/postgresql/products.bs
@@ -0,0 +1,58 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Catalog");
+report.setReport("/uk/chromis/reports/products");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, PRODUCTS.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, TC.ID AS TAXCAT, TC.NAME AS TAXCATNAME, CATEGORIES.ID AS CATEGORY, CATEGORIES.NAME AS CATEGORYNAME " +
+ "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON PRODUCTS.TAXCAT = TC.ID " +
+ "WHERE PRODUCTS.ISCATALOG = TRUE AND ?(QBF_FILTER)" +
+ "ORDER BY CATEGORIES.NAME, PRODUCTS.CATORDER, PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(false, false));
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+
+report;
diff --git a/reports/uk/chromis/postgresql/products.jrxml b/reports/uk/chromis/postgresql/products.jrxml
new file mode 100644
index 00000000..1f194c05
--- /dev/null
+++ b/reports/uk/chromis/postgresql/products.jrxml
@@ -0,0 +1,344 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/productsales.bs b/reports/uk/chromis/postgresql/productsales.bs
new file mode 100644
index 00000000..d3f0435b
--- /dev/null
+++ b/reports/uk/chromis/postgresql/productsales.bs
@@ -0,0 +1,64 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ProductSales");
+report.setReport("/uk/chromis/reports/productsales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+ "SELECT " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "SUM(TICKETLINES.UNITS) AS UNITS, " +
+ "SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL " +
+ "FROM RECEIPTS, TICKETS, TICKETLINES, PRODUCTS " +
+ "WHERE RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND TICKETLINES.PRODUCT = PRODUCTS.ID AND ?(QBF_FILTER) " +
+ "GROUP BY PRODUCTS.REFERENCE, PRODUCTS.NAME " +
+ "ORDER BY PRODUCTS.NAME");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReport());
+
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
+
diff --git a/reports/uk/chromis/postgresql/productsales.jrxml b/reports/uk/chromis/postgresql/productsales.jrxml
new file mode 100644
index 00000000..5aec2263
--- /dev/null
+++ b/reports/uk/chromis/postgresql/productsales.jrxml
@@ -0,0 +1,233 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/productsalesprofit.bs b/reports/uk/chromis/postgresql/productsalesprofit.bs
new file mode 100644
index 00000000..351623d4
--- /dev/null
+++ b/reports/uk/chromis/postgresql/productsalesprofit.bs
@@ -0,0 +1,82 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.SalesProfit");
+report.setReport("/uk/chromis/reports/productsalesprofit");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, " +
+ "SUM(TICKETLINES.UNITS) AS SOLD_UNITS, " +
+ "SUM(TICKETLINES.UNITS * PRODUCTS.PRICEBUY) AS COST_VALUE, " +
+ "SUM(TICKETLINES.UNITS * PRODUCTS.PRICESELL) AS EXPECTED_SALES_VALUE, " +
+ "SUM(TICKETLINES.PRICE) AS ACTUAL_SALES_VALUE, " +
+ "SUM(TICKETLINES.UNITS * PRODUCTS.PRICESELL) " +
+ "- SUM(TICKETLINES.UNITS * PRODUCTS.PRICEBUY) " +
+ "AS EXPECTED_PROFIT, " +
+ "SUM(TICKETLINES.PRICE) - SUM(TICKETLINES.UNITS * PRODUCTS.PRICEBUY) " +
+ "AS ACTUAL_PROFIT " +
+ "FROM (TICKETLINES TICKETLINES " +
+ "INNER JOIN RECEIPTS RECEIPTS " +
+ "ON (TICKETLINES.TICKET = RECEIPTS.ID)) " +
+ "LEFT OUTER JOIN PRODUCTS PRODUCTS " +
+ "ON (TICKETLINES.PRODUCT = PRODUCTS.ID) " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY TICKETLINES.PRODUCT, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL " +
+ "ORDER BY PRODUCTS.REFERENCE ASC");
+
+
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SOLD_UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("COST_VALUE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("EXPECTED_SALES_VALUE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("ACTUAL_SALES_VALUE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("EXPECTED_PROFIT", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("ACTUAL_PROFIT", uk.chromis.data.loader.Datas.DOUBLE);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/productsalesprofit.jrxml b/reports/uk/chromis/postgresql/productsalesprofit.jrxml
new file mode 100644
index 00000000..bf2fd380
--- /dev/null
+++ b/reports/uk/chromis/postgresql/productsalesprofit.jrxml
@@ -0,0 +1,393 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/productscatalog.bs b/reports/uk/chromis/postgresql/productscatalog.bs
new file mode 100644
index 00000000..d5f93186
--- /dev/null
+++ b/reports/uk/chromis/postgresql/productscatalog.bs
@@ -0,0 +1,57 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Products");
+report.setReport("/uk/chromis/reports/productscatalog");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, PRODUCTS.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, TC.ID AS TAXCAT, TC.NAME AS TAXCATNAME, CATEGORIES.ID AS CATEGORY, CATEGORIES.NAME AS CATEGORYNAME " +
+ "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON PRODUCTS.TAXCAT = TC.ID " +
+ "WHERE ?(QBF_FILTER) " +
+ "ORDER BY LOWER (PRODUCTS.NAME)");
+
+report.addParameter("CATEGORIES.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReport());
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/postgresql/productscatalog.jrxml b/reports/uk/chromis/postgresql/productscatalog.jrxml
new file mode 100644
index 00000000..01879f71
--- /dev/null
+++ b/reports/uk/chromis/postgresql/productscatalog.jrxml
@@ -0,0 +1,315 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/salebycustomer.bs b/reports/uk/chromis/postgresql/salebycustomer.bs
new file mode 100644
index 00000000..cdf492a0
--- /dev/null
+++ b/reports/uk/chromis/postgresql/salebycustomer.bs
@@ -0,0 +1,66 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.SalesByCustomer");
+report.setReport("/uk/chromis/reports/salebycustomer");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CUSTOMERS.NAME AS CNAME, " +
+ "RECEIPTS.DATENEW, " +
+ "TICKETS.TICKETID, " +
+ "PRODUCTS.NAME AS PNAME, " +
+ "TICKETS.TICKETTYPE, " +
+ "SUM(TICKETLINES.UNITS) AS UNITS, " +
+ "SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL " +
+ "FROM RECEIPTS, CUSTOMERS, TICKETS, TICKETLINES LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "WHERE CUSTOMERS.ID = TICKETS.CUSTOMER AND TICKETLINES.PRODUCT = PRODUCTS.ID AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY CUSTOMERS.NAME, RECEIPTS.DATENEW, TICKETS.TICKETID, PRODUCTS.NAME, TICKETS.TICKETTYPE " +
+ "ORDER BY CUSTOMERS.NAME, PRODUCTS.NAME, RECEIPTS.DATENEW");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addParameter("CUSTOMERS.ID");
+report.addParameter("CUSTOMERS.NAME");
+report.addParameter("CUSTOMERS.SITEGUID");
+report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
+
+report.addField("CNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TICKETID", uk.chromis.data.loader.Datas.STRING);
+report.addField("PNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("TICKETTYPE", uk.chromis.data.loader.Datas.INT);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/salebycustomer.jrxml b/reports/uk/chromis/postgresql/salebycustomer.jrxml
new file mode 100644
index 00000000..cbbbc704
--- /dev/null
+++ b/reports/uk/chromis/postgresql/salebycustomer.jrxml
@@ -0,0 +1,459 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/salecatalog.bs b/reports/uk/chromis/postgresql/salecatalog.bs
new file mode 100644
index 00000000..da33b274
--- /dev/null
+++ b/reports/uk/chromis/postgresql/salecatalog.bs
@@ -0,0 +1,63 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQl July 2016
+//
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.SaleCatalog");
+report.setReport("/uk/chromis/reports/salecatalog");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+"SELECT " +
+" PRODUCTS.ID, " +
+" PRODUCTS.REFERENCE, " +
+" PRODUCTS.CODE, " +
+" PRODUCTS.NAME, " +
+" PRODUCTS.PRICESELL, " +
+" PRODUCTS.IMAGE, " +
+" TC.ID AS TAXCAT, " +
+" CATEGORIES.NAME AS CATEGORYNAME " +
+"FROM " +
+" PRODUCTS LEFT OUTER JOIN CATEGORIES ON " +
+" PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON " +
+" PRODUCTS.TAXCAT = TC.ID " +
+"WHERE PRODUCTS.ISCATALOG = TRUE AND ?(QBF_FILTER) " +
+"ORDER BY CATEGORIES.NAME, PRODUCTS.NAME");
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReport());
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("IMAGE", uk.chromis.data.loader.Datas.IMAGE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/postgresql/salecatalog.jrxml b/reports/uk/chromis/postgresql/salecatalog.jrxml
new file mode 100644
index 00000000..ab73d2d9
--- /dev/null
+++ b/reports/uk/chromis/postgresql/salecatalog.jrxml
@@ -0,0 +1,220 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/saletaxes.bs b/reports/uk/chromis/postgresql/saletaxes.bs
new file mode 100644
index 00000000..21c0bd7b
--- /dev/null
+++ b/reports/uk/chromis/postgresql/saletaxes.bs
@@ -0,0 +1,58 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+// added by g.irura @ 27/03/2010. If a retailer issues item which is
+// taxable but gets back a refund, means when this happens, the tax
+// effected initially is deducted. all taxes occur in taxlines.amount
+// where the sum is obtained. It is therefore important to show on this
+// report the taxes that were charged on a receipt but later refunded
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.SaleTaxes");
+report.setReport("/uk/chromis/reports/saletaxes");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+ "SELECT TICKETS.TICKETID, RECEIPTS.DATENEW, PAYMENTS.PAYMENT, TAXCATEGORIES.NAME, TAXLINES.AMOUNT "+
+"FROM RECEIPTS, TAXLINES, TAXES, TAXCATEGORIES,TICKETS, PAYMENTS " +
+ "WHERE PAYMENTS.RECEIPT = RECEIPTS.ID AND RECEIPTS.ID = TAXLINES.RECEIPT AND RECEIPTS.ID=TICKETS.ID AND TAXLINES.TAXID = TAXES.ID AND TAXES.CATEGORY = TAXCATEGORIES.ID AND ?(QBF_FILTER) "+
+ "ORDER BY RECEIPTS.DATENEW");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("TICKETID", uk.chromis.data.loader.Datas.INT);
+report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("AMOUNT", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/saletaxes.jrxml b/reports/uk/chromis/postgresql/saletaxes.jrxml
new file mode 100644
index 00000000..c91900a9
--- /dev/null
+++ b/reports/uk/chromis/postgresql/saletaxes.jrxml
@@ -0,0 +1,339 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/saletaxesold.jrxml b/reports/uk/chromis/postgresql/saletaxesold.jrxml
new file mode 100644
index 00000000..aa7f768a
--- /dev/null
+++ b/reports/uk/chromis/postgresql/saletaxesold.jrxml
@@ -0,0 +1,390 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/shelfedgelabels.bs b/reports/uk/chromis/postgresql/shelfedgelabels.bs
new file mode 100644
index 00000000..067cd86b
--- /dev/null
+++ b/reports/uk/chromis/postgresql/shelfedgelabels.bs
@@ -0,0 +1,61 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.BarcodeSheet");
+report.setReport("/uk/chromis/reports/shelfedgelabels");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, PRODUCTS.CODETYPE, PRODUCTS.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, TC.ID AS TAXCAT, TC.NAME AS TAXCATNAME, CATEGORIES.ID AS CATEGORY, CATEGORIES.NAME AS CATEGORYNAME " +
+ "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON PRODUCTS.TAXCAT = TC.ID " +
+ "WHERE PRODUCTS.CODETYPE IS NOT NULL AND ?(QBF_FILTER) " +
+ "ORDER BY PRODUCTS.NAME");
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.ISCATALOG");
+report.addParameter("STOCKCURRENT.LOCATION");
+report.addParameter("UNITS");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReportWithCat(false, false));
+
+report.addField("ID", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CODETYPE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
+report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
+
+report;
+
diff --git a/reports/uk/chromis/postgresql/shelfedgelabels.jrxml b/reports/uk/chromis/postgresql/shelfedgelabels.jrxml
new file mode 100644
index 00000000..9c910c13
--- /dev/null
+++ b/reports/uk/chromis/postgresql/shelfedgelabels.jrxml
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/stockchanges.bs b/reports/uk/chromis/postgresql/stockchanges.bs
new file mode 100644
index 00000000..5764eaca
--- /dev/null
+++ b/reports/uk/chromis/postgresql/stockchanges.bs
@@ -0,0 +1,79 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL version
+//
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.StockChanges");
+report.setReport("/uk/chromis/reports/stockchanges");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT L.NAME AS LOCATION, C.USERNAME AS USERNAME,"+
+" C.UPLOADTIME AS UPLOADTIME,"+
+" CASE WHEN P.NAME is null THEN '***NEW PRODUCT' ELSE P.NAME END "+
+" AS PRODUCT, P.REFERENCE AS REFERENCE,"+
+" CASE C.CHANGETYPE"+
+" WHEN 1 THEN 'Adjust'"+
+" WHEN 2 THEN 'Change'"+
+" WHEN 3 THEN 'Change'"+
+" WHEN 4 THEN 'New Value'"+
+" WHEN 5 THEN 'New Value'"+
+" WHEN 6 THEN 'New Record'"+
+" ELSE 'Unknown'"+
+" END AS CHANGETYPE,"+
+" C.FIELD AS FIELD, C.TEXTVALUE AS TEXTVALUE,"+
+" CASE C.CHANGES_PROCESSED"+
+" WHEN 0 THEN 'ACCEPT'"+
+" WHEN 1 THEN 'REJECT'"+
+" WHEN 2 THEN 'PROCESSED'"+
+" ELSE 'Unknown'"+
+" END AS CHANGES_PROCESSED, "+
+" P.NAME, P.CATEGORY, P.CODE "+
+" FROM STOCKCHANGES C"+
+" LEFT JOIN PRODUCTS P ON C.PRODUCTID = P.ID"+
+" LEFT JOIN LOCATIONS L ON C.LOCATION = L.ID "+
+" WHERE ?(QBF_FILTER) ");
+
+report.addParameter("UPLOADTIME");
+report.addParameter("UPLOADTIME");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addParameter("P.NAME");
+report.addParameter("P.CATEGORY");
+report.addParameter("P.CODE");
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter1());
+
+report.addField("LOCATION", uk.chromis.data.loader.Datas.STRING);
+report.addField("USERNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UPLOADTIME", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("PRODUCT", uk.chromis.data.loader.Datas.STRING);
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CHANGETYPE", uk.chromis.data.loader.Datas.STRING);
+report.addField("FIELD", uk.chromis.data.loader.Datas.STRING);
+report.addField("TEXTVALUE", uk.chromis.data.loader.Datas.STRING);
+report.addField("CHANGES_PROCESSED", uk.chromis.data.loader.Datas.STRING);
+
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/stockchanges.jrxml b/reports/uk/chromis/postgresql/stockchanges.jrxml
new file mode 100644
index 00000000..0e04f5d0
--- /dev/null
+++ b/reports/uk/chromis/postgresql/stockchanges.jrxml
@@ -0,0 +1,213 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/taxcatsales.bs b/reports/uk/chromis/postgresql/taxcatsales.bs
new file mode 100644
index 00000000..319aa543
--- /dev/null
+++ b/reports/uk/chromis/postgresql/taxcatsales.bs
@@ -0,0 +1,70 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.TaxCatSales");
+report.setReport("/uk/chromis/reports/taxcatsales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.MONEY, " +
+ "CLOSEDCASH.DATEEND, " +
+ "TAXES.NAME AS TAXNAME, CATEGORIES.NAME, " +
+ "SUM(TICKETLINES.UNITS) AS QTY, " +
+ "SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) AS CATPRICE, " +
+ "SUM((TICKETLINES.PRICE * TAXES.RATE ) * TICKETLINES.UNITS) AS CATTAX, " +
+ "SUM((TICKETLINES.PRICE + TICKETLINES.PRICE * TAXES.RATE ) * TICKETLINES.UNITS) AS CATTOTAL " +
+ "FROM CLOSEDCASH, TAXES, TICKETLINES " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
+ "LEFT OUTER JOIN TICKETS ON TICKETS.ID = TICKETLINES.TICKET " +
+ "LEFT OUTER JOIN RECEIPTS ON RECEIPTS.ID = TICKETS.ID " +
+ "WHERE PRODUCTS.ISCATALOG = TRUE AND CLOSEDCASH.MONEY = RECEIPTS.MONEY " +
+ "AND TICKETLINES.TAXID = TAXES.ID " +
+ "AND ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.MONEY, CLOSEDCASH.DATEEND, TAXES.NAME, CATEGORIES.NAME " +
+ "ORDER BY TAXES.NAME, CATEGORIES.NAME");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
+report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TAXNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("QTY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATPRICE", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATTAX", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("CATTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/taxcatsales.jrxml b/reports/uk/chromis/postgresql/taxcatsales.jrxml
new file mode 100644
index 00000000..6a34ae17
--- /dev/null
+++ b/reports/uk/chromis/postgresql/taxcatsales.jrxml
@@ -0,0 +1,462 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/taxes.bs b/reports/uk/chromis/postgresql/taxes.bs
new file mode 100644
index 00000000..0a1b87c1
--- /dev/null
+++ b/reports/uk/chromis/postgresql/taxes.bs
@@ -0,0 +1,52 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.ReportTaxes");
+report.setReport("/uk/chromis/reports/taxes");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+ "SELECT TAXCATEGORIES.ID AS TAXID, TAXCATEGORIES.NAME AS TAXNAME, SUM(TAXLINES.AMOUNT) AS TOTALTAXES " +
+ "FROM RECEIPTS, TAXLINES, TAXES, TAXCATEGORIES " +
+ "WHERE RECEIPTS.ID = TAXLINES.RECEIPT AND TAXLINES.TAXID = TAXES.ID AND TAXES.CATEGORY = TAXCATEGORIES.ID " +
+ "AND ?(QBF_FILTER) " +
+ "GROUP BY TAXCATEGORIES.ID, TAXCATEGORIES.NAME");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+
+report.addQBFFilter(paramdates);
+
+report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("TOTALTAXES", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
diff --git a/reports/uk/chromis/postgresql/taxes.jrxml b/reports/uk/chromis/postgresql/taxes.jrxml
new file mode 100644
index 00000000..65ebe7c8
--- /dev/null
+++ b/reports/uk/chromis/postgresql/taxes.jrxml
@@ -0,0 +1,299 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/ticketsample.jrxml b/reports/uk/chromis/postgresql/ticketsample.jrxml
new file mode 100644
index 00000000..da797cf5
--- /dev/null
+++ b/reports/uk/chromis/postgresql/ticketsample.jrxml
@@ -0,0 +1,306 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/ticketsample_lines.jrxml b/reports/uk/chromis/postgresql/ticketsample_lines.jrxml
new file mode 100644
index 00000000..85aba46d
--- /dev/null
+++ b/reports/uk/chromis/postgresql/ticketsample_lines.jrxml
@@ -0,0 +1,183 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/timeseriesproduct.bs b/reports/uk/chromis/postgresql/timeseriesproduct.bs
new file mode 100644
index 00000000..97866ee1
--- /dev/null
+++ b/reports/uk/chromis/postgresql/timeseriesproduct.bs
@@ -0,0 +1,90 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.TimeSeriesProduct");
+report.setReport("/uk/chromis/reports/timeseriesproduct");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT " +
+ "CATEGORIES.NAME AS CATNAME, " +
+ "PRODUCTS.NAME AS PRODUCT, " +
+ "PRODUCTS.REFERENCE AS REF, " +
+ "PRODUCTS.CODE AS BARCODE, " +
+ "PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, " +
+ "PRODUCTS.STOCKCOST, " +
+ "PRODUCTS.STOCKVOLUME, " +
+ "TAXCATEGORIES.ID AS TAXCAT, " +
+ "TAXCATEGORIES.NAME AS TAXCATNAME, " +
+ "PEOPLE.NAME AS SELLER, " +
+ "RECEIPTS.DATENEW AS RECEIPTDATE, " +
+ "SUM(TICKETLINES.UNITS) AS TOTALUNIT " +
+ "FROM RECEIPTS LEFT OUTER JOIN TICKETS ON RECEIPTS.ID = TICKETS.ID LEFT OUTER JOIN TICKETLINES ON " +
+ "TICKETS.ID = TICKETLINES.TICKET, PRODUCTS LEFT OUTER JOIN CATEGORIES ON " +
+ "PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES ON PRODUCTS.TAXCAT = TAXCATEGORIES.ID, " +
+ "PEOPLE " +
+ "WHERE PRODUCTS.ID = TICKETLINES.PRODUCT AND PEOPLE.ID = TICKETS.PERSON AND PRODUCTS.ISCATALOG = true AND ?(QBF_FILTER) " +
+ "GROUP BY CATEGORIES.NAME, PRODUCTS.NAME, PRODUCTS.REFERENCE,PRODUCTS.CODE,PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL, PRODUCTS.STOCKCOST,PRODUCTS.STOCKVOLUME, TAXCATEGORIES.ID, TAXCATEGORIES.NAME, PEOPLE.NAME, RECEIPTS.DATENEW " +
+ "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME, RECEIPTS.DATENEW, PEOPLE.NAME");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addParameter("PRODUCTS.NAME");
+report.addParameter("PRODUCTS.PRICEBUY");
+report.addParameter("PRODUCTS.PRICESELL");
+report.addParameter("PRODUCTS.CATEGORY");
+report.addParameter("PRODUCTS.CODE");
+report.addParameter("PRODUCTS.SITEGUID");
+
+report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilterReport());
+
+report.addField("CATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRODUCT", uk.chromis.data.loader.Datas.STRING);
+report.addField("REF", uk.chromis.data.loader.Datas.STRING);
+report.addField("BARCODE", uk.chromis.data.loader.Datas.STRING);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKCOST", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("STOCKVOLUME", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
+report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("SALER", uk.chromis.data.loader.Datas.STRING);
+report.addField("RECEIPTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTALUNIT", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
+
diff --git a/reports/uk/chromis/postgresql/timeseriesproduct.jrxml b/reports/uk/chromis/postgresql/timeseriesproduct.jrxml
new file mode 100644
index 00000000..347cb08f
--- /dev/null
+++ b/reports/uk/chromis/postgresql/timeseriesproduct.jrxml
@@ -0,0 +1,515 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/top10sales.bs b/reports/uk/chromis/postgresql/top10sales.bs
new file mode 100644
index 00000000..e65334bd
--- /dev/null
+++ b/reports/uk/chromis/postgresql/top10sales.bs
@@ -0,0 +1,70 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.Top10Sales");
+report.setReport("/uk/chromis/reports/top10sales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence(
+ "SELECT " +
+ "PRODUCTS.REFERENCE,PRODUCTS.NAME,PRODUCTS.PRICEBUY,PRODUCTS.PRICESELL, " +
+ "SUM(TICKETLINES.UNITS) AS UNITS, " +
+ "SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) AS SUBTOTAL, " +
+ "SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) * TAXES.RATE) As TAXES, " +
+ "SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) + SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) * TAXES.RATE) AS GROSSTOTAL " +
+ "FROM TICKETLINES " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN TICKETS ON TICKETS.ID = TICKETLINES.TICKET " +
+ "LEFT OUTER JOIN RECEIPTS ON RECEIPTS.ID = TICKETS.ID, TAXES " +
+ "WHERE RECEIPTS.ID = TICKETS.ID " +
+ "AND TICKETS.ID = TICKETLINES.TICKET " +
+ "AND TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "AND TICKETLINES.TAXID = TAXES.ID " +
+ "AND ?(QBF_FILTER) " +
+ "GROUP BY PRODUCTS.REFERENCE, PRODUCTS.NAME,PRODUCTS.PRICEBUY,PRODUCTS.PRICESELL " +
+ "ORDER BY GROSSTOTAL DESC " +
+ "FETCH FIRST 10 ROWS ONLY");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("SUBTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("TAXES", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("GROSSTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+report;
+
diff --git a/reports/uk/chromis/postgresql/top10sales.jrxml b/reports/uk/chromis/postgresql/top10sales.jrxml
new file mode 100644
index 00000000..04914e34
--- /dev/null
+++ b/reports/uk/chromis/postgresql/top10sales.jrxml
@@ -0,0 +1,348 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/top10sales1.jrxml b/reports/uk/chromis/postgresql/top10sales1.jrxml
new file mode 100644
index 00000000..b3fe569a
--- /dev/null
+++ b/reports/uk/chromis/postgresql/top10sales1.jrxml
@@ -0,0 +1,348 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/updatedprices.bs b/reports/uk/chromis/postgresql/updatedprices.bs
new file mode 100644
index 00000000..3a615929
--- /dev/null
+++ b/reports/uk/chromis/postgresql/updatedprices.bs
@@ -0,0 +1,43 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.UpdatedPrices");
+report.setReport("/uk/chromis/reports/updatedprices");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
+ "CSVIMPORT.NAME, CSVIMPORT.PRICEBUY,CSVIMPORT.PRICESELL,CSVIMPORT.PREVIOUSBUY,CSVIMPORT.PREVIOUSSELL"+
+ " FROM CSVIMPORT WHERE CSVIMPORT.CSVERROR='Updated Price Details' ");
+
+
+
+report.addField("reference", uk.chromis.data.loader.Datas.STRING);
+report.addField("code", uk.chromis.data.loader.Datas.STRING);
+report.addField("name", uk.chromis.data.loader.Datas.STRING);
+report.addField("pricebuy", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("pricesell", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("previousbuy", uk.chromis.data.loader.Datas.DOUBLE);
+report.addField("previoussell", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
\ No newline at end of file
diff --git a/reports/uk/chromis/postgresql/updatedprices.jrxml b/reports/uk/chromis/postgresql/updatedprices.jrxml
new file mode 100644
index 00000000..e2070122
--- /dev/null
+++ b/reports/uk/chromis/postgresql/updatedprices.jrxml
@@ -0,0 +1,259 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/postgresql/usersales.bs b/reports/uk/chromis/postgresql/usersales.bs
new file mode 100644
index 00000000..4c415b16
--- /dev/null
+++ b/reports/uk/chromis/postgresql/usersales.bs
@@ -0,0 +1,49 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL July 2016
+//
+
+
+report = new uk.chromis.pos.reports.PanelReportBean();
+
+report.setTitleKey("Menu.UserSells");
+report.setReport("/uk/chromis/reports/usersales");
+report.setResourceBundle("uk/chromis/reports/report_messages");
+
+report.setSentence("SELECT PEOPLE.NAME, MIN(RECEIPTS.DATENEW) AS STARTDATE, MAX(RECEIPTS.DATENEW) AS ENDDATE, SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL " +
+ "FROM PEOPLE, RECEIPTS, TICKETS, TICKETLINES WHERE PEOPLE.ID = TICKETS.PERSON AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
+ "GROUP BY PEOPLE.NAME ORDER BY PEOPLE.NAME");
+
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.DATENEW");
+report.addParameter("RECEIPTS.SITEGUID");
+
+paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
+
+paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
+
+report.addQBFFilter(paramdates);
+
+report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
+report.addField("STARTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("ENDDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
+
+report;
diff --git a/reports/uk/chromis/postgresql/usersales.jrxml b/reports/uk/chromis/postgresql/usersales.jrxml
new file mode 100644
index 00000000..cf25dd22
--- /dev/null
+++ b/reports/uk/chromis/postgresql/usersales.jrxml
@@ -0,0 +1,360 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/reports/uk/chromis/reports/badprice.bs b/reports/uk/chromis/reports/badprice.bs
deleted file mode 100644
index 491a8753..00000000
--- a/reports/uk/chromis/reports/badprice.bs
+++ /dev/null
@@ -1,40 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.NewProducts");
-report.setReport("/uk/chromis/reports/newproducts");
-report.setResourceBundle("uk/chromis/reports/newproducts_messages");
-
-report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
- "CSVIMPORT.NAME, CSVIMPORT.PRICEBUY, CSVIMPORT.PRICESELL"+
- " FROM CSVIMPORT WHERE CSVIMPORT.CSVERROR='New product'");
-
-
-
-report.addField("reference", uk.chromis.data.loader.Datas.STRING);
-report.addField("code", uk.chromis.data.loader.Datas.STRING);
-report.addField("name", uk.chromis.data.loader.Datas.STRING);
-report.addField("pricebuy", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("pricesell", uk.chromis.data.loader.Datas.DOUBLE);
-
-
-report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/badprice.jrxml b/reports/uk/chromis/reports/badprice.jrxml
deleted file mode 100644
index 66136415..00000000
--- a/reports/uk/chromis/reports/badprice.jrxml
+++ /dev/null
@@ -1,203 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/badprice_messages.properties b/reports/uk/chromis/reports/badprice_messages.properties
deleted file mode 100644
index fdebfae7..00000000
--- a/reports/uk/chromis/reports/badprice_messages.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=New Products Added
-label.reference=Reference
-label.barcode=Barcode
-label.name=Name
-label.pricebuy=Buy Price
-label.pricesell=Sell Price
-
diff --git a/reports/uk/chromis/reports/barcodesheet.bs b/reports/uk/chromis/reports/barcodesheet.bs
deleted file mode 100644
index cf321398..00000000
--- a/reports/uk/chromis/reports/barcodesheet.bs
+++ /dev/null
@@ -1,43 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.BarcodeSheet");
-report.setReport("/uk/chromis/reports/barcodesheet");
-report.setResourceBundle("uk/chromis/reports/barcodesheet_messages");
-
-report.setSentence("SELECT "
- + "PRODUCTS.CODE, PRODUCTS.CODETYPE, PRODUCTS.NAME, "
- + "CATEGORIES.ID AS CATEGORY, "
- + "CATEGORIES.NAME AS CATEGORYNAME "
- + "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID "
- + "WHERE ?(QBF_FILTER) "
- + "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME");
-
-report.addParameter("PRODUCTS.NAME");
-report.addParameter("PRODUCTS.CATEGORY");
-report.addParameter("PRODUCTS.CODE");
-report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter1());
-
-report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
-report.addField("CODETYPE", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-
-report;
-
diff --git a/reports/uk/chromis/reports/barcodesheet.jrxml b/reports/uk/chromis/reports/barcodesheet.jrxml
deleted file mode 100644
index 2b51480f..00000000
--- a/reports/uk/chromis/reports/barcodesheet.jrxml
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/barcodesheet_messages.properties b/reports/uk/chromis/reports/barcodesheet_messages.properties
deleted file mode 100644
index 9a7c85ac..00000000
--- a/reports/uk/chromis/reports/barcodesheet_messages.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-# Openbravo POS is a point of sales application designed for touch screens.
-# Copyright (C) 2007-2009 Openbravo, S.L.
-# http://sourceforge.net/projects/openbravopos
-#
-# This file is part of Openbravo POS.
-#
-# Openbravo POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Openbravo POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Openbravo POS. If not, see .
-
-label.title=Barcode Sheet
diff --git a/reports/uk/chromis/reports/cashflow.bs b/reports/uk/chromis/reports/cashflow.bs
deleted file mode 100644
index 416ec432..00000000
--- a/reports/uk/chromis/reports/cashflow.bs
+++ /dev/null
@@ -1,46 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.CashFlow");
-report.setReport("/uk/chromis/reports/cashflow");
-report.setResourceBundle("uk/chromis/reports/cashflow_messages");
-
-report.setSentence("SELECT " +
- "PAYMENTS.PAYMENT, " +
- "SUM( PAYMENTS.TOTAL ) AS PAYMENT_TOTAL " +
- "FROM CLOSEDCASH, PAYMENTS, RECEIPTS " +
- "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY " +
- "AND PAYMENTS.RECEIPT = RECEIPTS.ID AND ?(QBF_FILTER) " +
- "GROUP BY PAYMENTS.PAYMENT");
-
-report.addParameter("CLOSEDCASH.DATESTART");
-report.addParameter("CLOSEDCASH.DATESTART");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-
-report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
-report.addField("PAYMENT_TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
-
-return report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/cashflow.jrxml b/reports/uk/chromis/reports/cashflow.jrxml
deleted file mode 100644
index 628730ae..00000000
--- a/reports/uk/chromis/reports/cashflow.jrxml
+++ /dev/null
@@ -1,282 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/cashflow_messages.properties b/reports/uk/chromis/reports/cashflow_messages.properties
deleted file mode 100644
index b1943696..00000000
--- a/reports/uk/chromis/reports/cashflow_messages.properties
+++ /dev/null
@@ -1,42 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Cash-Flow
-label.noreference=
-label.noproduct=(no sales)
-label.printed=Printed
-label.period=Period:
-label.payment=Payment
-label.sum=Amount
-label.total=Grand Total
-
-transpayment.cash=Cash
-transpayment.magcard=Card
-transpayment.cashrefund=Refund
-transpayment.magcardrefund=Card Refund
-transpayment.cheque=Cheque
-transpayment.chequerefund=Cheque Refund
-transpayment.cashin=(in) Cash
-transpayment.cashout=(out) Cash
-transpayment.free=Free
-transpayment.ticket=Ticket
-transpayment.paperin=Note Input
-transpayment.paperout=Note Output
-transpayment.debt=Debt
-transpayment.debtpaid=Debt Paid
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/cashregisterlog.bs b/reports/uk/chromis/reports/cashregisterlog.bs
deleted file mode 100644
index d9c227d9..00000000
--- a/reports/uk/chromis/reports/cashregisterlog.bs
+++ /dev/null
@@ -1,48 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.CashRegisterLog");
-report.setReport("/uk/chromis/reports/cashregisterlog");
-report.setResourceBundle("uk/chromis/reports/cashregisterlog_messages");
-
-report.setSentence("SELECT " +
- "RECEIPTS.DATENEW, " +
- "PAYMENTS.PAYMENT, " +
- "SUM( PAYMENTS.TOTAL ) AS PAYMENT_TOTAL " +
- "FROM RECEIPTS " +
- "LEFT JOIN PAYMENTS ON RECEIPTS.ID = PAYMENTS.RECEIPT " +
- "WHERE ?(QBF_FILTER) " +
- "GROUP BY RECEIPTS.DATENEW, PAYMENTS.PAYMENT");
-
-report.addParameter("RECEIPTS.DATENEW");
-report.addParameter("RECEIPTS.DATENEW");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-
-report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
-report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
-report.addField("PAYMENT_TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
-
-return report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/cashregisterlog.jrxml b/reports/uk/chromis/reports/cashregisterlog.jrxml
deleted file mode 100644
index 29a0d803..00000000
--- a/reports/uk/chromis/reports/cashregisterlog.jrxml
+++ /dev/null
@@ -1,305 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/cashregisterlog_messages.properties b/reports/uk/chromis/reports/cashregisterlog_messages.properties
deleted file mode 100644
index 8bd5616f..00000000
--- a/reports/uk/chromis/reports/cashregisterlog_messages.properties
+++ /dev/null
@@ -1,45 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Transaction Log
-label.noreference=
-label.noproduct=(no sales)
-label.printed=Printed
-label.date=Date
-label.ticket=Ticket no
-label.sum=Sum
-label.customer=Customer
-label.payment=Payment
-label.period=Period:
-label.total=Grand Total
-
-transpayment.cash=Cash
-transpayment.magcard=Card
-transpayment.cashrefund=Refund
-transpayment.magcardrefund=Card Refund
-transpayment.cheque=Cheque
-transpayment.chequerefund=Cheque Refund
-transpayment.cashin=(in) Cash
-transpayment.cashout=(out) Cash
-transpayment.free=Free
-transpayment.ticket=Ticket
-transpayment.paperin=Note Input
-transpayment.paperout=Note Output
-transpayment.debt=Debt
-transpayment.debtpaid=Debt Paid
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/categorysales.bs b/reports/uk/chromis/reports/categorysales.bs
index c70e15f3..50a5166a 100644
--- a/reports/uk/chromis/reports/categorysales.bs
+++ b/reports/uk/chromis/reports/categorysales.bs
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
//
// This file is part of chromis oPOS
//
@@ -15,9 +15,8 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
-
-//
+//
+// PostgreSQL version
report = new uk.chromis.pos.reports.PanelReportBean();
@@ -30,13 +29,13 @@ report.setResourceBundle("uk/chromis/reports/categorysales_messages");
report.setSentence("SELECT CATEGORIES.ID, CATEGORIES.NAME, " +
"SUM(TICKETLINES.UNITS) AS QTY, " +
"SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) AS CATPRICE, " +
-"SUM((PRODUCTS.PRICESELL * TICKETLINES.UNITS)-((PRODUCTS.ISVPRICE ) * (TICKETLINES.PRICE * TICKETLINES.UNITS))) AS DISC, " +
+"SUM((PRODUCTS.PRICESELL * TICKETLINES.UNITS)-((CASE WHEN ISVPRICE = TRUE THEN 1 ELSE 0 END) * (TICKETLINES.PRICE * TICKETLINES.UNITS))) AS DISC, " +
"SUM((TICKETLINES.PRICE * TAXES.RATE)* TICKETLINES.UNITS) AS CATTAX, " +
"SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) + ((TICKETLINES.PRICE * TAXES.RATE)* TICKETLINES.UNITS)) AS CATTOTAL " +
"FROM (TICKETS INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID) INNER JOIN ((CATEGORIES INNER JOIN PRODUCTS ON CATEGORIES.ID = PRODUCTS.CATEGORY) INNER JOIN (TAXES INNER JOIN TICKETLINES ON TAXES.ID = TICKETLINES.TAXID) ON PRODUCTS.ID = TICKETLINES.PRODUCT) ON TICKETS.ID = TICKETLINES.TICKET " +
"WHERE ?(QBF_FILTER) " +
"GROUP BY CATEGORIES.ID, CATEGORIES.NAME " +
-"ORDER BY CATEGORIES.NAME");
+"ORDER BY CATEGORIES.NAME");;
report.addParameter("RECEIPTS.DATENEW");
report.addParameter("RECEIPTS.DATENEW");
diff --git a/reports/uk/chromis/reports/categorysales.jrxml b/reports/uk/chromis/reports/categorysales.jrxml
deleted file mode 100644
index bb07fa5c..00000000
--- a/reports/uk/chromis/reports/categorysales.jrxml
+++ /dev/null
@@ -1,422 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/categorysales_messages.properties b/reports/uk/chromis/reports/categorysales_messages.properties
deleted file mode 100644
index 5b0b5ac5..00000000
--- a/reports/uk/chromis/reports/categorysales_messages.properties
+++ /dev/null
@@ -1,30 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.catprice=Net
-label.cattax=Tax
-label.cattotal=Total
-label.disc=Disc.
-label.gross=Gross
-label.name=Category
-label.printed=Printed
-label.period=Period:
-label.qty=Qty
-label.title=Category Sales
-label.total=Grand Total
diff --git a/reports/uk/chromis/reports/categorysalesderby.bs b/reports/uk/chromis/reports/categorysalesderby.bs
deleted file mode 100644
index 1086dc6c..00000000
--- a/reports/uk/chromis/reports/categorysalesderby.bs
+++ /dev/null
@@ -1,58 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-
-//
-
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.CategorySales");
-report.setReport("/uk/chromis/reports/categorysales");
-report.setResourceBundle("uk/chromis/reports/categorysales_messages");
-
-report.setSentence("SELECT CATEGORIES.NAME, " +
-"Sum(TICKETLINES.UNITS) AS QTY, " +
-"Sum(TICKETLINES.PRICE * TICKETLINES.UNITS) AS CATPRICE, " +
-"Sum((PRODUCTS.PRICESELL * TICKETLINES.UNITS)-((PRODUCTS.ISVPRICE ) * (TICKETLINES.PRICE * TICKETLINES.UNITS))) AS DISC, " +
-"Sum((TICKETLINES.PRICE * TAXES.RATE)* TICKETLINES.UNITS) AS CATTAX, " +
-"Sum((TICKETLINES.PRICE * TICKETLINES.UNITS) + ((TICKETLINES.PRICE * TAXES.RATE)* TICKETLINES.UNITS)) AS CATTOTAL " +
-"FROM (TICKETS INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID) INNER JOIN ((CATEGORIES INNER JOIN PRODUCTS ON CATEGORIES.ID = PRODUCTS.CATEGORY) INNER JOIN (TAXES INNER JOIN TICKETLINES ON TAXES.ID = TICKETLINES.TAXID) ON PRODUCTS.ID = TICKETLINES.PRODUCT) ON TICKETS.ID = TICKETLINES.TICKET " +
-"WHERE ?(QBF_FILTER) " +
-"GROUP BY categories.NAME");
-
-report.addParameter("RECEIPTS.DATENEW");
-report.addParameter("RECEIPTS.DATENEW");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-
-report.addField("ID", uk.chromis.data.loader.Datas.STRING);
-report.addField("PARENTID", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("QTY", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATPRICE", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("DISC", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("CATTAX", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("CATTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/categorysalesmysql.bs b/reports/uk/chromis/reports/categorysalesmysql.bs
deleted file mode 100644
index 3145539a..00000000
--- a/reports/uk/chromis/reports/categorysalesmysql.bs
+++ /dev/null
@@ -1,59 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-
-//
-
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.CategorySales");
-report.setReport("/uk/chromis/reports/categorysales");
-report.setResourceBundle("uk/chromis/reports/categorysales_messages");
-
-
-report.setSentence("SELECT CATEGORIES.NAME, " +
-"Sum(TICKETLINES.UNITS) AS QTY, " +
-"Sum(TICKETLINES.PRICE * TICKETLINES.UNITS) AS CATPRICE, " +
-"Sum((PRODUCTS.PRICESELL * TICKETLINES.UNITS)-((PRODUCTS.ISVPRICE ) * (TICKETLINES.PRICE * TICKETLINES.UNITS))) AS DISC, " +
-"Sum((TICKETLINES.PRICE * TAXES.RATE)* TICKETLINES.UNITS) AS CATTAX, " +
-"Sum((TICKETLINES.PRICE * TICKETLINES.UNITS) + ((TICKETLINES.PRICE * TAXES.RATE)* TICKETLINES.UNITS)) AS CATTOTAL " +
-"FROM (TICKETS INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID) INNER JOIN ((CATEGORIES INNER JOIN PRODUCTS ON CATEGORIES.ID = PRODUCTS.CATEGORY) INNER JOIN (TAXES INNER JOIN TICKETLINES ON TAXES.ID = TICKETLINES.TAXID) ON PRODUCTS.ID = TICKETLINES.PRODUCT) ON TICKETS.ID = TICKETLINES.TICKET " +
-"WHERE ?(QBF_FILTER) " +
-"GROUP BY categories.NAME");
-
-report.addParameter("RECEIPTS.DATENEW");
-report.addParameter("RECEIPTS.DATENEW");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-
-report.addField("ID", uk.chromis.data.loader.Datas.STRING);
-report.addField("PARENTID", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("QTY", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATPRICE", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("DISC", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("CATTAX", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("CATTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/chartsales.bs b/reports/uk/chromis/reports/chartsales.bs
deleted file mode 100644
index 4b03f456..00000000
--- a/reports/uk/chromis/reports/chartsales.bs
+++ /dev/null
@@ -1,50 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see ..
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.SalesChart");
-report.setReport("/uk/chromis/reports/chartsales");
-report.setResourceBundle("uk/chromis/reports/chartsales_messages");
-
-report.setSentence("SELECT CATEGORIES.ID, CATEGORIES.NAME, " +
- "Sum(TICKETLINES.UNITS) AS QTY," +
- "Sum((TICKETLINES.PRICE * TICKETLINES.UNITS) + ((TICKETLINES.PRICE * TAXES.RATE)* TICKETLINES.UNITS)) AS CATTOTAL " +
- "FROM (TICKETS INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID) " +
- "INNER JOIN ((CATEGORIES INNER JOIN PRODUCTS ON CATEGORIES.ID = PRODUCTS.CATEGORY) " +
- "INNER JOIN (TAXES INNER JOIN TICKETLINES ON TAXES.ID = TICKETLINES.TAXID) " +
- "ON PRODUCTS.ID = TICKETLINES.PRODUCT) ON TICKETS.ID = TICKETLINES.TICKET " +
- "WHERE ?(QBF_FILTER) " +
- "GROUP BY CATEGORIES.ID, CATEGORIES.NAME");
-
-report.addParameter("RECEIPTS.DATENEW");
-report.addParameter("RECEIPTS.DATENEW");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-
-report.addField("ID", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("QTY", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("CATTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
diff --git a/reports/uk/chromis/reports/chartsales.jrxml b/reports/uk/chromis/reports/chartsales.jrxml
deleted file mode 100644
index c3fc1073..00000000
--- a/reports/uk/chromis/reports/chartsales.jrxml
+++ /dev/null
@@ -1,221 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/chartsales_messages.properties b/reports/uk/chromis/reports/chartsales_messages.properties
deleted file mode 100644
index f5880e69..00000000
--- a/reports/uk/chromis/reports/chartsales_messages.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Sales Chart
-label.printed=Printed
-label.period=Period:
-label.axisx=Sales
-label.axisy=Quantity
diff --git a/reports/uk/chromis/reports/cherry.jpg b/reports/uk/chromis/reports/cherry.jpg
deleted file mode 100644
index d2f23106..00000000
Binary files a/reports/uk/chromis/reports/cherry.jpg and /dev/null differ
diff --git a/reports/uk/chromis/reports/closedpos.bs b/reports/uk/chromis/reports/closedpos.bs
index f81e06de..57ba5685 100644
--- a/reports/uk/chromis/reports/closedpos.bs
+++ b/reports/uk/chromis/reports/closedpos.bs
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
//
// This file is part of chromis oPOS
//
diff --git a/reports/uk/chromis/reports/closedpos.jrxml b/reports/uk/chromis/reports/closedpos.jrxml
deleted file mode 100644
index fcdce778..00000000
--- a/reports/uk/chromis/reports/closedpos.jrxml
+++ /dev/null
@@ -1,484 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/closedpos_1.bs b/reports/uk/chromis/reports/closedpos_1.bs
deleted file mode 100644
index 6da08cbd..00000000
--- a/reports/uk/chromis/reports/closedpos_1.bs
+++ /dev/null
@@ -1,57 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.Closing2");
-report.setReport("/uk/chromis/reports/closedpos_1");
-report.setResourceBundle("uk/chromis/reports/closedpos_messages");
-
-report.setSentence("SELECT " +
- "CLOSEDCASH.HOST, " +
- "CLOSEDCASH.HOSTSEQUENCE, " +
- "CLOSEDCASH.MONEY, " +
- "CLOSEDCASH.DATESTART, " +
- "CLOSEDCASH.DATEEND, " +
- "PAYMENTS.PAYMENT, " +
- "SUM(PAYMENTS.TOTAL) AS TOTAL " +
- "FROM CLOSEDCASH, PAYMENTS, RECEIPTS " +
- "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY AND PAYMENTS.RECEIPT = RECEIPTS.ID AND ?(QBF_FILTER) " +
- "GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.HOSTSEQUENCE, CLOSEDCASH.MONEY, CLOSEDCASH.DATESTART, CLOSEDCASH.DATEEND, PAYMENTS.PAYMENT " +
- "ORDER BY CLOSEDCASH.HOST, CLOSEDCASH.HOSTSEQUENCE");
-
-report.addParameter("CLOSEDCASH.DATEEND");
-report.addParameter("CLOSEDCASH.DATEEND");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-
-report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
-report.addField("HOSTSEQUENCE", uk.chromis.data.loader.Datas.INT);
-report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
-report.addField("DATESTART", uk.chromis.data.loader.Datas.TIMESTAMP);
-report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
-report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
-report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
-
diff --git a/reports/uk/chromis/reports/closedpos_1.jrxml b/reports/uk/chromis/reports/closedpos_1.jrxml
deleted file mode 100644
index 030d2882..00000000
--- a/reports/uk/chromis/reports/closedpos_1.jrxml
+++ /dev/null
@@ -1,215 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/closedpos_messages.properties b/reports/uk/chromis/reports/closedpos_messages.properties
deleted file mode 100644
index bc88d69c..00000000
--- a/reports/uk/chromis/reports/closedpos_messages.properties
+++ /dev/null
@@ -1,49 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Cash Closed
-label.titleb=Cash Closed (Export)
-label.closedate=Closed
-label.host=Terminal
-label.partialtotal=Sequence Total
-label.total=Grand Total
-label.partialtax=Taxes
-label.partialsubtotal=Subtotal
-label.hostsequence=Sequence
-label.tax=Taxes
-label.terminaltotal=Terminal Total
-label.subtotal=Subtotal
-label.period=Period:
-label.printed=Printed
-label.payment=Type
-label.money=Total
-transpayment.cash=Cash
-transpayment.magcard=Card
-transpayment.cashrefund=Refund
-transpayment.magcardrefund=Card Refund
-transpayment.cheque=Cheque
-transpayment.chequerefund=Cheque Refund
-transpayment.cashin=(in) Cash
-transpayment.cashout=(out) Cash
-transpayment.free=Free
-transpayment.ticket=Ticket
-transpayment.paperin=Note Input
-transpayment.paperout=Note Output
-transpayment.debt=Debt
-transpayment.debtpaid=Debt Paid
diff --git a/reports/uk/chromis/reports/closedproducts.bs b/reports/uk/chromis/reports/closedproducts.bs
index 6c7a5726..f0e5ce32 100644
--- a/reports/uk/chromis/reports/closedproducts.bs
+++ b/reports/uk/chromis/reports/closedproducts.bs
@@ -1,44 +1,49 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
//
-// This file is part of chromis oPOS
+// This file is part of chromis oPOS
//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+// PostgreSQL version
report = new uk.chromis.pos.reports.PanelReportBean();
report.setTitleKey("Menu.ClosedProducts");
-report.setReport("/uk/chromis/reports/closedproducts");
+report.setReport("/uk/chromis/reports/closedproducts_1");
report.setResourceBundle("uk/chromis/reports/closedproducts_messages");
-report.setSentence("SELECT " +
- "CLOSEDCASH.HOST, " +
- "CLOSEDCASH.MONEY, " +
- "CLOSEDCASH.DATEEND, " +
- "PRODUCTS.REFERENCE, " +
- "PRODUCTS.NAME, " +
- "(PRODUCTS.PRICESELL+(PRODUCTS.PRICESELL*TAXES.RATE)) AS PRICE, " +
- "Sum(TICKETLINES.UNITS) AS UNITS, " +
- "Sum((PRODUCTS.PRICESELL+PRODUCTS.PRICESELL*TAXES.RATE)*UNITS) AS VALUE, " +
- "Sum((PRODUCTS.PRICESELL+PRODUCTS.PRICESELL*TAXES.RATE)*TICKETLINES.UNITS-(TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS DISCOUNT, " +
- "Sum((TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS TOTAL " +
- "FROM ((TICKETS INNER JOIN (TICKETLINES INNER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID) " +
- "ON TICKETS.ID = TICKETLINES.TICKET) INNER JOIN (RECEIPTS INNER JOIN CLOSEDCASH " +
- "ON RECEIPTS.MONEY = CLOSEDCASH.MONEY) ON TICKETS.ID = RECEIPTS.ID) INNER JOIN TAXES ON TICKETLINES.TAXID = TAXES.ID " +
- "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
- "GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.MONEY, CLOSEDCASH.DATEEND, PRODUCTS.REFERENCE, PRODUCTS.NAME " +
- "ORDER BY PRODUCTS.NAME, CLOSEDCASH.HOST, CLOSEDCASH.DATEEND");
+report.setSentence("SELECT " +
+ "CLOSEDCASH.HOST, " +
+ "CLOSEDCASH.DATESTART, " +
+ "CLOSEDCASH.DATEEND, " +
+ "TAXES.NAME AS TAXNAME, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "PRODUCTS.PRICESELL, " +
+ "Sum(TICKETLINES.UNITS) AS UNITS, " +
+ "Sum((TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS TOTAL " +
+ "FROM (TAXES INNER JOIN " +
+ "((PRODUCTS INNER JOIN " +
+ "(TICKETS INNER JOIN TICKETLINES ON TICKETS.ID = TICKETLINES.TICKET) " +
+ "ON PRODUCTS.ID = TICKETLINES.PRODUCT) " +
+ "INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID) " +
+ "ON TAXES.ID = TICKETLINES.TAXID) INNER JOIN CLOSEDCASH " +
+ "ON RECEIPTS.MONEY = CLOSEDCASH.MONEY " +
+ "WHERE ?(QBF_FILTER) " +
+ "GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.DATESTART, CLOSEDCASH.DATEEND, TAXES.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.PRICESELL " +
+ "ORDER BY CLOSEDCASH.HOST, TAXES.NAME, PRODUCTS.NAME");
report.addParameter("CLOSEDCASH.DATEEND");
report.addParameter("CLOSEDCASH.DATEEND");
@@ -50,23 +55,14 @@ paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
report.addQBFFilter(paramdates);
-report.addParameter("PRODUCTS.NAME");
-report.addParameter("PRODUCTS.PRICEBUY");
-report.addParameter("PRODUCTS.PRICESELL");
-report.addParameter("PRODUCTS.CATEGORY");
-report.addParameter("PRODUCTS.CODE");
-
-report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter());
-
report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
-report.addField("MONEY", uk.chromis.data.loader.Datas.STRING);
+report.addField("DATESTART", uk.chromis.data.loader.Datas.TIMESTAMP);
report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
+report.addField("TAXNAME", uk.chromis.data.loader.Datas.STRING);
report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
report.addField("PRICE", uk.chromis.data.loader.Datas.DOUBLE);
report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("VALUE", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("DISCOUNT", uk.chromis.data.loader.Datas.DOUBLE);
report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/closedproducts.jrxml b/reports/uk/chromis/reports/closedproducts.jrxml
deleted file mode 100644
index 55b132e4..00000000
--- a/reports/uk/chromis/reports/closedproducts.jrxml
+++ /dev/null
@@ -1,658 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/closedproducts_1.bs b/reports/uk/chromis/reports/closedproducts_1.bs
deleted file mode 100644
index ae9b6b40..00000000
--- a/reports/uk/chromis/reports/closedproducts_1.bs
+++ /dev/null
@@ -1,66 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.ClosedProducts");
-report.setReport("/uk/chromis/reports/closedproducts_1");
-report.setResourceBundle("uk/chromis/reports/closedproducts_messages");
-
-report.setSentence("SELECT " +
- "CLOSEDCASH.HOST, " +
- "CLOSEDCASH.DATESTART, " +
- "CLOSEDCASH.DATEEND, " +
- "TAXES.NAME AS TAXNAME, " +
- "PRODUCTS.REFERENCE, " +
- "PRODUCTS.NAME, " +
- "PRODUCTS.PRICESELL, " +
- "Sum(TICKETLINES.UNITS) AS UNITS, " +
- "Sum((TICKETLINES.PRICE+(TICKETLINES.PRICE*TAXES.RATE))*TICKETLINES.UNITS) AS TOTAL " +
- "FROM (TAXES INNER JOIN " +
- "((PRODUCTS INNER JOIN " +
- "(TICKETS INNER JOIN TICKETLINES ON TICKETS.ID = TICKETLINES.TICKET) " +
- "ON PRODUCTS.ID = TICKETLINES.PRODUCT) " +
- "INNER JOIN RECEIPTS ON TICKETS.ID = RECEIPTS.ID) " +
- "ON TAXES.ID = TICKETLINES.TAXID) INNER JOIN CLOSEDCASH " +
- "ON RECEIPTS.MONEY = CLOSEDCASH.MONEY " +
- "WHERE ?(QBF_FILTER) " +
- "GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.DATESTART, CLOSEDCASH.DATEEND, TAXES.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.PRICESELL " +
- "ORDER BY CLOSEDCASH.HOST, TAXES.NAME, PRODUCTS.NAME");
-
-report.addParameter("CLOSEDCASH.DATEEND");
-report.addParameter("CLOSEDCASH.DATEEND");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-
-report.addField("HOST", uk.chromis.data.loader.Datas.STRING);
-report.addField("DATESTART", uk.chromis.data.loader.Datas.TIMESTAMP);
-report.addField("DATEEND", uk.chromis.data.loader.Datas.TIMESTAMP);
-report.addField("TAXNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("PRICE", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/closedproducts_1.jrxml b/reports/uk/chromis/reports/closedproducts_1.jrxml
deleted file mode 100644
index b4a982ae..00000000
--- a/reports/uk/chromis/reports/closedproducts_1.jrxml
+++ /dev/null
@@ -1,480 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/closedproducts_messages.properties b/reports/uk/chromis/reports/closedproducts_messages.properties
deleted file mode 100644
index c053b91c..00000000
--- a/reports/uk/chromis/reports/closedproducts_messages.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Product Sales: Product
-label.titleb=Product Sales: Terminal
-label.printed=Printed
-label.period=Period:
-label.noreference=(no Reference defined)
-label.noproduct=(no Product defined)
-label.host=Terminal
-label.closeddate=Closed Date
-label.units=Units
-label.partialtotal=Total
-label.reference=Reference
-label.name=Name
-label.price=Unit Price
-label.value=Value
-label.discount=Discount
-label.ttotal=Terminal Total
-label.ptotal=Product Total
-label.gtotal=Grand Total
-
diff --git a/reports/uk/chromis/reports/customers.bs b/reports/uk/chromis/reports/customers.bs
deleted file mode 100644
index 6de8c876..00000000
--- a/reports/uk/chromis/reports/customers.bs
+++ /dev/null
@@ -1,43 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.CustomersReport");
-report.setReport("/uk/chromis/reports/customers");
-report.setResourceBundle("uk/chromis/reports/customers_messages");
-
-report.setSentence("SELECT ID, TAXID, NAME, ADDRESS, NOTES, CARD, MAXDEBT, CURDATE, CURDEBT " +
- "FROM CUSTOMERS " +
- "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND ?(QBF_FILTER)");
-
-report.addParameter("ID");
-report.addParameter("NAME");
-report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
-
-report.addField("ID", uk.chromis.data.loader.Datas.STRING);
-report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
-report.addField("NOTES", uk.chromis.data.loader.Datas.STRING);
-report.addField("CARD", uk.chromis.data.loader.Datas.STRING);
-report.addField("MAXDEBT", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("CURDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
-report.addField("CURDEBT", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/customers.jrxml b/reports/uk/chromis/reports/customers.jrxml
deleted file mode 100644
index 98cb3cae..00000000
--- a/reports/uk/chromis/reports/customers.jrxml
+++ /dev/null
@@ -1,316 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- '']]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/customers_export.bs b/reports/uk/chromis/reports/customers_export.bs
deleted file mode 100644
index a044b5ca..00000000
--- a/reports/uk/chromis/reports/customers_export.bs
+++ /dev/null
@@ -1,45 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.CustomersExport");
-report.setReport("/uk/chromis/reports/customers_export");
-report.setResourceBundle("uk/chromis/reports/customers_messages");
-
-report.setSentence("SELECT ID,NAME,FIRSTNAME,LASTNAME,ADDRESS,ADDRESS2,CITY,POSTAL,PHONE,EMAIL " +
- "FROM CUSTOMERS " +
- "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND ?(QBF_FILTER)" +
- "ORDER BY NAME ");
-
-report.addParameter("ID");
-report.addParameter("NAME");
-report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
-
-report.addField("ID", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("FIRSTNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("LASTNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
-report.addField("ADDRESS2", uk.chromis.data.loader.Datas.STRING);
-report.addField("CITY", uk.chromis.data.loader.Datas.STRING);
-report.addField("POSTAL", uk.chromis.data.loader.Datas.STRING);
-report.addField("PHONE", uk.chromis.data.loader.Datas.STRING);
-report.addField("EMAIL", uk.chromis.data.loader.Datas.STRING);
-
-report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/customers_list.bs b/reports/uk/chromis/reports/customers_list.bs
deleted file mode 100644
index c411c1f3..00000000
--- a/reports/uk/chromis/reports/customers_list.bs
+++ /dev/null
@@ -1,45 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.CustomersList");
-report.setReport("/uk/chromis/reports/customers_list");
-report.setResourceBundle("uk/chromis/reports/customers_messages");
-
-report.setSentence("SELECT TAXID, NAME, FIRSTNAME, LASTNAME,ADDRESS,ADDRESS2,CITY,POSTAL,PHONE,EMAIL " +
- "FROM CUSTOMERS " +
- "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND ?(QBF_FILTER)" +
- "ORDER BY NAME ");
-
-report.addParameter("TAXID");
-report.addParameter("NAME");
-report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
-
-report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("FIRSTNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("LASTNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
-report.addField("ADDRESS2", uk.chromis.data.loader.Datas.STRING);
-report.addField("CITY", uk.chromis.data.loader.Datas.STRING);
-report.addField("POSTAL", uk.chromis.data.loader.Datas.STRING);
-report.addField("PHONE", uk.chromis.data.loader.Datas.STRING);
-report.addField("EMAIL", uk.chromis.data.loader.Datas.STRING);
-
-report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/customers_list.jrxml b/reports/uk/chromis/reports/customers_list.jrxml
deleted file mode 100644
index 1ee325fa..00000000
--- a/reports/uk/chromis/reports/customers_list.jrxml
+++ /dev/null
@@ -1,322 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/customers_messages.properties b/reports/uk/chromis/reports/customers_messages.properties
deleted file mode 100644
index bc92351e..00000000
--- a/reports/uk/chromis/reports/customers_messages.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.address=Address
-label.address2=Address2
-label.city=City
-label.contact=Contact
-label.curdebt=Debt Current
-label.curdate=Debt date
-label.email=eMail
-label.firstname=First Name
-label.lastname=Last Name
-label.maxdebt=Max Debt
-label.name=Name
-label.notes=Notes
-label.phone=Phone
-label.postal=PCode
-label.printed=Printed
-label.taxid=Account ID
-label.telephone=Telephone
-label.title=Customers
diff --git a/reports/uk/chromis/reports/customersb.bs b/reports/uk/chromis/reports/customersb.bs
deleted file mode 100644
index c0e9ecba..00000000
--- a/reports/uk/chromis/reports/customersb.bs
+++ /dev/null
@@ -1,40 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.CustomersBReport");
-report.setReport("/uk/chromis/reports/customers");
-report.setResourceBundle("uk/chromis/reports/customers_messages");
-
-report.setSentence("SELECT ID, TAXID, NAME, ADDRESS, NOTES, CARD, MAXDEBT, CURDATE, CURDEBT " +
- "FROM CUSTOMERS " +
- "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND CURDEBT IS NOT NULL AND CURDEBT <> 0");
-
-report.addField("ID", uk.chromis.data.loader.Datas.STRING);
-report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
-report.addField("NOTES", uk.chromis.data.loader.Datas.STRING);
-report.addField("CARD", uk.chromis.data.loader.Datas.STRING);
-report.addField("MAXDEBT", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("CURDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
-report.addField("CURDEBT", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
-
diff --git a/reports/uk/chromis/reports/customersdebtors.bs b/reports/uk/chromis/reports/customersdebtors.bs
deleted file mode 100644
index c9c179e5..00000000
--- a/reports/uk/chromis/reports/customersdebtors.bs
+++ /dev/null
@@ -1,40 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.CustomersList");
-report.setReport("/uk/chromis/reports/customersdebtors");
-report.setResourceBundle("uk/chromis/reports/customers_messages");
-
-report.setSentence("SELECT ID, TAXID, NAME, ADDRESS, CURDEBT " +
- "FROM CUSTOMERS " +
- "WHERE VISIBLE = " + app.getSession().DB.TRUE() + " AND ?(QBF_FILTER)" +
- "ORDER BY NAME ");
-
-report.addParameter("ID");
-report.addParameter("NAME");
-report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
-
-report.addField("ID", uk.chromis.data.loader.Datas.STRING);
-report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("ADDRESS", uk.chromis.data.loader.Datas.STRING);
-report.addField("CURDEBT", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/customersdebtors.jrxml b/reports/uk/chromis/reports/customersdebtors.jrxml
deleted file mode 100644
index 9a42942b..00000000
--- a/reports/uk/chromis/reports/customersdebtors.jrxml
+++ /dev/null
@@ -1,258 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/customersdiary.bs b/reports/uk/chromis/reports/customersdiary.bs
deleted file mode 100644
index 53eea1f0..00000000
--- a/reports/uk/chromis/reports/customersdiary.bs
+++ /dev/null
@@ -1,59 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.CustomersDiary");
-report.setReport("/uk/chromis/reports/customersdiary");
-report.setResourceBundle("uk/chromis/reports/customersdiary_messages");
-
-report.setSentence("SELECT " +
- "RECEIPTS.DATENEW, " +
- "TICKETS.TICKETID, " +
- "PAYMENTS.PAYMENT, " +
- "PAYMENTS.TOTAL, " +
- "CUSTOMERS.TAXID, " +
- "CUSTOMERS.NAME " +
- "FROM RECEIPTS, TICKETS, CUSTOMERS, PAYMENTS " +
- "WHERE RECEIPTS.ID = TICKETS.ID AND RECEIPTS.ID = PAYMENTS.RECEIPT " +
- "AND TICKETS.CUSTOMER = CUSTOMERS.ID " +
- "AND ?(QBF_FILTER) " +
- "ORDER BY CUSTOMERS.NAME, RECEIPTS.DATENEW DESC");
-
-report.addParameter("RECEIPTS.DATENEW");
-report.addParameter("RECEIPTS.DATENEW");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-
-report.addParameter("CUSTOMERS.ID");
-report.addParameter("CUSTOMERS.NAME");
-report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
-
-report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
-report.addField("TICKETID", uk.chromis.data.loader.Datas.STRING);
-report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
-report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-
-report;
diff --git a/reports/uk/chromis/reports/customersdiary.jrxml b/reports/uk/chromis/reports/customersdiary.jrxml
deleted file mode 100644
index 21d87656..00000000
--- a/reports/uk/chromis/reports/customersdiary.jrxml
+++ /dev/null
@@ -1,360 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/customersdiary_messages.properties b/reports/uk/chromis/reports/customersdiary_messages.properties
deleted file mode 100644
index df398b3e..00000000
--- a/reports/uk/chromis/reports/customersdiary_messages.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-.
-
-label.title=Customers Diary
-
-label.date=Date
-label.period=Period:
-label.printed=Printed
-label.ticket=Ticket
-label.payment=Payment
-label.total=Total
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/dailypresence.bs b/reports/uk/chromis/reports/dailypresence.bs
index 37966304..eb660f39 100644
--- a/reports/uk/chromis/reports/dailypresence.bs
+++ b/reports/uk/chromis/reports/dailypresence.bs
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
//
// This file is part of chromis oPOS
//
diff --git a/reports/uk/chromis/reports/dailypresence.jrxml b/reports/uk/chromis/reports/dailypresence.jrxml
index 14075b14..05458c84 100644
--- a/reports/uk/chromis/reports/dailypresence.jrxml
+++ b/reports/uk/chromis/reports/dailypresence.jrxml
@@ -1,5 +1,5 @@
-
+
@@ -13,7 +13,7 @@
@@ -44,7 +44,7 @@
-
+
@@ -58,7 +58,7 @@
-
+
@@ -72,14 +72,14 @@
-
+
-
+
-
+
@@ -93,7 +93,7 @@
-
+
@@ -107,7 +107,7 @@
-
+
@@ -121,7 +121,7 @@
-
+
@@ -135,13 +135,13 @@
-
+
-
+
@@ -155,7 +155,7 @@
-
+
@@ -169,7 +169,7 @@
-
+
@@ -183,7 +183,7 @@
-
+
@@ -197,7 +197,7 @@
-
+
@@ -213,7 +213,7 @@
-
+
@@ -227,7 +227,7 @@
-
+
@@ -241,7 +241,7 @@
-
+
@@ -255,11 +255,11 @@
-
+
-
+
@@ -269,7 +269,7 @@
-
+
@@ -283,7 +283,7 @@
-
+
@@ -297,7 +297,7 @@
-
+
@@ -311,7 +311,7 @@
-
+
diff --git a/reports/uk/chromis/reports/dailypresence_messages.properties b/reports/uk/chromis/reports/dailypresence_messages.properties
deleted file mode 100644
index 2340158c..00000000
--- a/reports/uk/chromis/reports/dailypresence_messages.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-
-label.end=End Shift
-label.name=Name
-label.period=Period:
-label.printed=Printed
-label.start=Start Shift
-label.title=Daily Presence
-label.total=Total Hours
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/dailypresencereport.bs b/reports/uk/chromis/reports/dailypresencereport.bs
index 37966304..7bac37b9 100644
--- a/reports/uk/chromis/reports/dailypresencereport.bs
+++ b/reports/uk/chromis/reports/dailypresencereport.bs
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
//
// This file is part of chromis oPOS
//
@@ -26,7 +26,10 @@ report.setSentence("SELECT " +
"PEOPLE.NAME, " +
"SHIFTS.STARTSHIFT, " +
"SHIFTS.ENDSHIFT, " +
- "CONCAT('',TIMEDIFF(SHIFTS.ENDSHIFT, SHIFTS.STARTSHIFT)) AS TOTAL " +
+ "((DATE_PART('day', SHIFTS.ENDSHIFT - SHIFTS.STARTSHIFT) * 24 + " +
+ "DATE_PART('hour', SHIFTS.ENDSHIFT - SHIFTS.STARTSHIFT)) * 60 + " +
+ "DATE_PART('minute', SHIFTS.ENDSHIFT - SHIFTS.STARTSHIFT)) * 60 + " +
+ "DATE_PART('second', SHIFTS.ENDSHIFT - SHIFTS.STARTSHIFT) AS TOTAL " +
"FROM PEOPLE LEFT JOIN SHIFTS ON SHIFTS.PPLID = PEOPLE.ID " +
"WHERE ?(QBF_FILTER) ");
diff --git a/reports/uk/chromis/reports/dailyschedule.bs b/reports/uk/chromis/reports/dailyschedule.bs
deleted file mode 100644
index c7ce9cde..00000000
--- a/reports/uk/chromis/reports/dailyschedule.bs
+++ /dev/null
@@ -1,49 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.DailyScheduleReport");
-report.setReport("/uk/chromis/reports/dailyschedule");
-report.setResourceBundle("uk/chromis/reports/dailyschedule_messages");
-
-report.setSentence("SELECT " +
- "PEOPLE.NAME, " +
- "LEAVES.STARTDATE, " +
- "LEAVES.ENDDATE, " +
- "CONCAT('',DATEDIFF(LEAVES.ENDDATE, LEAVES.STARTDATE)) AS TOTAL " +
- "FROM PEOPLE LEFT JOIN LEAVES ON LEAVES.PPLID = PEOPLE.ID " +
- "WHERE ?(QBF_FILTER) " +
- "ORDER BY LEAVES.STARTDATE DESC ");
-
-report.addParameter("LEAVES.STARTDATE");
-report.addParameter("LEAVES.ENDDATE");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("STARTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
-report.addField("ENDDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
-report.addField("TOTAL", uk.chromis.data.loader.Datas.STRING);
-
-report;
diff --git a/reports/uk/chromis/reports/dailyschedule.jrxml b/reports/uk/chromis/reports/dailyschedule.jrxml
index 6f57d0d6..d4489e40 100644
--- a/reports/uk/chromis/reports/dailyschedule.jrxml
+++ b/reports/uk/chromis/reports/dailyschedule.jrxml
@@ -132,7 +132,7 @@
-
+
@@ -259,7 +259,7 @@
-
+
diff --git a/reports/uk/chromis/reports/dailyschedule_messages.properties b/reports/uk/chromis/reports/dailyschedule_messages.properties
deleted file mode 100644
index 154ce3d8..00000000
--- a/reports/uk/chromis/reports/dailyschedule_messages.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.end=End Leave
-label.name=Name
-label.period=Period:
-label.printed=Printed
-label.start=Start Leave
-label.title=Daily Schedule
-label.total=Total Days
diff --git a/reports/uk/chromis/reports/dailyschedulereport.bs b/reports/uk/chromis/reports/dailyschedulereport.bs
index c7ce9cde..63fc15f0 100644
--- a/reports/uk/chromis/reports/dailyschedulereport.bs
+++ b/reports/uk/chromis/reports/dailyschedulereport.bs
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
//
// This file is part of chromis oPOS
//
@@ -26,7 +26,10 @@ report.setSentence("SELECT " +
"PEOPLE.NAME, " +
"LEAVES.STARTDATE, " +
"LEAVES.ENDDATE, " +
- "CONCAT('',DATEDIFF(LEAVES.ENDDATE, LEAVES.STARTDATE)) AS TOTAL " +
+ "((DATE_PART('day', LEAVES.ENDDATE - LEAVES.STARTDATE) * 24 + " +
+ "DATE_PART('hour', LEAVES.ENDDATE - LEAVES.STARTDATE)) * 60 + " +
+ "DATE_PART('minute', LEAVES.ENDDATE - LEAVES.STARTDATE)) * 60 + " +
+ "DATE_PART('second', LEAVES.ENDDATE - LEAVES.STARTDATE) AS TOTAL " +
"FROM PEOPLE LEFT JOIN LEAVES ON LEAVES.PPLID = PEOPLE.ID " +
"WHERE ?(QBF_FILTER) " +
"ORDER BY LEAVES.STARTDATE DESC ");
diff --git a/reports/uk/chromis/reports/extendedcashregisterlog.bs b/reports/uk/chromis/reports/extendedcashregisterlog.bs
deleted file mode 100644
index a7212875..00000000
--- a/reports/uk/chromis/reports/extendedcashregisterlog.bs
+++ /dev/null
@@ -1,54 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.ExtendedCashRegisterLog");
-report.setReport("/uk/chromis/reports/extendedcashregisterlog");
-report.setResourceBundle("uk/chromis/reports/extendedcashregisterlog_messages");
-
-report.setSentence("SELECT " +
- "TICKETS.TICKETID AS TICKET_NO, " +
- "RECEIPTS.DATENEW AS TICKET_DATE, " +
- "PAYMENTS.TOTAL AS MONEY, " +
- "CUSTOMERS.NAME AS CUSTOMER, " +
- "PAYMENTS.PAYMENT AS PAYMENT " +
- "FROM RECEIPTS " +
- "LEFT JOIN TICKETS ON RECEIPTS.ID = TICKETS.ID " +
- "LEFT JOIN PAYMENTS ON RECEIPTS.ID = PAYMENTS.RECEIPT " +
- "LEFT JOIN CUSTOMERS ON TICKETS.CUSTOMER = CUSTOMERS.ID " +
- "WHERE ?(QBF_FILTER) " +
- "ORDER BY RECEIPTS.DATENEW");
-
-report.addParameter("RECEIPTS.DATENEW");
-report.addParameter("RECEIPTS.DATENEW");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-
-report.addField("TICKET_NO", uk.chromis.data.loader.Datas.STRING);
-report.addField("TICKET_DATE", uk.chromis.data.loader.Datas.TIMESTAMP);
-report.addField("MONEY", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("CUSTOMER", uk.chromis.data.loader.Datas.STRING);
-report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
-
-return report;
diff --git a/reports/uk/chromis/reports/extendedcashregisterlog.jrxml b/reports/uk/chromis/reports/extendedcashregisterlog.jrxml
deleted file mode 100644
index 1998ddb8..00000000
--- a/reports/uk/chromis/reports/extendedcashregisterlog.jrxml
+++ /dev/null
@@ -1,355 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/extendedcashregisterlog_messages.properties b/reports/uk/chromis/reports/extendedcashregisterlog_messages.properties
deleted file mode 100644
index 30c79eb1..00000000
--- a/reports/uk/chromis/reports/extendedcashregisterlog_messages.properties
+++ /dev/null
@@ -1,45 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Transaction Log: Extended
-label.noreference=
-label.noproduct=(no sales)
-label.printed=Printed:
-label.period=Period:
-label.date=Date
-label.ticket=Ticket No.
-label.sum=Sum
-label.customer=Customer
-label.payment=Payment
-label.total=Grand Total
-
-transpayment.cash=Cash
-transpayment.magcard=Card
-transpayment.cashrefund=Cash Refund
-transpayment.magcardrefund=Card Refund
-transpayment.cheque=Cheque
-transpayment.chequerefund=Cheque Refund
-transpayment.cashin=(in) Cash
-transpayment.cashout=(out) Cash
-transpayment.free=Free
-transpayment.ticket=Ticket
-transpayment.paperin=Note Input
-transpayment.paperout=Note Output
-transpayment.debt=Debt
-transpayment.debtpaid=Debt Paid
diff --git a/reports/uk/chromis/reports/extproducts.bs b/reports/uk/chromis/reports/extproducts.bs
deleted file mode 100644
index 8f116c90..00000000
--- a/reports/uk/chromis/reports/extproducts.bs
+++ /dev/null
@@ -1,73 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-// *** NOT SUITABLE FOR DERBY DB'S***
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.ExtendedByProducts");
-report.setReport("/uk/chromis/reports/extproducts");
-report.setResourceBundle("uk/chromis/reports/extproducts_messages");
-
-report.setSentence("SELECT " +
- "CUSTOMERS.TAXID, " +
- "CUSTOMERS.NAME AS CUSTOMER, " +
- "CATEGORIES.NAME AS CATEGORY, " +
- "PRODUCTS.REFERENCE AS REFERENCE, " +
- "PRODUCTS.NAME AS PRODUCT, " +
- "SUM(TICKETLINES.UNITS) AS UNIT, " +
- "SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL " +
- "FROM TICKETS " +
- "LEFT OUTER JOIN CUSTOMERS ON TICKETS.CUSTOMER = CUSTOMERS.ID, TICKETLINES " +
- "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
- "LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID, RECEIPTS " +
- "WHERE RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
- "GROUP BY CUSTOMERS.TAXID, CUSTOMERS.NAME, CATEGORIES.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME " +
- "ORDER BY CUSTOMERS.NAME, CATEGORIES.NAME, PRODUCTS.NAME");
-
-report.addParameter("RECEIPTS.DATENEW");
-report.addParameter("RECEIPTS.DATENEW");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-
-report.addParameter("PRODUCTS.NAME");
-report.addParameter("PRODUCTS.PRICEBUY");
-report.addParameter("PRODUCTS.PRICESELL");
-report.addParameter("PRODUCTS.CATEGORY");
-report.addParameter("PRODUCTS.CODE");
-report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter());
-
-report.addParameter("CUSTOMERS.ID");
-report.addParameter("CUSTOMERS.NAME");
-report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
-
-report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
-report.addField("CUSTOMER", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
-report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
-report.addField("PRODUCT", uk.chromis.data.loader.Datas.STRING);
-report.addField("UNIT", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
-
diff --git a/reports/uk/chromis/reports/extproducts.jrxml b/reports/uk/chromis/reports/extproducts.jrxml
deleted file mode 100644
index 0aabd334..00000000
--- a/reports/uk/chromis/reports/extproducts.jrxml
+++ /dev/null
@@ -1,539 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/extproducts_1.bs b/reports/uk/chromis/reports/extproducts_1.bs
deleted file mode 100644
index 3853c46b..00000000
--- a/reports/uk/chromis/reports/extproducts_1.bs
+++ /dev/null
@@ -1,69 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-// *** NOT SUITABLE FOR DERBY DB'S***
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.ExtendedByProducts");
-report.setReport("/uk/chromis/reports/extproducts");
-report.setResourceBundle("uk/chromis/reports/extproducts_messages");
-
-report.setSentence("SELECT " +
- "CUSTOMERS.TAXID, " +
- "CUSTOMERS.NAME AS CUSTOMER, " +
- "CATEGORIES.NAME AS CATEGORY, " +
- "PRODUCTS.REFERENCE AS REFERENCE, " +
- "PRODUCTS.NAME AS PRODUCT, " +
- "SUM(TICKETLINES.UNITS) AS UNIT, " +
- "SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL, " +
- "SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) / SUM(TICKETLINES.UNITS) AS MEANPRICE " +
- "FROM TICKETS " +
- "LEFT OUTER JOIN CUSTOMERS ON TICKETS.CUSTOMER = CUSTOMERS.ID, TICKETLINES " +
- "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
- "LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID, RECEIPTS " +
- "WHERE RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
- "GROUP BY CUSTOMERS.ID, CATEGORIES.ID, PRODUCTS.ID " +
- "ORDER BY CUSTOMERS.NAME, CATEGORIES.NAME, PRODUCTS.NAME");
-
-report.addParameter("RECEIPTS.DATENEW");
-report.addParameter("RECEIPTS.DATENEW");
-report.addQBFFilter(new uk.chromis.pos.reports.JParamsDatesInterval());
-
-report.addParameter("PRODUCTS.NAME");
-report.addParameter("PRODUCTS.PRICEBUY");
-report.addParameter("PRODUCTS.PRICESELL");
-report.addParameter("PRODUCTS.CATEGORY");
-report.addParameter("PRODUCTS.CODE");
-report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter());
-
-report.addParameter("CUSTOMERS.ID");
-report.addParameter("CUSTOMERS.NAME");
-report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
-
-report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
-report.addField("CUSTOMER", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
-report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
-report.addField("PRODUCT", uk.chromis.data.loader.Datas.STRING);
-report.addField("UNIT", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("MEANPRICE", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
-
diff --git a/reports/uk/chromis/reports/extproducts_messages.properties b/reports/uk/chromis/reports/extproducts_messages.properties
deleted file mode 100644
index 0b8bb662..00000000
--- a/reports/uk/chromis/reports/extproducts_messages.properties
+++ /dev/null
@@ -1,35 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.meanprice=Mean Price
-label.name=Category
-label.notaxid=
-label.nocustomer=(No Customer defined)
-label.nocategory=(No Category defined)
-label.noreferency=
-label.noproduct=(No Product defined)
-label.partialtotal=Total
-label.period=Period:
-label.printed=Printed
-label.productname=Product
-label.sumtotal=Total by Sales
-label.title=Product Sales: Customer
-label.total=Total by Customer
-label.units=Units
-
diff --git a/reports/uk/chromis/reports/invalidcategory.bs b/reports/uk/chromis/reports/invalidcategory.bs
deleted file mode 100644
index 864a37c6..00000000
--- a/reports/uk/chromis/reports/invalidcategory.bs
+++ /dev/null
@@ -1,38 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.InvalidCategory");
-report.setReport("/uk/chromis/reports/invalidcategory");
-report.setResourceBundle("uk/chromis/reports/invalidcategory_messages");
-
-report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
- "CSVIMPORT.NAME, CSVIMPORT.ROWNUMBER, CSVIMPORT.CSVERROR,"+
- "CSVIMPORT.CATEGORY FROM CSVIMPORT WHERE (CSVERROR = 'Bad category details')");
-
-
-
-report.addField("reference", uk.chromis.data.loader.Datas.STRING);
-report.addField("code", uk.chromis.data.loader.Datas.STRING);
-report.addField("name", uk.chromis.data.loader.Datas.STRING);
-report.addField("rownumber", uk.chromis.data.loader.Datas.STRING);
-report.addField("csverror", uk.chromis.data.loader.Datas.STRING);
-report.addField("category", uk.chromis.data.loader.Datas.STRING);
-
-report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/invalidcategory.jrxml b/reports/uk/chromis/reports/invalidcategory.jrxml
deleted file mode 100644
index cd191543..00000000
--- a/reports/uk/chromis/reports/invalidcategory.jrxml
+++ /dev/null
@@ -1,204 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/invalidcategory_messages.properties b/reports/uk/chromis/reports/invalidcategory_messages.properties
deleted file mode 100644
index 95e16cdf..00000000
--- a/reports/uk/chromis/reports/invalidcategory_messages.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Invalid Category Data
-label.reference=Reference
-label.barcode=Barcode
-label.name=Name
-label.category=Bad Category
-label.csverror=Error message
-label.row=Row in file
-
diff --git a/reports/uk/chromis/reports/invaliddata.bs b/reports/uk/chromis/reports/invaliddata.bs
deleted file mode 100644
index 9ff01b26..00000000
--- a/reports/uk/chromis/reports/invaliddata.bs
+++ /dev/null
@@ -1,44 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-
-//
-
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.InvalidData");
-report.setReport("/uk/chromis/reports/invaliddata");
-report.setResourceBundle("uk/chromis/reports/invaliddata_messages");
-
-report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
- "CSVIMPORT.NAME, CSVIMPORT.ROWNUMBER, CSVIMPORT.CSVERROR"+
- " FROM CSVIMPORT WHERE (CSVERROR <> 'New product') and "+
- "(CSVERROR <> 'Updated Price Details') and (CSVERROR <>"+
- " 'Missing data or Invalid number')");
-
-
-
-report.addField("reference", uk.chromis.data.loader.Datas.STRING);
-report.addField("code", uk.chromis.data.loader.Datas.STRING);
-report.addField("name", uk.chromis.data.loader.Datas.STRING);
-report.addField("rownumber", uk.chromis.data.loader.Datas.STRING);
-report.addField("csverror", uk.chromis.data.loader.Datas.STRING);
-
-
-report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/invaliddata.jrxml b/reports/uk/chromis/reports/invaliddata.jrxml
deleted file mode 100644
index 5f77738e..00000000
--- a/reports/uk/chromis/reports/invaliddata.jrxml
+++ /dev/null
@@ -1,203 +0,0 @@
-
-
-
-
-
-
- 'New product') and (CSVERROR <> 'Updated Price Details') and (CSVERROR <> 'Missing data or Invalid number')]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/invaliddata_messages.properties b/reports/uk/chromis/reports/invaliddata_messages.properties
deleted file mode 100644
index 06c25d28..00000000
--- a/reports/uk/chromis/reports/invaliddata_messages.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Invalid product data
-label.reference=Reference
-label.barcode=Barcode
-label.name=Name
-label.csverror=Error message
-label.row=Row in file
-
diff --git a/reports/uk/chromis/reports/inventory.bs b/reports/uk/chromis/reports/inventory.bs
deleted file mode 100644
index b1a8d945..00000000
--- a/reports/uk/chromis/reports/inventory.bs
+++ /dev/null
@@ -1,72 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.Inventory");
-report.setReport("/uk/chromis/reports/inventory");
-report.setResourceBundle("uk/chromis/reports/inventory_messages");
-
-report.setSentence("SELECT " +
- "STOCKCURRENT.LOCATION AS LOCATIONID, " +
- "LOCATIONS.NAME AS LOCATIONNAME, " +
- "PRODUCTS.REFERENCE, " +
- "PRODUCTS.NAME AS PRODUCTNAME, " +
- "PRODUCTS.CATEGORY, " +
- "CATEGORIES.NAME AS CATEGORYNAME, " +
- "SUM(STOCKCURRENT.UNITS) AS UNITS, " +
- "PRODUCTS.PRICEBUY, " +
- "PRODUCTS.PRICESELL, " +
- "COALESCE(PRODUCTS.STOCKVOLUME, 0) AS STOCKVOLUME, " +
- "COALESCE(PRODUCTS.STOCKCOST, 0) AS STOCKCOST, " +
- "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
- "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM " +
- "FROM STOCKCURRENT " +
- "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
- "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
- "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
- "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
- "WHERE ?(QBF_FILTER) " +
- "GROUP BY STOCKCURRENT.LOCATION, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, PRODUCTS.STOCKVOLUME, PRODUCTS.STOCKCOST, STOCKLEVEL.STOCKSECURITY, STOCKLEVEL.STOCKMAXIMUM " +
- "ORDER BY STOCKCURRENT.LOCATION, CATEGORIES.NAME, PRODUCTS.NAME");
-
-report.addParameter("PRODUCTS.NAME");
-report.addParameter("PRODUCTS.PRICEBUY");
-report.addParameter("PRODUCTS.PRICESELL");
-report.addParameter("PRODUCTS.CATEGORY");
-report.addParameter("PRODUCTS.CODE");
-report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter());
-
-report.addParameter("STOCKCURRENT.LOCATION");
-report.addQBFFilter(new uk.chromis.pos.reports.JParamsLocationWithFirst());
-
-report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
-report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("STOCKVOLUME", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("STOCKCOST", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
diff --git a/reports/uk/chromis/reports/inventory.jrxml b/reports/uk/chromis/reports/inventory.jrxml
deleted file mode 100644
index ab60f1cc..00000000
--- a/reports/uk/chromis/reports/inventory.jrxml
+++ /dev/null
@@ -1,729 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- = $F{STOCKSECURITY}.doubleValue())]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $F{STOCKMAXIMUM}.doubleValue())]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $F{STOCKMAXIMUM}.doubleValue())]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- = $F{STOCKSECURITY}.doubleValue()
- && $F{UNITS}.doubleValue()<= $F{STOCKMAXIMUM}.doubleValue())]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/inventory_messages.properties b/reports/uk/chromis/reports/inventory_messages.properties
deleted file mode 100644
index 4cdf11e7..00000000
--- a/reports/uk/chromis/reports/inventory_messages.properties
+++ /dev/null
@@ -1,30 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Inventory: Location and Category
-label.printed=Printed
-label.ref=Ref.
-label.name=Name
-label.sec=Minimum
-label.units=Units
-label.valuebuy=Cost Value
-label.valuesell=Retail Value
-label.valuevolume=Volume
-label.valuecost=Cost
-label.max=Maximum
-label.location=Location :
diff --git a/reports/uk/chromis/reports/inventoryb.bs b/reports/uk/chromis/reports/inventoryb.bs
deleted file mode 100644
index 1ff852a4..00000000
--- a/reports/uk/chromis/reports/inventoryb.bs
+++ /dev/null
@@ -1,64 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.Inventory2");
-report.setReport("/uk/chromis/reports/inventoryb");
-report.setResourceBundle("uk/chromis/reports/inventoryb_messages");
-
-report.setSentence("SELECT " +
- "STOCKCURRENT.LOCATION AS LOCATIONID, " +
- "LOCATIONS.NAME AS LOCATIONNAME, " +
- "PRODUCTS.REFERENCE, " +
- "PRODUCTS.NAME AS NAME, " +
- "PRODUCTS.CATEGORY, " +
- "CATEGORIES.NAME AS CATEGORYNAME, " +
- "SUM(STOCKCURRENT.UNITS) AS UNITS, " +
- "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
- "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM " +
- "FROM STOCKCURRENT " +
- "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
- "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
- "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
- "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
- "WHERE ?(QBF_FILTER) " +
- "GROUP BY STOCKCURRENT.LOCATION, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, STOCKLEVEL.STOCKSECURITY, STOCKLEVEL.STOCKMAXIMUM " +
- "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME, STOCKCURRENT.LOCATION");
-
-report.addParameter("PRODUCTS.NAME");
-report.addParameter("PRODUCTS.PRICEBUY");
-report.addParameter("PRODUCTS.PRICESELL");
-report.addParameter("PRODUCTS.CATEGORY");
-report.addParameter("PRODUCTS.CODE");
-report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter());
-report.addParameter("STOCKCURRENT.LOCATION");
-report.addQBFFilter(new uk.chromis.pos.reports.JParamsLocationWithFirst());
-
-report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
-report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
-
diff --git a/reports/uk/chromis/reports/inventoryb.jrxml b/reports/uk/chromis/reports/inventoryb.jrxml
deleted file mode 100644
index f78188f3..00000000
--- a/reports/uk/chromis/reports/inventoryb.jrxml
+++ /dev/null
@@ -1,407 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- = $F{STOCKSECURITY}.doubleValue()
- && $F{UNITS}.doubleValue()<= $F{STOCKMAXIMUM}.doubleValue())]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $F{STOCKMAXIMUM}.doubleValue())]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/inventoryb_messages.properties b/reports/uk/chromis/reports/inventoryb_messages.properties
deleted file mode 100644
index 92580c13..00000000
--- a/reports/uk/chromis/reports/inventoryb_messages.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Inventory: Current
-label.titleb=Inventory: Broken
-label.ref=Ref.
-label.name=Name
-label.printed=Printed
-label.sec=Minimum
-label.units=Units
-label.max=Maximum
diff --git a/reports/uk/chromis/reports/inventorybroken.bs b/reports/uk/chromis/reports/inventorybroken.bs
deleted file mode 100644
index 2ac7fa80..00000000
--- a/reports/uk/chromis/reports/inventorybroken.bs
+++ /dev/null
@@ -1,65 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.InventoryBroken");
-report.setReport("/uk/chromis/reports/inventoryb");
-report.setResourceBundle("uk/chromis/reports/inventoryb_messages");
-
-report.setSentence("SELECT " +
- "STOCKCURRENT.LOCATION AS LOCATIONID, " +
- "LOCATIONS.NAME AS LOCATIONNAME, " +
- "PRODUCTS.REFERENCE, " +
- "PRODUCTS.NAME AS NAME, " +
- "PRODUCTS.CATEGORY, " +
- "CATEGORIES.NAME AS CATEGORYNAME, " +
- "SUM(STOCKCURRENT.UNITS) AS UNITS, " +
- "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
- "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM " +
- "FROM STOCKCURRENT " +
- "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
- "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
- "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
- "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
- "WHERE ?(QBF_FILTER) " +
- "GROUP BY STOCKCURRENT.LOCATION, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, STOCKLEVEL.STOCKSECURITY, STOCKLEVEL.STOCKMAXIMUM " +
- "HAVING STOCKLEVEL.STOCKSECURITY IS NOT NULL AND STOCKLEVEL.STOCKSECURITY >= SUM(STOCKCURRENT.UNITS) " +
- "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME, STOCKCURRENT.LOCATION");
-
-report.addParameter("PRODUCTS.NAME");
-report.addParameter("PRODUCTS.PRICEBUY");
-report.addParameter("PRODUCTS.PRICESELL");
-report.addParameter("PRODUCTS.CATEGORY");
-report.addParameter("PRODUCTS.CODE");
-report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter());
-report.addParameter("STOCKCURRENT.LOCATION");
-report.addQBFFilter(new uk.chromis.pos.reports.JParamsLocationWithFirst());
-
-report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
-report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
-
diff --git a/reports/uk/chromis/reports/inventorydiff.bs b/reports/uk/chromis/reports/inventorydiff.bs
deleted file mode 100644
index e44a0008..00000000
--- a/reports/uk/chromis/reports/inventorydiff.bs
+++ /dev/null
@@ -1,71 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.InventoryDiff");
-report.setReport("/uk/chromis/reports/inventorydiff");
-report.setResourceBundle("uk/chromis/reports/inventorydiff_messages");
-
-report.setSentence("SELECT " +
- "LOCATIONS.ID AS LOCATIONID, LOCATIONS.NAME AS LOCATIONNAME, " +
- "PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME AS CATEGORYNAME, " +
- "SUM(CASE WHEN STOCKDIARY.UNITS <0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSOUT, " +
- "SUM(CASE WHEN STOCKDIARY.UNITS <0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALOUT, " +
- "SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSIN, " +
- "SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALIN, " +
- "SUM(STOCKDIARY.UNITS) AS UNITSDIFF, " +
- "SUM(STOCKDIARY.UNITS * STOCKDIARY.PRICE) AS TOTALDIFF " +
- "FROM STOCKDIARY JOIN LOCATIONS ON STOCKDIARY.LOCATION = LOCATIONS.ID, " +
- "PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
- "WHERE PRODUCTS.ID = STOCKDIARY.PRODUCT " +
- "AND ?(QBF_FILTER) " +
- "GROUP BY LOCATIONS.ID, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME " +
- "ORDER BY LOCATIONS.ID, CATEGORIES.NAME, PRODUCTS.NAME");
-
-report.addParameter("STOCKDIARY.DATENEW");
-report.addParameter("STOCKDIARY.DATENEW");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-
-report.addParameter("LOCATIONS.ID");
-report.addQBFFilter(new uk.chromis.pos.reports.JParamsLocationWithFirst());
-
-report.addParameter("STOCKDIARY.REASON");
-report.addQBFFilter(new uk.chromis.pos.reports.JParamsReason());
-
-report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
-report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("UNITSOUT", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("TOTALOUT", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("UNITSIN", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("TOTALIN", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("UNITSDIFF", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("TOTALDIFF", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
-
diff --git a/reports/uk/chromis/reports/inventorydiff.jrxml b/reports/uk/chromis/reports/inventorydiff.jrxml
deleted file mode 100644
index 045e2533..00000000
--- a/reports/uk/chromis/reports/inventorydiff.jrxml
+++ /dev/null
@@ -1,628 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
- =0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSIN,
-SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALIN,
-SUM(STOCKDIARY.UNITS) AS UNITSDIFF,
-SUM(STOCKDIARY.UNITS * STOCKDIARY.PRICE) AS TOTALDIFF
-FROM
-STOCKDIARY JOIN LOCATIONS ON STOCKDIARY.LOCATION = LOCATIONS.ID,
-PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID
-WHERE PRODUCTS.REFERENCE = STOCKDIARY.PRODUCT
-
-GROUP BY LOCATIONS.ID, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME
-ORDER BY LOCATIONS.ID, CATEGORIES.NAME, PRODUCTS.NAME]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/inventorydiff_messages.properties b/reports/uk/chromis/reports/inventorydiff_messages.properties
deleted file mode 100644
index ccc2e278..00000000
--- a/reports/uk/chromis/reports/inventorydiff_messages.properties
+++ /dev/null
@@ -1,30 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Inventory: Difference
-label.printed=Printed
-label.period=Period:
-label.ref=Ref.
-label.name=Name
-label.in=In
-label.out=Out
-label.diff=Difference
-label.sumin=Total In
-label.sumout=Total Out
-label.sumdiff=Total Difference
diff --git a/reports/uk/chromis/reports/inventorydiffdetail.bs b/reports/uk/chromis/reports/inventorydiffdetail.bs
deleted file mode 100644
index b27af87f..00000000
--- a/reports/uk/chromis/reports/inventorydiffdetail.bs
+++ /dev/null
@@ -1,76 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.InventoryDiffDetail");
-report.setReport("/uk/chromis/reports/inventorydiffdetail");
-report.setResourceBundle("uk/chromis/reports/inventorydiffdetail_messages");
-
-report.setSentence("SELECT " +
- "LOCATIONS.ID AS LOCATIONID, LOCATIONS.NAME AS LOCATIONNAME, " +
- "PRODUCTS.REFERENCE, PRODUCTS.NAME, " +
- "STOCKDIARY.ATTRIBUTESETINSTANCE_ID, ATTRIBUTESETINSTANCE.DESCRIPTION, " +
- "PRODUCTS.CATEGORY, CATEGORIES.NAME AS CATEGORYNAME, " +
- "SUM(CASE WHEN STOCKDIARY.UNITS <0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSOUT, " +
- "SUM(CASE WHEN STOCKDIARY.UNITS <0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALOUT, " +
- "SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSIN, " +
- "SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALIN, " +
- "SUM(STOCKDIARY.UNITS) AS UNITSDIFF, " +
- "SUM(STOCKDIARY.UNITS * STOCKDIARY.PRICE) AS TOTALDIFF " +
- "FROM STOCKDIARY " +
- "JOIN LOCATIONS ON STOCKDIARY.LOCATION = LOCATIONS.ID " +
- "JOIN PRODUCTS ON PRODUCTS.ID = STOCKDIARY.PRODUCT " +
- "LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
- "LEFT OUTER JOIN ATTRIBUTESETINSTANCE ON STOCKDIARY.ATTRIBUTESETINSTANCE_ID = ATTRIBUTESETINSTANCE.ID " +
- "WHERE ?(QBF_FILTER) " +
- "GROUP BY LOCATIONS.ID, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, STOCKDIARY.ATTRIBUTESETINSTANCE_ID, ATTRIBUTESETINSTANCE.DESCRIPTION " +
- "ORDER BY LOCATIONS.ID, CATEGORIES.NAME, PRODUCTS.NAME");
-
-report.addParameter("STOCKDIARY.DATENEW");
-report.addParameter("STOCKDIARY.DATENEW");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-
-report.addParameter("LOCATIONS.ID");
-report.addQBFFilter(new uk.chromis.pos.reports.JParamsLocationWithFirst());
-
-report.addParameter("STOCKDIARY.REASON");
-report.addQBFFilter(new uk.chromis.pos.reports.JParamsReason());
-
-report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
-report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("ATTINSTANCEID", uk.chromis.data.loader.Datas.STRING);
-report.addField("ATTINSTANCEDESC", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("UNITSOUT", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("TOTALOUT", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("UNITSIN", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("TOTALIN", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("UNITSDIFF", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("TOTALDIFF", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/inventorydiffdetail.jrxml b/reports/uk/chromis/reports/inventorydiffdetail.jrxml
deleted file mode 100644
index 5d96db15..00000000
--- a/reports/uk/chromis/reports/inventorydiffdetail.jrxml
+++ /dev/null
@@ -1,660 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
- =0 THEN STOCKDIARY.UNITS ELSE 0 END) AS UNITSIN,
-SUM(CASE WHEN STOCKDIARY.UNITS >=0 THEN STOCKDIARY.UNITS * STOCKDIARY.PRICE ELSE 0 END) AS TOTALIN,
-SUM(STOCKDIARY.UNITS) AS UNITSDIFF,
-SUM(STOCKDIARY.UNITS * STOCKDIARY.PRICE) AS TOTALDIFF
-FROM STOCKDIARY
-JOIN LOCATIONS ON STOCKDIARY.LOCATION = LOCATIONS.ID
-JOIN PRODUCTS ON PRODUCTS.ID = STOCKDIARY.PRODUCT
-LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID
-LEFT OUTER JOIN ATTRIBUTESETINSTANCE ON STOCKDIARY.ATTRIBUTESETINSTANCE_ID = ATTRIBUTESETINSTANCE.ID
-
-GROUP BY LOCATIONS.ID, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, STOCKDIARY.ATTRIBUTESETINSTANCE_ID, ATTRIBUTESETINSTANCE.DESCRIPTION
-ORDER BY LOCATIONS.ID, CATEGORIES.NAME, PRODUCTS.NAME]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/inventorydiffdetail_messages.properties b/reports/uk/chromis/reports/inventorydiffdetail_messages.properties
deleted file mode 100644
index 6b9bf5cb..00000000
--- a/reports/uk/chromis/reports/inventorydiffdetail_messages.properties
+++ /dev/null
@@ -1,30 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Inventory: Difference Detail
-label.printed=Printed
-label.period=Period
-label.ref=Ref.
-label.name=Name
-label.in=In
-label.out=Out
-label.diff=Difference
-label.sumin=Total In
-label.sumout=Total Out
-label.sumdiff=Total Difference
diff --git a/reports/uk/chromis/reports/inventorylistdetail.bs b/reports/uk/chromis/reports/inventorylistdetail.bs
deleted file mode 100644
index 4bc0a710..00000000
--- a/reports/uk/chromis/reports/inventorylistdetail.bs
+++ /dev/null
@@ -1,67 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.InventoryListDetail");
-report.setReport("/uk/chromis/reports/inventorylistdetail");
-report.setResourceBundle("uk/chromis/reports/inventorylistdetail_messages");
-
-report.setSentence("SELECT " +
- "STOCKCURRENT.LOCATION AS LOCATIONID, " +
- "LOCATIONS.NAME AS LOCATIONNAME, " +
- "PRODUCTS.REFERENCE, " +
- "PRODUCTS.NAME AS NAME, " +
- "STOCKCURRENT.ATTRIBUTESETINSTANCE_ID, " +
- "ATTRIBUTESETINSTANCE.DESCRIPTION, " +
- "PRODUCTS.CATEGORY, " +
- "CATEGORIES.NAME AS CATEGORYNAME, " +
- "STOCKCURRENT.UNITS, " +
- "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
- "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM " +
- "FROM STOCKCURRENT " +
- "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
- "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
- "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
- "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
- "LEFT OUTER JOIN ATTRIBUTESETINSTANCE ON STOCKCURRENT.ATTRIBUTESETINSTANCE_ID = ATTRIBUTESETINSTANCE.ID " +
- "WHERE ?(QBF_FILTER) " +
- "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME, STOCKCURRENT.LOCATION");
-
-report.addParameter("PRODUCTS.NAME");
-report.addParameter("PRODUCTS.PRICEBUY");
-report.addParameter("PRODUCTS.PRICESELL");
-report.addParameter("PRODUCTS.CATEGORY");
-report.addParameter("PRODUCTS.CODE");
-report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter());
-report.addParameter("STOCKCURRENT.LOCATION");
-report.addQBFFilter(new uk.chromis.pos.reports.JParamsLocationWithFirst());
-
-report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
-report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("ATTINSTANCEID", uk.chromis.data.loader.Datas.STRING);
-report.addField("ATTINSTANCEDESC", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/inventorylistdetail.jrxml b/reports/uk/chromis/reports/inventorylistdetail.jrxml
deleted file mode 100644
index e5a61506..00000000
--- a/reports/uk/chromis/reports/inventorylistdetail.jrxml
+++ /dev/null
@@ -1,451 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $F{STOCKMAXIMUM}.doubleValue()
-? uk.chromis.format.Formats.DOUBLE.formatValue($V{UNITSTOTALWAREHOUSE})
-: ""]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
- = $F{STOCKSECURITY}.doubleValue()
- && $V{UNITSTOTALWAREHOUSE}.doubleValue()<= $F{STOCKMAXIMUM}.doubleValue()
-? uk.chromis.format.Formats.DOUBLE.formatValue($V{UNITSTOTALWAREHOUSE})
-: ""]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/inventorylistdetail_messages.properties b/reports/uk/chromis/reports/inventorylistdetail_messages.properties
deleted file mode 100644
index 233764d9..00000000
--- a/reports/uk/chromis/reports/inventorylistdetail_messages.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title= Inventory: List Detail
-label.printed: Printed
-label.ref=Ref.
-label.name=Name
-label.sec=Minimum
-label.units=Units
-label.max=Maximum
diff --git a/reports/uk/chromis/reports/inventoryreorder.bs b/reports/uk/chromis/reports/inventoryreorder.bs
deleted file mode 100644
index bb5e5727..00000000
--- a/reports/uk/chromis/reports/inventoryreorder.bs
+++ /dev/null
@@ -1,72 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.InventoryReOrder");
-report.setReport("/uk/chromis/reports/inventoryreorder");
-report.setResourceBundle("uk/chromis/reports/inventoryreorder_messages");
-
-report.setSentence("SELECT " +
- "STOCKCURRENT.LOCATION AS LOCATIONID, " +
- "LOCATIONS.NAME AS LOCATIONNAME, " +
- "PRODUCTS.REFERENCE, " +
- "PRODUCTS.NAME AS PRODUCTNAME, " +
- "PRODUCTS.CATEGORY, " +
- "CATEGORIES.NAME AS CATEGORYNAME, " +
- "SUM(STOCKCURRENT.UNITS) AS UNITS, " +
- "PRODUCTS.PRICEBUY, " +
- "PRODUCTS.PRICESELL, " +
- "COALESCE(PRODUCTS.STOCKVOLUME, 0) AS STOCKVOLUME, " +
- "COALESCE(PRODUCTS.STOCKCOST, 0) AS STOCKCOST, " +
- "COALESCE(STOCKLEVEL.STOCKSECURITY, 0) AS STOCKSECURITY, " +
- "COALESCE(STOCKLEVEL.STOCKMAXIMUM, 0) AS STOCKMAXIMUM " +
- "FROM STOCKCURRENT " +
- "JOIN LOCATIONS ON STOCKCURRENT.LOCATION = LOCATIONS.ID " +
- "JOIN PRODUCTS ON STOCKCURRENT.PRODUCT = PRODUCTS.ID " +
- "JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
- "LEFT OUTER JOIN STOCKLEVEL ON STOCKCURRENT.LOCATION = STOCKLEVEL.LOCATION AND STOCKCURRENT.PRODUCT = STOCKLEVEL.PRODUCT " +
- "WHERE ( UNITS < STOCKLEVEL.STOCKSECURITY ) AND ?(QBF_FILTER) " +
- "GROUP BY STOCKCURRENT.LOCATION, LOCATIONS.NAME, PRODUCTS.REFERENCE, PRODUCTS.NAME, PRODUCTS.CATEGORY, CATEGORIES.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, PRODUCTS.STOCKVOLUME, PRODUCTS.STOCKCOST, STOCKLEVEL.STOCKSECURITY, STOCKLEVEL.STOCKMAXIMUM " +
- "ORDER BY STOCKCURRENT.LOCATION, CATEGORIES.NAME, PRODUCTS.NAME");
-
-report.addParameter("PRODUCTS.NAME");
-report.addParameter("PRODUCTS.PRICEBUY");
-report.addParameter("PRODUCTS.PRICESELL");
-report.addParameter("PRODUCTS.CATEGORY");
-report.addParameter("PRODUCTS.CODE");
-report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter());
-
-report.addParameter("STOCKCURRENT.LOCATION");
-report.addQBFFilter(new uk.chromis.pos.reports.JParamsLocationWithFirst());
-
-report.addField("LOCATIONID", uk.chromis.data.loader.Datas.STRING);
-report.addField("LOCATIONNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("STOCKVOLUME", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("STOCKCOST", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("STOCKSECURITY", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("STOCKMAXIMUM", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
diff --git a/reports/uk/chromis/reports/inventoryreorder.jrxml b/reports/uk/chromis/reports/inventoryreorder.jrxml
deleted file mode 100644
index ab60f1cc..00000000
--- a/reports/uk/chromis/reports/inventoryreorder.jrxml
+++ /dev/null
@@ -1,729 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- = $F{STOCKSECURITY}.doubleValue())]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $F{STOCKMAXIMUM}.doubleValue())]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $F{STOCKMAXIMUM}.doubleValue())]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- = $F{STOCKSECURITY}.doubleValue()
- && $F{UNITS}.doubleValue()<= $F{STOCKMAXIMUM}.doubleValue())]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/inventoryreorder_messages.properties b/reports/uk/chromis/reports/inventoryreorder_messages.properties
deleted file mode 100644
index 9f06ad4c..00000000
--- a/reports/uk/chromis/reports/inventoryreorder_messages.properties
+++ /dev/null
@@ -1,30 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Inventory: Re-Order
-label.printed=Printed
-label.ref=Ref.
-label.name=Name
-label.sec=Minimum
-label.units=Units
-label.valuebuy=Cost Value
-label.valuesell=Retail Value
-label.valuevolume=Volume
-label.valuecost=Cost
-label.max=Maximum
-label.location=Location :
diff --git a/reports/uk/chromis/reports/missingdata.bs b/reports/uk/chromis/reports/missingdata.bs
deleted file mode 100644
index 36c42af3..00000000
--- a/reports/uk/chromis/reports/missingdata.bs
+++ /dev/null
@@ -1,43 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-
-//
-
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.MissingData");
-report.setReport("/uk/chromis/reports/missingdata");
-report.setResourceBundle("uk/chromis/reports/missingdata_messages");
-
-report.setSentence("SELECT CSVIMPORT.ROWNUMBER, CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
- "CSVIMPORT.NAME, CSVIMPORT.PRICEBUY, CSVIMPORT.PRICESELL"+
- " FROM CSVIMPORT WHERE CSVIMPORT.CSVERROR='Missing data or Invalid number'");
-
-
-
-report.addField("rownumber", uk.chromis.data.loader.Datas.STRING);
-report.addField("reference", uk.chromis.data.loader.Datas.STRING);
-report.addField("code", uk.chromis.data.loader.Datas.STRING);
-report.addField("name", uk.chromis.data.loader.Datas.STRING);
-report.addField("pricebuy", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("pricesell", uk.chromis.data.loader.Datas.DOUBLE);
-
-
-report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/missingdata.jrxml b/reports/uk/chromis/reports/missingdata.jrxml
deleted file mode 100644
index 5af52eb7..00000000
--- a/reports/uk/chromis/reports/missingdata.jrxml
+++ /dev/null
@@ -1,218 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/missingdata_messages.properties b/reports/uk/chromis/reports/missingdata_messages.properties
deleted file mode 100644
index b526d5aa..00000000
--- a/reports/uk/chromis/reports/missingdata_messages.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Missing data or Invalid Price in file
-label.reference=Reference
-label.barcode=Barcode
-label.name=Name
-label.pricebuy=Buy Price
-label.pricesell=Sell Price
-label.row=Row in file
diff --git a/reports/uk/chromis/reports/newproducts.bs b/reports/uk/chromis/reports/newproducts.bs
deleted file mode 100644
index de13e901..00000000
--- a/reports/uk/chromis/reports/newproducts.bs
+++ /dev/null
@@ -1,43 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-
-//
-
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.NewProducts");
-report.setReport("/uk/chromis/reports/newproducts");
-report.setResourceBundle("uk/chromis/reports/newproducts_messages");
-
-report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
- "CSVIMPORT.NAME, CSVIMPORT.PRICEBUY, CSVIMPORT.PRICESELL,"+
- "CSVIMPORT.CATEGORY FROM CSVIMPORT WHERE CSVIMPORT.CSVERROR='New product'");
-
-
-
-report.addField("reference", uk.chromis.data.loader.Datas.STRING);
-report.addField("code", uk.chromis.data.loader.Datas.STRING);
-report.addField("name", uk.chromis.data.loader.Datas.STRING);
-report.addField("pricebuy", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("pricesell", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("category",uk.chromis.data.loader.Datas.STRING);
-
-
-report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/newproducts.jrxml b/reports/uk/chromis/reports/newproducts.jrxml
deleted file mode 100644
index 02746cbc..00000000
--- a/reports/uk/chromis/reports/newproducts.jrxml
+++ /dev/null
@@ -1,218 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/newproducts_messages.properties b/reports/uk/chromis/reports/newproducts_messages.properties
deleted file mode 100644
index 9cc85c7e..00000000
--- a/reports/uk/chromis/reports/newproducts_messages.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=New Products Added
-label.reference=Reference
-label.barcode=Barcode
-label.category=Category
-label.name=Name
-label.pricebuy=Buy Price
-label.pricesell=Sell Price
-
diff --git a/reports/uk/chromis/reports/paymentreport.bs b/reports/uk/chromis/reports/paymentreport.bs
deleted file mode 100644
index 08c70512..00000000
--- a/reports/uk/chromis/reports/paymentreport.bs
+++ /dev/null
@@ -1,46 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.PaymentReport");
-report.setReport("/uk/chromis/reports/paymentreport");
-report.setResourceBundle("uk/chromis/reports/paymentreport_messages");
-
-report.setSentence("SELECT RECEIPTS.DATENEW,PAYMENTS.PAYMENT, PAYMENTS.NOTES, PAYMENTS.TOTAL "+
-"FROM PAYMENTS,RECEIPTS "+
-"WHERE PAYMENTS.RECEIPT = RECEIPTS.ID AND ?(QBF_FILTER) "+
-"ORDER BY RECEIPTS.DATENEW");
-
-report.addParameter("RECEIPTS.DATENEW");
-report.addParameter("RECEIPTS.DATENEW");
-//report.addParameter("PAYMENTS.PAYMENT");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-
-report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
-report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
-report.addField("NOTES", uk.chromis.data.loader.Datas.STRING);
-report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
diff --git a/reports/uk/chromis/reports/paymentreport.jrxml b/reports/uk/chromis/reports/paymentreport.jrxml
deleted file mode 100644
index e8351d63..00000000
--- a/reports/uk/chromis/reports/paymentreport.jrxml
+++ /dev/null
@@ -1,324 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/paymentreport_messages.properties b/reports/uk/chromis/reports/paymentreport_messages.properties
deleted file mode 100644
index 4091c8e6..00000000
--- a/reports/uk/chromis/reports/paymentreport_messages.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Payments
-label.printed=Printed
-label.period=Period:
-label.taxname=Tax Type
-label.ticket=Invoice No.
-label.date=Date
-label.paymentnotes=Notes
-label.paymenttype=Pay Type
-label.partialtotal=Total
-label.total=Grand Total
diff --git a/reports/uk/chromis/reports/people.bs b/reports/uk/chromis/reports/people.bs
deleted file mode 100644
index e25e760e..00000000
--- a/reports/uk/chromis/reports/people.bs
+++ /dev/null
@@ -1,34 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.UsersReport");
-report.setReport("/uk/chromis/reports/people");
-report.setResourceBundle("uk/chromis/reports/people_messages");
-
-report.setSentence("SELECT PEOPLE.ID, PEOPLE.NAME, PEOPLE.CARD, ROLES.NAME AS ROLE, PEOPLE.IMAGE " +
- "FROM PEOPLE, ROLES WHERE PEOPLE.ROLE = ROLES.ID AND PEOPLE.VISIBLE = " + app.getSession().DB.TRUE());
-
-report.addField("ID", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("CARD", uk.chromis.data.loader.Datas.STRING);
-report.addField("ROLE", uk.chromis.data.loader.Datas.STRING);
-report.addField("IMAGE", uk.chromis.data.loader.Datas.IMAGE);
-
-report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/people.jrxml b/reports/uk/chromis/reports/people.jrxml
deleted file mode 100644
index 85e521f1..00000000
--- a/reports/uk/chromis/reports/people.jrxml
+++ /dev/null
@@ -1,201 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
- '']]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/people_messages.properties b/reports/uk/chromis/reports/people_messages.properties
deleted file mode 100644
index 066a42e4..00000000
--- a/reports/uk/chromis/reports/people_messages.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Users
-label.printed=Printed
diff --git a/reports/uk/chromis/reports/performancereport.bs b/reports/uk/chromis/reports/performancereport.bs
deleted file mode 100644
index 52693f8d..00000000
--- a/reports/uk/chromis/reports/performancereport.bs
+++ /dev/null
@@ -1,43 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.PerformanceReport");
-report.setReport("/uk/chromis/reports/performancereport");
-report.setResourceBundle("uk/chromis/reports/performancereport_messages");
-
-report.setSentence("SELECT PEOPLE.NAME, MIN(RECEIPTS.DATENEW) AS STARTDATE, MAX(RECEIPTS.DATENEW) AS ENDDATE, SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL " +
- "FROM PEOPLE, RECEIPTS, TICKETS, TICKETLINES WHERE PEOPLE.ID = TICKETS.PERSON AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
- "GROUP BY PEOPLE.NAME ORDER BY PEOPLE.NAME");
-
-report.addParameter("RECEIPTS.DATENEW");
-report.addParameter("RECEIPTS.DATENEW");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("STARTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
-report.addField("ENDDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
-report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
diff --git a/reports/uk/chromis/reports/performancereport.jrxml b/reports/uk/chromis/reports/performancereport.jrxml
deleted file mode 100644
index f9dc89b4..00000000
--- a/reports/uk/chromis/reports/performancereport.jrxml
+++ /dev/null
@@ -1,371 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/performancereport_messages.properties b/reports/uk/chromis/reports/performancereport_messages.properties
deleted file mode 100644
index 0baca1e8..00000000
--- a/reports/uk/chromis/reports/performancereport_messages.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Performance Report
-label.printed=Printed
-label.period=Period
-label.user=User
-label.startdate=Start Date
-label.enddate=End Date
-label.cash=Cash Value
-label.total=Total:
diff --git a/reports/uk/chromis/reports/piesalescat.bs b/reports/uk/chromis/reports/piesalescat.bs
index 0fffdb10..25bfb407 100644
--- a/reports/uk/chromis/reports/piesalescat.bs
+++ b/reports/uk/chromis/reports/piesalescat.bs
@@ -1,20 +1,21 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+// uniCenta oPOS - Touch Friendly Point Of Sale
+// Copyright (c) 2009-(c) 2015-2016uniCenta & previous Openbravo POS works
+// http://www.unicenta.net
//
-// This file is part of chromis oPOS
+// This file is part of uniCenta oPOS
//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// uniCenta oPOS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// uniCenta oPOS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
+// You should have received a copy of the GNU General Public License
+// along with uniCenta oPOS. If not, see .
report = new uk.chromis.pos.reports.PanelReportBean();
@@ -41,6 +42,7 @@ report.addParameter("RECEIPTS.DATENEW");
paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
+// JG - 8 Jan 14 paramdates.setEndDate(uk.chromis.beans.DateUtils.getToday());
paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
report.addQBFFilter(paramdates);
diff --git a/reports/uk/chromis/reports/piesalescat.jrxml b/reports/uk/chromis/reports/piesalescat.jrxml
deleted file mode 100644
index 44428e44..00000000
--- a/reports/uk/chromis/reports/piesalescat.jrxml
+++ /dev/null
@@ -1,288 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
- '1'
-GROUP BY
- CATEGORIES.ID
-ORDER BY
- CATEGORIES.NAME ASC]]>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/piesalescat_messages.properties b/reports/uk/chromis/reports/piesalescat_messages.properties
deleted file mode 100644
index c73a1e1b..00000000
--- a/reports/uk/chromis/reports/piesalescat_messages.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Sales by Product Category
-label.printed=Printed
-label.period=Period:
-label.nocategory=(no Category defined)
-label.pietitleunit=Sales Qty Volume
-label.pietitlecost=Sales Cost Value
diff --git a/reports/uk/chromis/reports/productlabels.bs b/reports/uk/chromis/reports/productlabels.bs
deleted file mode 100644
index 3b2e1181..00000000
--- a/reports/uk/chromis/reports/productlabels.bs
+++ /dev/null
@@ -1,50 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.ProductLabels");
-report.setReport("/uk/chromis/reports/productlabels");
-report.setResourceBundle("uk/chromis/reports/productlabels_messages");
-
-report.setSentence("SELECT PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, PRODUCTS.CODETYPE, PRODUCTS.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, TC.ID AS TAXCAT, TC.NAME AS TAXCATNAME, CATEGORIES.ID AS CATEGORY, CATEGORIES.NAME AS CATEGORYNAME " +
- "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON PRODUCTS.TAXCAT = TC.ID " +
- "WHERE ?(QBF_FILTER) " +
- "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME");
-
-report.addParameter("PRODUCTS.NAME");
-report.addParameter("PRODUCTS.PRICEBUY");
-report.addParameter("PRODUCTS.PRICESELL");
-report.addParameter("PRODUCTS.CATEGORY");
-report.addParameter("PRODUCTS.CODE");
-report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter());
-
-report.addField("ID", uk.chromis.data.loader.Datas.STRING);
-report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
-report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
-report.addField("CODETYPE", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
-report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
-
-report;
-
diff --git a/reports/uk/chromis/reports/productlabels.jrxml b/reports/uk/chromis/reports/productlabels.jrxml
deleted file mode 100644
index 2c8853c8..00000000
--- a/reports/uk/chromis/reports/productlabels.jrxml
+++ /dev/null
@@ -1,268 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/productlabels_messages.properties b/reports/uk/chromis/reports/productlabels_messages.properties
deleted file mode 100644
index 6c08414b..00000000
--- a/reports/uk/chromis/reports/productlabels_messages.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Product Labels
-label.printed=Printed
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/products.bs b/reports/uk/chromis/reports/products.bs
deleted file mode 100644
index 32ea57ee..00000000
--- a/reports/uk/chromis/reports/products.bs
+++ /dev/null
@@ -1,50 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.Products");
-report.setReport("/uk/chromis/reports/products");
-report.setResourceBundle("uk/chromis/reports/products_messages");
-
-report.setSentence("SELECT PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, PRODUCTS.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, TC.ID AS TAXCAT, TC.NAME AS TAXCATNAME, CATEGORIES.ID AS CATEGORY, CATEGORIES.NAME AS CATEGORYNAME " +
- "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON PRODUCTS.TAXCAT = TC.ID " +
- "WHERE ?(QBF_FILTER) " +
- "ORDER BY CATEGORIES.NAME, PRODUCTS.NAME");
-
-report.addParameter("CATEGORIES.NAME");
-// report.addParameter("PRODUCTS.NAME");
-report.addParameter("PRODUCTS.PRICEBUY");
-report.addParameter("PRODUCTS.PRICESELL");
-report.addParameter("PRODUCTS.CATEGORY");
-report.addParameter("PRODUCTS.CODE");
-report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter());
-
-report.addField("ID", uk.chromis.data.loader.Datas.STRING);
-report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
-report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
-report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
-
-report;
-
diff --git a/reports/uk/chromis/reports/products.jrxml b/reports/uk/chromis/reports/products.jrxml
deleted file mode 100644
index e25da62e..00000000
--- a/reports/uk/chromis/reports/products.jrxml
+++ /dev/null
@@ -1,361 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/products_messages.properties b/reports/uk/chromis/reports/products_messages.properties
deleted file mode 100644
index f7275afd..00000000
--- a/reports/uk/chromis/reports/products_messages.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Products
-label.printed=Printed
-label.ref=Ref.
-label.name=Name
-label.cost=Cost
-label.price=Price Nett
-label.taxname=Tax
-label.taxrate=Tax Rate
-label.pricetax=Price Gross
diff --git a/reports/uk/chromis/reports/productsales.bs b/reports/uk/chromis/reports/productsales.bs
deleted file mode 100644
index 4e7bc816..00000000
--- a/reports/uk/chromis/reports/productsales.bs
+++ /dev/null
@@ -1,58 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.ProductSales");
-report.setReport("/uk/chromis/reports/productsales");
-report.setResourceBundle("uk/chromis/reports/productsales_messages");
-
-report.setSentence(
- "SELECT " +
- "PRODUCTS.REFERENCE, " +
- "PRODUCTS.NAME, " +
- "SUM(TICKETLINES.UNITS) AS UNITS, " +
- "SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL " +
- "FROM RECEIPTS, TICKETS, TICKETLINES, PRODUCTS " +
- "WHERE RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND TICKETLINES.PRODUCT = PRODUCTS.ID AND ?(QBF_FILTER) " +
- "GROUP BY PRODUCTS.REFERENCE, PRODUCTS.NAME " +
- "ORDER BY PRODUCTS.NAME");
-
-report.addParameter("RECEIPTS.DATENEW");
-report.addParameter("RECEIPTS.DATENEW");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-report.addParameter("PRODUCTS.NAME");
-report.addParameter("PRODUCTS.PRICEBUY");
-report.addParameter("PRODUCTS.PRICESELL");
-report.addParameter("PRODUCTS.CATEGORY");
-report.addParameter("PRODUCTS.CODE");
-report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter());
-
-report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
-
diff --git a/reports/uk/chromis/reports/productsales.jrxml b/reports/uk/chromis/reports/productsales.jrxml
deleted file mode 100644
index 2233cc61..00000000
--- a/reports/uk/chromis/reports/productsales.jrxml
+++ /dev/null
@@ -1,233 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/productsales_messages.properties b/reports/uk/chromis/reports/productsales_messages.properties
deleted file mode 100644
index 098f04e9..00000000
--- a/reports/uk/chromis/reports/productsales_messages.properties
+++ /dev/null
@@ -1,23 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Product Sales: Units
-label.printed=Printed
-label.period=Period:
-label.units=Units
-label.total=Total
diff --git a/reports/uk/chromis/reports/productsalesprofit.bs b/reports/uk/chromis/reports/productsalesprofit.bs
index e8233a58..3d899117 100644
--- a/reports/uk/chromis/reports/productsalesprofit.bs
+++ b/reports/uk/chromis/reports/productsalesprofit.bs
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
//
// This file is part of chromis oPOS
//
@@ -15,9 +15,8 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-// added by g.irura @ 27/03/2010.
-// CALCULATES PROFIT FOR EACH ITEM THAT IS SOLD AS WELL AS QUANTITY OF ITEMS OCCURRING IN THE PARTICULAR SALE
-// IF A PRICE ADJUSTMENT OCCURS, IT IS REFLECTED IN THE TRAIL OF RECEIPTS ON DATES. THE REPORT ALSO SHOWS THE TOTAL PROFITS MADE ON PRODUCTS/SERVICES SOLD
+//
+// PostgreSQL version
report = new uk.chromis.pos.reports.PanelReportBean();
@@ -25,9 +24,6 @@ report.setTitleKey("Menu.SalesProfit");
report.setReport("/uk/chromis/reports/productsalesprofit");
report.setResourceBundle("uk/chromis/reports/productsalesprofit_messages");
-
-
-
report.setSentence("SELECT PRODUCTS.REFERENCE, " +
"PRODUCTS.NAME, " +
"PRODUCTS.PRICEBUY, " +
@@ -47,9 +43,15 @@ report.setSentence("SELECT PRODUCTS.REFERENCE, " +
"LEFT OUTER JOIN PRODUCTS PRODUCTS " +
"ON (TICKETLINES.PRODUCT = PRODUCTS.ID) " +
"WHERE ?(QBF_FILTER) " +
- "GROUP BY TICKETLINES.PRODUCT " +
+ "GROUP BY TICKETLINES.PRODUCT, " +
+ "PRODUCTS.REFERENCE, " +
+ "PRODUCTS.NAME, " +
+ "PRODUCTS.PRICEBUY, " +
+ "PRODUCTS.PRICESELL " +
"ORDER BY PRODUCTS.REFERENCE ASC");
+
+
report.addParameter("RECEIPTS.DATENEW");
report.addParameter("RECEIPTS.DATENEW");
diff --git a/reports/uk/chromis/reports/productsalesprofit.jrxml b/reports/uk/chromis/reports/productsalesprofit.jrxml
deleted file mode 100644
index c700a3db..00000000
--- a/reports/uk/chromis/reports/productsalesprofit.jrxml
+++ /dev/null
@@ -1,416 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/productsalesprofit_1.bs b/reports/uk/chromis/reports/productsalesprofit_1.bs
deleted file mode 100644
index 1e5cd2c9..00000000
--- a/reports/uk/chromis/reports/productsalesprofit_1.bs
+++ /dev/null
@@ -1,72 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-// added by g.irura @ 27/03/2010.
-// CALCULATES PROFIT FOR EACH ITEM THAT IS SOLD AS WELL AS QUANTITY OF ITEMS OCCURRING IN THE PARTICULAR SALE
-// IF A PRICE ADJUSTMENT OCCURS, IT IS REFLECTED IN THE TRAIL OF RECEIPTS ON DATES. THE REPORT ALSO SHOWS THE TOTAL PROFITS MADE ON PRODUCTS/SERVICES SOLD
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.SalesProfit");
-report.setReport("/uk/chromis/reports/productsalesprofit");
-report.setResourceBundle("uk/chromis/reports/productsalesprofit_messages");
-
-// Amend: Janar Nagel Jan 2014
-
-
-
-report.setSentence("SELECT " +
- "PRODUCTS.NAME, " +
- "IFNULL((SELECT CODE FROM PRODUCTS WHERE ID = TICKETLINES.PRODUCT),'-') AS CODE, " +
- " TICKETS.TICKETID, " +
- "RECEIPTS.DATENEW AS DATE, " +
- "IFNULL(CAST((SELECT NAME FROM PRODUCTS WHERE ID = TICKETLINES.PRODUCT) AS CHAR(10000) CHARACTER SET utf8), " +
- "CAST(CONCAT(SUBSTR(TICKETLINES.ATTRIBUTES, " +
- "LOCATE('PRODUCT.NAME', TICKETLINES.ATTRIBUTES) + 14, " +
- "(LOCATE('%', TICKETLINES.ATTRIBUTES)-LOCATE('PRODUCT.NAME', TICKETLINES.ATTRIBUTES)-14)),'%') AS CHAR(10000) CHARACTER SET utf8)) AS NAME, " +
- "IFNULL((SELECT PRICEBUY FROM PRODUCTS WHERE ID = TICKETLINES.PRODUCT),0) AS PRICEBUY, " +
- "TICKETLINES.PRICE AS PRICESELL, " +
- "(TICKETLINES.UNITS) AS UNITSSOLD, " +
- "(TICKETLINES.UNITS*TICKETLINES.PRICE) AS TOTAL, " +
- "(TICKETLINES.UNITS*(TICKETLINES.PRICE-IFNULL((SELECT PRICEBUY FROM PRODUCTS WHERE ID = TICKETLINES.PRODUCT),0))) AS PROFITLOSS " +
- "FROM PRODUCTS, TICKETLINES " +
- "LEFT JOIN TICKETS ON TICKETS.ID = TICKETLINES.TICKET " +
- "LEFT JOIN RECEIPTS ON RECEIPTS.ID = TICKETS.ID " +
- "WHERE ?(QBF_FILTER) " +
- "ORDER BY PRODUCTS.NAME, RECEIPTS.DATENEW DESC");
-
-report.addParameter("RECEIPTS.DATENEW");
-report.addParameter("RECEIPTS.DATENEW");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-
-report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
-report.addField("TICKETID", uk.chromis.data.loader.Datas.INT);
-report.addField("DATE", uk.chromis.data.loader.Datas.TIMESTAMP);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("UNITSSOLD", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("PROFITLOSS", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/productsalesprofit_1.jrxml b/reports/uk/chromis/reports/productsalesprofit_1.jrxml
deleted file mode 100644
index adb7f848..00000000
--- a/reports/uk/chromis/reports/productsalesprofit_1.jrxml
+++ /dev/null
@@ -1,516 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/productsalesprofit_messages.properties b/reports/uk/chromis/reports/productsalesprofit_messages.properties
deleted file mode 100644
index 36cdfa7e..00000000
--- a/reports/uk/chromis/reports/productsalesprofit_messages.properties
+++ /dev/null
@@ -1,34 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Product Sales: Profit
-label.printed=Printed
-label.period=Period
-label.reference=Reference
-label.ticket=Ticket No.
-label.date=Date
-label.name=Product Name
-label.pricebuy=Buy
-label.pricesell=Sell
-label.soldunits=Units
-label.costvalue=Cost Value
-label.expectedsalesvalue=Expected Sales Value
-label.actualsalesvalue=Actual Sales Value
-label.expectedprofit=Expected Profit
-label.actualprofit=Actual Profit
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/productscatalog.bs b/reports/uk/chromis/reports/productscatalog.bs
index 94b94f06..f05aa94a 100644
--- a/reports/uk/chromis/reports/productscatalog.bs
+++ b/reports/uk/chromis/reports/productscatalog.bs
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
//
// This file is part of chromis oPOS
//
@@ -15,6 +15,8 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
+//
+// PostgreSQL version
report = new uk.chromis.pos.reports.PanelReportBean();
@@ -24,7 +26,7 @@ report.setResourceBundle("uk/chromis/reports/productscatalog_messages");
report.setSentence("SELECT PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, PRODUCTS.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, TC.ID AS TAXCAT, TC.NAME AS TAXCATNAME, CATEGORIES.ID AS CATEGORY, CATEGORIES.NAME AS CATEGORYNAME " +
"FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON PRODUCTS.TAXCAT = TC.ID " +
- "WHERE PRODUCTS.ISCATALOG = true AND ?(QBF_FILTER)" +
+ "WHERE PRODUCTS.ISCATALOG = TRUE AND ?(QBF_FILTER)" +
"ORDER BY CATEGORIES.NAME, PRODUCTS.CATORDER, PRODUCTS.NAME");
report.addParameter("PRODUCTS.NAME");
diff --git a/reports/uk/chromis/reports/productscatalog_messages.properties b/reports/uk/chromis/reports/productscatalog_messages.properties
deleted file mode 100644
index c2c33c1b..00000000
--- a/reports/uk/chromis/reports/productscatalog_messages.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Product Catalogue
-label.printed=Printed
-label.ref=Ref.
-label.name=Name
-label.cost=Cost
-label.price=Price Nett
-label.taxname=Tax
-label.taxrate=(No Tax Rate found)
-label.pricetax=Price Gross
diff --git a/reports/uk/chromis/reports/salebycustomer.bs b/reports/uk/chromis/reports/salebycustomer.bs
deleted file mode 100644
index 674b141e..00000000
--- a/reports/uk/chromis/reports/salebycustomer.bs
+++ /dev/null
@@ -1,60 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.SalesByCustomer");
-report.setReport("/uk/chromis/reports/salebycustomer");
-report.setResourceBundle("uk/chromis/reports/salebycustomer_messages");
-
-report.setSentence("SELECT " +
- "CUSTOMERS.NAME AS CNAME, " +
- "RECEIPTS.DATENEW, " +
- "TICKETS.TICKETID, " +
- "PRODUCTS.NAME AS PNAME, " +
- "TICKETS.TICKETTYPE, " +
- "SUM(TICKETLINES.UNITS) AS UNITS, " +
- "SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL " +
- "FROM RECEIPTS, CUSTOMERS, TICKETS, TICKETLINES LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
- "WHERE CUSTOMERS.ID = TICKETS.CUSTOMER AND TICKETLINES.PRODUCT = PRODUCTS.ID AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
- "GROUP BY CUSTOMERS.NAME, RECEIPTS.DATENEW, TICKETS.TICKETID, PRODUCTS.NAME, TICKETS.TICKETTYPE " +
- "ORDER BY CUSTOMERS.NAME, PRODUCTS.NAME, RECEIPTS.DATENEW");
-
-report.addParameter("RECEIPTS.DATENEW");
-report.addParameter("RECEIPTS.DATENEW");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-
-report.addParameter("CUSTOMERS.ID");
-report.addParameter("CUSTOMERS.NAME");
-report.addQBFFilter(new uk.chromis.pos.reports.JParamsCustomer());
-
-report.addField("CNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
-report.addField("TICKETID", uk.chromis.data.loader.Datas.STRING);
-report.addField("PNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("TICKETTYPE", uk.chromis.data.loader.Datas.INT);
-report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/salebycustomer.jrxml b/reports/uk/chromis/reports/salebycustomer.jrxml
deleted file mode 100644
index 7d928c44..00000000
--- a/reports/uk/chromis/reports/salebycustomer.jrxml
+++ /dev/null
@@ -1,471 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/salebycustomer_messages.properties b/reports/uk/chromis/reports/salebycustomer_messages.properties
deleted file mode 100644
index c141c514..00000000
--- a/reports/uk/chromis/reports/salebycustomer_messages.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Sales by Customer
-label.printed=Printed
-label.period=Period
-label.customer=Customer
-label.date=Date
-label.ticket=Ticket No.
-label.product=Product
-label.sales=Sales
-label.units=Units
-label.ttype=Type
-label.partialtotal=Amount
-label.total=Grand Total
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/salecatalog.bs b/reports/uk/chromis/reports/salecatalog.bs
index 6c88b286..aa21e67e 100644
--- a/reports/uk/chromis/reports/salecatalog.bs
+++ b/reports/uk/chromis/reports/salecatalog.bs
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
//
// This file is part of chromis oPOS
//
@@ -15,6 +15,8 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
+//
+// PostgreSQL version
report = new uk.chromis.pos.reports.PanelReportBean();
@@ -36,7 +38,7 @@ report.setSentence(
" PRODUCTS LEFT OUTER JOIN CATEGORIES ON " +
" PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON " +
" PRODUCTS.TAXCAT = TC.ID " +
-"WHERE PRODUCTS.ISCATALOG = true AND ?(QBF_FILTER) " +
+"WHERE PRODUCTS.ISCATALOG = TRUE AND ?(QBF_FILTER) " +
"ORDER BY CATEGORIES.NAME, PRODUCTS.NAME");
report.addParameter("PRODUCTS.NAME");
report.addParameter("PRODUCTS.PRICEBUY");
diff --git a/reports/uk/chromis/reports/salecatalog.jrxml b/reports/uk/chromis/reports/salecatalog.jrxml
deleted file mode 100644
index 49981dc2..00000000
--- a/reports/uk/chromis/reports/salecatalog.jrxml
+++ /dev/null
@@ -1,233 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/salecatalog_messages.properties b/reports/uk/chromis/reports/salecatalog_messages.properties
deleted file mode 100644
index 97f99945..00000000
--- a/reports/uk/chromis/reports/salecatalog_messages.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Product Catalogue
-label.printed=Printed
diff --git a/reports/uk/chromis/reports/saletaxes.bs b/reports/uk/chromis/reports/saletaxes.bs
deleted file mode 100644
index 1318b455..00000000
--- a/reports/uk/chromis/reports/saletaxes.bs
+++ /dev/null
@@ -1,53 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-// added by g.irura @ 27/03/2010. If a retailer issues item which is
-// taxable but gets back a refund, means when this happens, the tax
-// effected initially is deducted. all taxes occur in taxlines.amount
-// where the sum is obtained. It is therefore important to show on this
-// report the taxes that were charged on a receipt but later refunded
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.SaleTaxes");
-report.setReport("/uk/chromis/reports/saletaxes");
-report.setResourceBundle("uk/chromis/reports/saletaxes_messages");
-
-report.setSentence(
- "SELECT TICKETS.TICKETID,RECEIPTS.DATENEW, PAYMENTS.PAYMENT, TAXCATEGORIES.NAME, TAXLINES.AMOUNT "+
-"FROM RECEIPTS, TAXLINES, TAXES, TAXCATEGORIES,TICKETS, PAYMENTS " +
- "WHERE PAYMENTS.RECEIPT = RECEIPTS.ID AND RECEIPTS.ID = TAXLINES.RECEIPT AND RECEIPTS.ID=TICKETS.ID AND TAXLINES.TAXID = TAXES.ID AND TAXES.CATEGORY = TAXCATEGORIES.ID AND ?(QBF_FILTER) "+
- "ORDER BY RECEIPTS.DATENEW");
-
-report.addParameter("RECEIPTS.DATENEW");
-report.addParameter("RECEIPTS.DATENEW");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-
-report.addField("TICKETID", uk.chromis.data.loader.Datas.INT);
-report.addField("DATENEW", uk.chromis.data.loader.Datas.TIMESTAMP);
-report.addField("PAYMENT", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("AMOUNT", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/saletaxes.jrxml b/reports/uk/chromis/reports/saletaxes.jrxml
deleted file mode 100644
index 03e6b4ce..00000000
--- a/reports/uk/chromis/reports/saletaxes.jrxml
+++ /dev/null
@@ -1,346 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/saletaxes_messages.properties b/reports/uk/chromis/reports/saletaxes_messages.properties
deleted file mode 100644
index ccadc6d0..00000000
--- a/reports/uk/chromis/reports/saletaxes_messages.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-.
-
-label.title=Sales Taxes
-label.printed=Printed
-label.period=Period
-label.taxname=Tax Type
-label.ticket=Receipt No.
-label.date=Date
-label.paymenttype=Payment Type
-label.partialtotal=Total
-label.total=Grand Total
diff --git a/reports/uk/chromis/reports/shelfedgelabels.bs b/reports/uk/chromis/reports/shelfedgelabels.bs
deleted file mode 100644
index 525394ee..00000000
--- a/reports/uk/chromis/reports/shelfedgelabels.bs
+++ /dev/null
@@ -1,50 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.BarcodeSheet");
-report.setReport("/uk/chromis/reports/shelfedgelabels");
-report.setResourceBundle("uk/chromis/reports/barcodesheet_messages");
-
-report.setSentence("SELECT PRODUCTS.ID, PRODUCTS.REFERENCE, PRODUCTS.CODE, PRODUCTS.CODETYPE, PRODUCTS.NAME, PRODUCTS.PRICEBUY, PRODUCTS.PRICESELL, TC.ID AS TAXCAT, TC.NAME AS TAXCATNAME, CATEGORIES.ID AS CATEGORY, CATEGORIES.NAME AS CATEGORYNAME " +
- "FROM PRODUCTS LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES TC ON PRODUCTS.TAXCAT = TC.ID " +
- "WHERE ?(QBF_FILTER) " +
- "ORDER BY PRODUCTS.NAME");
-
-report.addParameter("PRODUCTS.NAME");
-report.addParameter("PRODUCTS.PRICEBUY");
-report.addParameter("PRODUCTS.PRICESELL");
-report.addParameter("PRODUCTS.CATEGORY");
-report.addParameter("PRODUCTS.CODE");
-report.addQBFFilter(new uk.chromis.pos.ticket.ProductFilter());
-
-report.addField("ID", uk.chromis.data.loader.Datas.STRING);
-report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
-report.addField("CODE", uk.chromis.data.loader.Datas.STRING);
-report.addField("CODETYPE", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("TAXCAT", uk.chromis.data.loader.Datas.STRING);
-report.addField("TAXCATNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORY", uk.chromis.data.loader.Datas.STRING);
-report.addField("CATEGORYNAME", uk.chromis.data.loader.Datas.STRING);
-
-report;
-
diff --git a/reports/uk/chromis/reports/shelfedgelabels.jrxml b/reports/uk/chromis/reports/shelfedgelabels.jrxml
deleted file mode 100644
index 05b2c7fd..00000000
--- a/reports/uk/chromis/reports/shelfedgelabels.jrxml
+++ /dev/null
@@ -1,52 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/stockchanges.bs b/reports/uk/chromis/reports/stockchanges.bs
index 84690c38..d1217f4a 100644
--- a/reports/uk/chromis/reports/stockchanges.bs
+++ b/reports/uk/chromis/reports/stockchanges.bs
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
//
// This file is part of chromis oPOS
//
@@ -15,7 +15,8 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
+//
+// PostgreSQL version
report = new uk.chromis.pos.reports.PanelReportBean();
@@ -26,7 +27,8 @@ report.setResourceBundle("uk/chromis/reports/stockchanges_messages");
report.setSentence("SELECT L.NAME AS LOCATION, C.USERNAME AS USERNAME,"+
" C.UPLOADTIME AS UPLOADTIME,"+
-" IFNULL(P.NAME, '***NEW PRODUCT') AS PRODUCT, P.REFERENCE AS REFERENCE,"+
+" CASE WHEN P.NAME is null THEN '***NEW PRODUCT' ELSE P.NAME END "+
+" AS PRODUCT, P.REFERENCE AS REFERENCE,"+
" CASE C.CHANGETYPE"+
" WHEN 1 THEN 'Adjust'"+
" WHEN 2 THEN 'Change'"+
diff --git a/reports/uk/chromis/reports/stockchanges.jrxml b/reports/uk/chromis/reports/stockchanges.jrxml
deleted file mode 100644
index be749367..00000000
--- a/reports/uk/chromis/reports/stockchanges.jrxml
+++ /dev/null
@@ -1,215 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/stockchanges_messages.properties b/reports/uk/chromis/reports/stockchanges_messages.properties
deleted file mode 100644
index f00ddba7..00000000
--- a/reports/uk/chromis/reports/stockchanges_messages.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Stock Changes
-label.reference=Reference
-label.barcode=Barcode
-label.name=Name
-label.csverror=Error message
-label.row=Row in file
-
diff --git a/reports/uk/chromis/reports/taxcatsales.bs b/reports/uk/chromis/reports/taxcatsales.bs
index f468a7eb..7b46b6a0 100644
--- a/reports/uk/chromis/reports/taxcatsales.bs
+++ b/reports/uk/chromis/reports/taxcatsales.bs
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
//
// This file is part of chromis oPOS
//
@@ -15,6 +15,8 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
+//
+// PostgreSQL version
report = new uk.chromis.pos.reports.PanelReportBean();
@@ -32,13 +34,13 @@ report.setSentence("SELECT " +
"SUM((TICKETLINES.PRICE * TAXES.RATE ) * TICKETLINES.UNITS) AS CATTAX, " +
"SUM((TICKETLINES.PRICE + TICKETLINES.PRICE * TAXES.RATE ) * TICKETLINES.UNITS) AS CATTOTAL " +
"FROM CLOSEDCASH, TAXES, TICKETLINES " +
- "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
"LEFT OUTER JOIN CATEGORIES ON PRODUCTS.CATEGORY = CATEGORIES.ID " +
"LEFT OUTER JOIN TICKETS ON TICKETS.ID = TICKETLINES.TICKET " +
"LEFT OUTER JOIN RECEIPTS ON RECEIPTS.ID = TICKETS.ID " +
- "WHERE CLOSEDCASH.MONEY = RECEIPTS.MONEY " +
+ "WHERE PRODUCTS.ISCATALOG = TRUE AND CLOSEDCASH.MONEY = RECEIPTS.MONEY " +
"AND TICKETLINES.TAXID = TAXES.ID " +
- "AND PRODUCTS.ISCATALOG = true AND ?(QBF_FILTER) " +
+ "AND ?(QBF_FILTER) " +
"GROUP BY CLOSEDCASH.HOST, CLOSEDCASH.MONEY, CLOSEDCASH.DATEEND, TAXES.NAME, CATEGORIES.NAME " +
"ORDER BY TAXES.NAME, CATEGORIES.NAME");
diff --git a/reports/uk/chromis/reports/taxcatsales.jrxml b/reports/uk/chromis/reports/taxcatsales.jrxml
deleted file mode 100644
index b6ab674b..00000000
--- a/reports/uk/chromis/reports/taxcatsales.jrxml
+++ /dev/null
@@ -1,442 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/taxcatsales_message.properties b/reports/uk/chromis/reports/taxcatsales_message.properties
deleted file mode 100644
index 3aed3977..00000000
--- a/reports/uk/chromis/reports/taxcatsales_message.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Tax Category Sales
-label.name=Category
-label.qty=Qty
-label.catsales=Sales
-label.cattax=Tax
-label.cattotal=Total
-label.total=Grand Total
-label.printed=Printed
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/taxcatsales_messages.properties b/reports/uk/chromis/reports/taxcatsales_messages.properties
deleted file mode 100644
index caad22d3..00000000
--- a/reports/uk/chromis/reports/taxcatsales_messages.properties
+++ /dev/null
@@ -1,26 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Tax: Category Sales
-label.name=Category
-label.qty=Qty
-label.catsales=Sales
-label.cattax=Tax
-label.cattotal=Total
-label.total=Grand Total
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/taxes.bs b/reports/uk/chromis/reports/taxes.bs
deleted file mode 100644
index fa678362..00000000
--- a/reports/uk/chromis/reports/taxes.bs
+++ /dev/null
@@ -1,47 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.ReportTaxes");
-report.setReport("/uk/chromis/reports/taxes");
-report.setResourceBundle("uk/chromis/reports/taxes_messages");
-
-report.setSentence(
- "SELECT TAXCATEGORIES.ID AS TAXID, TAXCATEGORIES.NAME AS TAXNAME, SUM(TAXLINES.AMOUNT) AS TOTALTAXES " +
- "FROM RECEIPTS, TAXLINES, TAXES, TAXCATEGORIES " +
- "WHERE RECEIPTS.ID = TAXLINES.RECEIPT AND TAXLINES.TAXID = TAXES.ID AND TAXES.CATEGORY = TAXCATEGORIES.ID " +
- "AND ?(QBF_FILTER) " +
- "GROUP BY TAXCATEGORIES.ID, TAXCATEGORIES.NAME");
-
-report.addParameter("RECEIPTS.DATENEW");
-report.addParameter("RECEIPTS.DATENEW");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-
-report.addQBFFilter(paramdates);
-
-report.addField("TAXID", uk.chromis.data.loader.Datas.STRING);
-report.addField("TAXNAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("TOTALTAXES", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
diff --git a/reports/uk/chromis/reports/taxes.jrxml b/reports/uk/chromis/reports/taxes.jrxml
deleted file mode 100644
index 126c6e42..00000000
--- a/reports/uk/chromis/reports/taxes.jrxml
+++ /dev/null
@@ -1,297 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/taxes_messages.properties b/reports/uk/chromis/reports/taxes_messages.properties
deleted file mode 100644
index 14fcd9e6..00000000
--- a/reports/uk/chromis/reports/taxes_messages.properties
+++ /dev/null
@@ -1,25 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Tax Summary
-label.printed=Printed
-label.period=Period
-label.taxid=ID
-label.taxname=Name
-label.taxtotal=Total
-label.total=Total Tax
diff --git a/reports/uk/chromis/reports/ticketsample.jrxml b/reports/uk/chromis/reports/ticketsample.jrxml
deleted file mode 100644
index 5cc3b2f9..00000000
--- a/reports/uk/chromis/reports/ticketsample.jrxml
+++ /dev/null
@@ -1,306 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/timeseriesproduct - Copy.jrxml b/reports/uk/chromis/reports/timeseriesproduct - Copy.jrxml
deleted file mode 100644
index f26abb4e..00000000
--- a/reports/uk/chromis/reports/timeseriesproduct - Copy.jrxml
+++ /dev/null
@@ -1,528 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/timeseriesproduct.bs b/reports/uk/chromis/reports/timeseriesproduct.bs
index eb8f5f11..c0100efd 100644
--- a/reports/uk/chromis/reports/timeseriesproduct.bs
+++ b/reports/uk/chromis/reports/timeseriesproduct.bs
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
//
// This file is part of chromis oPOS
//
@@ -15,6 +15,8 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
+//
+// PostgreSQL version
report = new uk.chromis.pos.reports.PanelReportBean();
@@ -39,11 +41,12 @@ report.setSentence("SELECT " +
"FROM RECEIPTS LEFT OUTER JOIN TICKETS ON RECEIPTS.ID = TICKETS.ID LEFT OUTER JOIN TICKETLINES ON " +
"TICKETS.ID = TICKETLINES.TICKET, PRODUCTS LEFT OUTER JOIN CATEGORIES ON " +
"PRODUCTS.CATEGORY = CATEGORIES.ID LEFT OUTER JOIN TAXCATEGORIES ON PRODUCTS.TAXCAT = TAXCATEGORIES.ID, " +
- "PEOPLE " +
- "WHERE PRODUCTS.ID = TICKETLINES.PRODUCT AND PEOPLE.ID = TICKETS.PERSON AND PRODUCTS.ISCATALOG = true AND ?(QBF_FILTER) " +
+ " PEOPLE " +
+ "WHERE PRODUCTS.ID = TICKETLINES.PRODUCT AND PEOPLE.ID = TICKETS.PERSON AND PRODUCTS.ISCATALOG = TRUE AND ?(QBF_FILTER) " +
"GROUP BY CATEGORIES.NAME, PRODUCTS.NAME, PRODUCTS.REFERENCE,PRODUCTS.CODE,PRODUCTS.PRICEBUY, " +
"PRODUCTS.PRICESELL, PRODUCTS.STOCKCOST,PRODUCTS.STOCKVOLUME, TAXCATEGORIES.ID, TAXCATEGORIES.NAME, PEOPLE.NAME, RECEIPTS.DATENEW " +
"ORDER BY CATEGORIES.NAME, PRODUCTS.NAME, RECEIPTS.DATENEW, PEOPLE.NAME");
+
report.addParameter("RECEIPTS.DATENEW");
report.addParameter("RECEIPTS.DATENEW");
diff --git a/reports/uk/chromis/reports/timeseriesproduct.jrxml b/reports/uk/chromis/reports/timeseriesproduct.jrxml
deleted file mode 100644
index 781e8f4a..00000000
--- a/reports/uk/chromis/reports/timeseriesproduct.jrxml
+++ /dev/null
@@ -1,528 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/timeseriesproduct_messages.properties b/reports/uk/chromis/reports/timeseriesproduct_messages.properties
deleted file mode 100644
index b5504557..00000000
--- a/reports/uk/chromis/reports/timeseriesproduct_messages.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Product Time Series
-label.printed=Printed
-label.period=Period:
-label.prodref=Reference
-label.prodpricebuy=Buy Price
-label.prodpricesell=Sell Price
-label.prodpriceselltax=Sell Price + Tax
-label.prodstockcost=Stock Cost by Year
-label.prodstockvol=Stock Volume
-label.taxcategory=Tax Category
-label.produnitsales=Unit Sales by Day
-label.margin=Margin
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/top10sales.bs b/reports/uk/chromis/reports/top10sales.bs
index 6162acda..f366c7f3 100644
--- a/reports/uk/chromis/reports/top10sales.bs
+++ b/reports/uk/chromis/reports/top10sales.bs
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+// Copyright (c) (c) 2015-2016 2016 Chromis , previous uniCenta & Openbravo POS works
//
// This file is part of chromis oPOS
//
@@ -27,10 +27,10 @@ report.setResourceBundle("uk/chromis/reports/top10sales_messages");
report.setSentence(
"SELECT " +
"PRODUCTS.REFERENCE,PRODUCTS.NAME,PRODUCTS.PRICEBUY,PRODUCTS.PRICESELL, " +
- "SUM(TICKETLINES.UNITS) AS UNITS, " +
- "SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) AS SUBTOTAL, " +
- "SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) * TAXES.RATE) As TAXES, " +
- "SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) + SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) * TAXES.RATE) AS GROSSTOTAL " +
+ "ROUND(SUM(TICKETLINES.UNITS)) AS UNITS, " +
+ "ROUND(SUM(TICKETLINES.PRICE * TICKETLINES.UNITS)) AS SUBTOTAL, " +
+ "ROUND(SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) * TAXES.RATE)) As TAXES, " +
+ "ROUND(SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) + SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) * TAXES.RATE)) AS GROSSTOTAL " +
"FROM TICKETLINES " +
"LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
"LEFT OUTER JOIN TICKETS ON TICKETS.ID = TICKETLINES.TICKET " +
@@ -42,7 +42,7 @@ report.setSentence(
"AND ?(QBF_FILTER) " +
"GROUP BY PRODUCTS.REFERENCE, PRODUCTS.NAME,PRODUCTS.PRICEBUY,PRODUCTS.PRICESELL " +
"ORDER BY GROSSTOTAL DESC " +
- "FETCH FIRST 10 ROWS ONLY");
+ "LIMIT 10");
report.addParameter("RECEIPTS.DATENEW");
report.addParameter("RECEIPTS.DATENEW");
diff --git a/reports/uk/chromis/reports/top10sales.jrxml b/reports/uk/chromis/reports/top10sales.jrxml
deleted file mode 100644
index e588413e..00000000
--- a/reports/uk/chromis/reports/top10sales.jrxml
+++ /dev/null
@@ -1,364 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/top10salesMySQL.bs b/reports/uk/chromis/reports/top10salesMySQL.bs
deleted file mode 100644
index 89c34915..00000000
--- a/reports/uk/chromis/reports/top10salesMySQL.bs
+++ /dev/null
@@ -1,66 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-//*** FOR DERBY DB ***//
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.Top10Sales");
-report.setReport("/uk/chromis/reports/top10sales");
-report.setResourceBundle("uk/chromis/reports/top10sales_messages");
-
-report.setSentence(
- "SELECT " +
- "PRODUCTS.REFERENCE,PRODUCTS.NAME,PRODUCTS.PRICEBUY,PRODUCTS.PRICESELL, " +
- "ROUND(SUM(TICKETLINES.UNITS)) AS UNITS, " +
- "ROUND(SUM(TICKETLINES.PRICE * TICKETLINES.UNITS)) AS SUBTOTAL, " +
- "ROUND(SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) * TAXES.RATE)) As TAXES, " +
- "ROUND(SUM(TICKETLINES.PRICE * TICKETLINES.UNITS) + SUM((TICKETLINES.PRICE * TICKETLINES.UNITS) * TAXES.RATE)) AS GROSSTOTAL " +
- "FROM TICKETLINES " +
- "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID " +
- "LEFT OUTER JOIN TICKETS ON TICKETS.ID = TICKETLINES.TICKET " +
- "LEFT OUTER JOIN RECEIPTS ON RECEIPTS.ID = TICKETS.ID, TAXES " +
- "WHERE RECEIPTS.ID = TICKETS.ID " +
- "AND TICKETS.ID = TICKETLINES.TICKET " +
- "AND TICKETLINES.PRODUCT = PRODUCTS.ID " +
- "AND TICKETLINES.TAXID = TAXES.ID " +
- "AND ?(QBF_FILTER) " +
- "GROUP BY PRODUCTS.REFERENCE, PRODUCTS.NAME,PRODUCTS.PRICEBUY,PRODUCTS.PRICESELL " +
- "ORDER BY GROSSTOTAL DESC " +
- "LIMIT 10");
-
-report.addParameter("RECEIPTS.DATENEW");
-report.addParameter("RECEIPTS.DATENEW");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-
-report.addField("REFERENCE", uk.chromis.data.loader.Datas.STRING);
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("UNITS", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("PRICEBUY", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("PRICESELL", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("SUBTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("TAXES", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("GROSSTOTAL", uk.chromis.data.loader.Datas.DOUBLE);
-report;
-
diff --git a/reports/uk/chromis/reports/top10sales_messages.properties b/reports/uk/chromis/reports/top10sales_messages.properties
deleted file mode 100644
index df180375..00000000
--- a/reports/uk/chromis/reports/top10sales_messages.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=Top 10 Sales
-label.printed=Printed
-label.period=Period:
-label.units=Units
-label.subtotal=Nett
-label.taxes=Tax
-label.total=Total
-label.pricebuy=Buy
-label.pricesell=Sell
diff --git a/reports/uk/chromis/reports/updatedprices.bs b/reports/uk/chromis/reports/updatedprices.bs
deleted file mode 100644
index 24c62004..00000000
--- a/reports/uk/chromis/reports/updatedprices.bs
+++ /dev/null
@@ -1,43 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-
-//
-
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.UpdatedPrices");
-report.setReport("/uk/chromis/reports/updatedprices");
-report.setResourceBundle("uk/chromis/reports/updatedprices_messages");
-
-report.setSentence("SELECT CSVIMPORT.REFERENCE, CSVIMPORT.CODE,"+
- "CSVIMPORT.NAME, CSVIMPORT.PRICEBUY,CSVIMPORT.PRICESELL,CSVIMPORT.PREVIOUSBUY,CSVIMPORT.PREVIOUSSELL"+
- " FROM CSVIMPORT WHERE CSVIMPORT.CSVERROR='Updated Price Details' ");
-
-
-
-report.addField("reference", uk.chromis.data.loader.Datas.STRING);
-report.addField("code", uk.chromis.data.loader.Datas.STRING);
-report.addField("name", uk.chromis.data.loader.Datas.STRING);
-report.addField("pricebuy", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("pricesell", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("previousbuy", uk.chromis.data.loader.Datas.DOUBLE);
-report.addField("previoussell", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
\ No newline at end of file
diff --git a/reports/uk/chromis/reports/updatedprices.jrxml b/reports/uk/chromis/reports/updatedprices.jrxml
deleted file mode 100644
index 493c5487..00000000
--- a/reports/uk/chromis/reports/updatedprices.jrxml
+++ /dev/null
@@ -1,259 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/updatedprices_messages.properties b/reports/uk/chromis/reports/updatedprices_messages.properties
deleted file mode 100644
index 62e269d9..00000000
--- a/reports/uk/chromis/reports/updatedprices_messages.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-label.title=Price Updates
-label.printed=Printed
-label.reference=Reference
-label.barcode=Barcode
-label.name=Name
-label.pricebuy=New Buy Price
-label.pricesell=New Sell Price
-label.previousbuy=Old Buy Price
-label.previoussell=Old Sell Price
diff --git a/reports/uk/chromis/reports/usersales.bs b/reports/uk/chromis/reports/usersales.bs
deleted file mode 100644
index f5da8361..00000000
--- a/reports/uk/chromis/reports/usersales.bs
+++ /dev/null
@@ -1,44 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-//
-// This file is part of chromis oPOS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-report = new uk.chromis.pos.reports.PanelReportBean();
-
-report.setTitleKey("Menu.UserSells");
-report.setReport("/uk/chromis/reports/usersales");
-report.setResourceBundle("uk/chromis/reports/usersales_messages");
-
-report.setSentence("SELECT PEOPLE.NAME, MIN(RECEIPTS.DATENEW) AS STARTDATE, MAX(RECEIPTS.DATENEW) AS ENDDATE, SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS TOTAL " +
- "FROM PEOPLE, RECEIPTS, TICKETS, TICKETLINES WHERE PEOPLE.ID = TICKETS.PERSON AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET AND ?(QBF_FILTER) " +
- "GROUP BY PEOPLE.NAME ORDER BY PEOPLE.NAME");
-
-report.addParameter("RECEIPTS.DATENEW");
-report.addParameter("RECEIPTS.DATENEW");
-
-paramdates = new uk.chromis.pos.reports.JParamsDatesInterval();
-
-paramdates.setStartDate(uk.chromis.beans.DateUtils.getToday());
-paramdates.setEndDate(uk.chromis.beans.DateUtils.getTodayMinutes());
-
-report.addQBFFilter(paramdates);
-
-report.addField("NAME", uk.chromis.data.loader.Datas.STRING);
-report.addField("STARTDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
-report.addField("ENDDATE", uk.chromis.data.loader.Datas.TIMESTAMP);
-report.addField("TOTAL", uk.chromis.data.loader.Datas.DOUBLE);
-
-report;
diff --git a/reports/uk/chromis/reports/usersales.jrxml b/reports/uk/chromis/reports/usersales.jrxml
deleted file mode 100644
index 23b6e181..00000000
--- a/reports/uk/chromis/reports/usersales.jrxml
+++ /dev/null
@@ -1,371 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/reports/uk/chromis/reports/usersales_messages.properties b/reports/uk/chromis/reports/usersales_messages.properties
deleted file mode 100644
index f3ee9f8e..00000000
--- a/reports/uk/chromis/reports/usersales_messages.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-# Chromis POS - The New Face of Open Source POS
-# Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
-#
-# This file is part of chromis oPOS
-#
-# Chromis POS is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# Chromis POS is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with Chromis POS. If not, see .
-
-
-label.title=User Sales
-label.printed=Printed
-label.period=Period
-label.user=User
-label.startdate=Start Date
-label.enddate=End Date
-label.cash=Sales
-label.total=Total:
diff --git a/resettickettype.bat b/resettickettype.bat
new file mode 100644
index 00000000..a1a6353a
--- /dev/null
+++ b/resettickettype.bat
@@ -0,0 +1,24 @@
+@echo off
+
+set DIRNAME=%~dp0
+set CP="%DIRNAME%resettickettype.jar"
+set CP=%CP%;"%DIRNAME%locales/"
+set CP=%CP%;"%DIRNAME%locales/Albanian"
+set CP=%CP%;"%DIRNAME%locales/American"
+set CP=%CP%;"%DIRNAME%locales/Arabic"
+set CP=%CP%;"%DIRNAME%locales/Argentinian"
+set CP=%CP%;"%DIRNAME%locales/Brazilian"
+set CP=%CP%;"%DIRNAME%locales/Croatian"
+set CP=%CP%;"%DIRNAME%locales/Dutch"
+set CP=%CP%;"%DIRNAME%locales/English"
+set CP=%CP%;"%DIRNAME%locales/Estonian"
+set CP=%CP%;"%DIRNAME%locales/French"
+set CP=%CP%;"%DIRNAME%locales/German"
+set CP=%CP%;"%DIRNAME%locales/Italian"
+set CP=%CP%;"%DIRNAME%locales/Mexican"
+set CP=%CP%;"%DIRNAME%locales/Portuguese"
+set CP=%CP%;"%DIRNAME%locales/Spanish"
+
+set CP=%CP%;"%DIRNAME%reports/"
+
+start /B javaw -cp %CP% uk.chromis.convert.Convert
\ No newline at end of file
diff --git a/resettickettype.command b/resettickettype.command
new file mode 100644
index 00000000..fb67d9a2
--- /dev/null
+++ b/resettickettype.command
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+
+DIRNAME=`dirname $0`
+CP=$DIRNAME/resettickettype.jar
+java -cp $CP uk.chromis.convert.Convert
diff --git a/resettickettype.jar b/resettickettype.jar
new file mode 100644
index 00000000..9a1512a5
Binary files /dev/null and b/resettickettype.jar differ
diff --git a/resettickettype.sh b/resettickettype.sh
new file mode 100644
index 00000000..a68e81e3
--- /dev/null
+++ b/resettickettype.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+
+DIRNAME=`dirname $0`
+CP=$DIRNAME/resettickettype.jar
+
+# Select the library folder
+case "`uname -s`" in
+ Linux)
+ case "`uname -m`" in
+ i686) LIBRARYPATH=/lib/Linux/i686-unknown-linux-gnu;;
+ ia64) LIBRARYPATH=/lib/Linux/ia64-unknown-linux-gnu;;
+ x86_64|amd64) LIBRARYPATH=/lib/Linux/x86_64-unknown-linux-gnu;;
+ esac;;
+ SunOS)
+ case "`uname -m`" in
+ sparc32) LIBRARYPATH=/Solaris/sparc-solaris/sparc32-sun-solaris2.8;;
+ sparc64) LIBRARYPATH=/Solaris/sparc-solaris/sparc64-sun-solaris2.8;;
+ esac;;
+Darwin) LIBRARYPATH=/lib/Mac_OS_X;;
+CYGWIN*|MINGW32*) LIBRARYPATH=/lib/Windows/i368-mingw32;;
+esac
+
+java -cp $CP uk.chromis.convert.Convert
diff --git a/src-beans/uk/chromis/basic/BasicException.java b/src-beans/uk/chromis/basic/BasicException.java
index fba84c5d..4012fa5b 100644
--- a/src-beans/uk/chromis/basic/BasicException.java
+++ b/src-beans/uk/chromis/basic/BasicException.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/beans/DateUtils.java b/src-beans/uk/chromis/beans/DateUtils.java
index d432a0e1..4d9ad91c 100644
--- a/src-beans/uk/chromis/beans/DateUtils.java
+++ b/src-beans/uk/chromis/beans/DateUtils.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/beans/JCalendarDialog.form b/src-beans/uk/chromis/beans/JCalendarDialog.form
index 06ebe117..e2ff5e84 100644
--- a/src-beans/uk/chromis/beans/JCalendarDialog.form
+++ b/src-beans/uk/chromis/beans/JCalendarDialog.form
@@ -22,7 +22,7 @@
-
+
diff --git a/src-beans/uk/chromis/beans/JCalendarDialog.java b/src-beans/uk/chromis/beans/JCalendarDialog.java
index 9668ac5d..af59dae0 100644
--- a/src-beans/uk/chromis/beans/JCalendarDialog.java
+++ b/src-beans/uk/chromis/beans/JCalendarDialog.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -139,9 +139,8 @@ private static Date internalCalendarTime(Component parent, Date date, boolean bT
myMsg.getRootPane().setDefaultButton(myMsg.jcmdOK);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
- myMsg.setBounds((screenSize.width - dialogwidth) / 2, (screenSize.height - 359) / 2, dialogwidth, 359);
+ myMsg.setBounds((screenSize.width - dialogwidth) / 2, (screenSize.height - 369) / 2, dialogwidth, 369);
- //myMsg.show();
myMsg.m_date = null;
myMsg.setVisible(true);
return myMsg.m_date;
@@ -163,7 +162,7 @@ public JPanelCalendarChange(JCalendarDialog me) {
m_me = me;
}
public void propertyChange(PropertyChangeEvent evt) {
- m_me.myTime.setDate(m_me.myCalendar.getDate());
+ m_me.myCalendar.setDate(m_me.myCalendar.getDate());
}
}
diff --git a/src-beans/uk/chromis/beans/JCalendarPanel.java b/src-beans/uk/chromis/beans/JCalendarPanel.java
index 05e36b06..2d7256ee 100644
--- a/src-beans/uk/chromis/beans/JCalendarPanel.java
+++ b/src-beans/uk/chromis/beans/JCalendarPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,7 +16,6 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.beans;
import java.awt.Color;
@@ -36,29 +35,33 @@
/**
*
- *
+ *
*/
public class JCalendarPanel extends javax.swing.JPanel {
-
+
// private static ResourceBundle m_Intl;
private static LocaleResources m_resources;
private static GregorianCalendar m_CalendarHelper = new GregorianCalendar(); // solo de ayuda
-
- private Date m_date;
+
+ private Date m_date;
private JButtonDate[] m_ListDates;
private JLabel[] m_jDays;
-
+
private JButtonDate m_jCurrent;
private JButtonDate m_jBtnMonthInc;
private JButtonDate m_jBtnMonthDec;
private JButtonDate m_jBtnYearInc;
private JButtonDate m_jBtnYearDec;
private JButtonDate m_jBtnToday;
-
+ private JButtonDate m_jBtnDecadeInc;
+ private JButtonDate m_jBtnDecadeDec;
+
private DateFormat fmtMonthYear = new SimpleDateFormat("MMMMM yyyy");
-
- /** Creates new form JCalendarPanel2 */
+
+ /**
+ * Creates new form JCalendarPanel2
+ */
public JCalendarPanel() {
this(new Date());
}
@@ -68,21 +71,21 @@ public JCalendarPanel() {
* @param dDate
*/
public JCalendarPanel(Date dDate) {
-
+
super();
-
+
if (m_resources == null) {
m_resources = new LocaleResources();
m_resources.addBundleName("beans_messages");
}
-
+
initComponents();
initComponents2();
-
+
// m_CalendarHelper = new GregorianCalendar();
// m_CalendarHelper.setTime(dDate);
m_date = dDate;
-
+
// pintamos
renderMonth();
renderDay();
@@ -92,10 +95,10 @@ public JCalendarPanel(Date dDate) {
*
* @param dNewDate
*/
- public void setDate(Date dNewDate) {
-
+ public void setDate(Date dNewDate) {
+
// cambiamos la fecha
- Date dOldDate = m_date;
+ Date dOldDate = m_date;
m_date = dNewDate;
// pintamos
@@ -113,49 +116,48 @@ public void setDate(Date dNewDate) {
public Date getDate() {
return m_date;
}
-
+
public void setEnabled(boolean bValue) {
-
- super.setEnabled(bValue);
-
+
+ super.setEnabled(bValue);
+
// pintamos
renderMonth();
renderDay();
}
-
+
private void renderMonth() {
-
+
// GregorianCalendar oCalRender = new GregorianCalendar();
// oCalRender.setTime(m_CalendarHelper.getTime());
-
for (int j = 0; j < 7; j++) {
m_jDays[j].setEnabled(isEnabled());
- }
-
+ }
+
// Borramos todos los dias
- for(int i = 0; i < 42; i++) {
+ for (int i = 0; i < 42; i++) {
JButtonDate jAux = m_ListDates[i];
jAux.DateInf = null;
jAux.setEnabled(false);
jAux.setText(null);
- jAux.setForeground((Color)UIManager.getDefaults().get("TextPane.foreground"));
- jAux.setBackground((Color)UIManager.getDefaults().get("TextPane.background"));
+ jAux.setForeground((Color) UIManager.getDefaults().get("TextPane.foreground"));
+ jAux.setBackground((Color) UIManager.getDefaults().get("TextPane.background"));
jAux.setBorder(null);
}
-
+
if (m_date == null) {
m_jLblMonth.setEnabled(isEnabled());
m_jLblMonth.setText(null);
} else {
m_CalendarHelper.setTime(m_date);
-
+
m_jLblMonth.setEnabled(isEnabled());
m_jLblMonth.setText(fmtMonthYear.format(m_CalendarHelper.getTime()));
-
+
int iCurrentMonth = m_CalendarHelper.get(Calendar.MONTH);
m_CalendarHelper.set(Calendar.DAY_OF_MONTH, 1);
- while(m_CalendarHelper.get(Calendar.MONTH) == iCurrentMonth) {
+ while (m_CalendarHelper.get(Calendar.MONTH) == iCurrentMonth) {
JButtonDate jAux = getLabelByDate(m_CalendarHelper.getTime());
jAux.DateInf = m_CalendarHelper.getTime();
@@ -170,14 +172,16 @@ private void renderMonth() {
}
private void renderDay() {
-
+
m_jBtnToday.setEnabled(isEnabled());
-
+
if (m_date == null) {
m_jBtnMonthDec.setEnabled(false);
m_jBtnMonthInc.setEnabled(isEnabled());
m_jBtnYearDec.setEnabled(isEnabled());
m_jBtnYearInc.setEnabled(isEnabled());
+ m_jBtnDecadeDec.setEnabled(isEnabled());
+ m_jBtnDecadeInc.setEnabled(isEnabled());
} else {
m_CalendarHelper.setTime(m_date);
@@ -195,29 +199,38 @@ private void renderDay() {
m_CalendarHelper.add(Calendar.YEAR, 2);
m_jBtnYearInc.DateInf = m_CalendarHelper.getTime();
m_jBtnYearInc.setEnabled(isEnabled());
-
- if(m_jCurrent != null) {
- m_jCurrent.setForeground((Color)UIManager.getDefaults().get("TextPane.foreground"));
- m_jCurrent.setBackground((Color)UIManager.getDefaults().get("TextPane.background"));
+
+ m_CalendarHelper.setTime(m_date);
+ m_CalendarHelper.add(Calendar.YEAR, -10);
+ m_jBtnDecadeDec.DateInf = m_CalendarHelper.getTime();
+ m_jBtnDecadeDec.setEnabled(isEnabled());
+ m_CalendarHelper.add(Calendar.YEAR, 20);
+ m_jBtnDecadeInc.DateInf = m_CalendarHelper.getTime();
+ m_jBtnDecadeInc.setEnabled(isEnabled());
+
+
+ if (m_jCurrent != null) {
+ m_jCurrent.setForeground((Color) UIManager.getDefaults().get("TextPane.foreground"));
+ m_jCurrent.setBackground((Color) UIManager.getDefaults().get("TextPane.background"));
m_jCurrent.setBorder(null);
}
JButtonDate jAux = getLabelByDate(m_date);
- jAux.setBackground((Color)UIManager.getDefaults().get("TextPane.selectionBackground"));
- jAux.setForeground((Color)UIManager.getDefaults().get("TextPane.selectionForeground"));
- jAux.setBorder(new LineBorder((Color)UIManager.getDefaults().get("TitledBorder.titleColor")));
+ jAux.setBackground((Color) UIManager.getDefaults().get("TextPane.selectionBackground"));
+ jAux.setForeground((Color) UIManager.getDefaults().get("TextPane.selectionForeground"));
+ jAux.setBorder(new LineBorder((Color) UIManager.getDefaults().get("TitledBorder.titleColor")));
m_jCurrent = jAux;
}
}
private JButtonDate getLabelByDate(Date d) {
-
+
GregorianCalendar oCalRender = new GregorianCalendar();
oCalRender.setTime(d);
int iDayOfMonth = oCalRender.get(Calendar.DAY_OF_MONTH);
-
+
oCalRender.set(Calendar.DAY_OF_MONTH, 1);
-
+
int iCol = oCalRender.get(Calendar.DAY_OF_WEEK) - oCalRender.getFirstDayOfWeek();
if (iCol < 0) {
iCol += 7;
@@ -228,8 +241,8 @@ private JButtonDate getLabelByDate(Date d) {
private class DateClick implements ActionListener {
public void actionPerformed(ActionEvent e) {
- JButtonDate oLbl = (JButtonDate)e.getSource();
- if(oLbl.DateInf != null) {
+ JButtonDate oLbl = (JButtonDate) e.getSource();
+ if (oLbl.DateInf != null) {
setDate(oLbl.DateInf);
}
}
@@ -244,17 +257,19 @@ public JButtonDate(ActionListener datehandler) {
initComponent();
addActionListener(datehandler);
}
+
public JButtonDate(String sText, ActionListener datehandler) {
super(sText);
initComponent();
addActionListener(datehandler);
- }
+ }
+
public JButtonDate(Icon icon, ActionListener datehandler) {
super(icon);
initComponent();
addActionListener(datehandler);
- }
-
+ }
+
private void initComponent() {
DateInf = null;
setRequestFocusEnabled(false);
@@ -266,43 +281,48 @@ private void initComponent() {
private void initComponents2() {
ActionListener dateclick = new DateClick();
-
+
+ m_jBtnDecadeDec = new JButtonDate(new ImageIcon(getClass().getResource("/uk/chromis/images/3leftarrow.png")), dateclick);
m_jBtnYearDec = new JButtonDate(new ImageIcon(getClass().getResource("/uk/chromis/images/2leftarrow.png")), dateclick);
m_jBtnMonthDec = new JButtonDate(new ImageIcon(getClass().getResource("/uk/chromis/images/1leftarrow.png")), dateclick);
m_jBtnToday = new JButtonDate(m_resources.getString("button.Today"), dateclick);
m_jBtnMonthInc = new JButtonDate(new ImageIcon(getClass().getResource("/uk/chromis/images/1rightarrow.png")), dateclick);
m_jBtnYearInc = new JButtonDate(new ImageIcon(getClass().getResource("/uk/chromis/images/2rightarrow.png")), dateclick);
-
+ m_jBtnDecadeInc = new JButtonDate(new ImageIcon(getClass().getResource("/uk/chromis/images/3rightarrow.png")), dateclick);
+
+
m_jBtnToday.DateInf = new Date();
+ m_jActions.add(m_jBtnDecadeDec);
m_jActions.add(m_jBtnYearDec);
m_jActions.add(m_jBtnMonthDec);
m_jActions.add(m_jBtnToday);
m_jActions.add(m_jBtnMonthInc);
m_jActions.add(m_jBtnYearInc);
-
+ m_jActions.add(m_jBtnDecadeInc);
+
m_ListDates = new JButtonDate[42];
- for(int i = 0; i < 42; i++) {
+ for (int i = 0; i < 42; i++) {
JButtonDate jAux = new JButtonDate(dateclick);
// jAux.setFont(new Font("Dialog", 1, 24));
jAux.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jAux.setText(null);
jAux.setOpaque(true);
- jAux.setForeground((Color)UIManager.getDefaults().get("TextPane.foreground"));
- jAux.setBackground((Color)UIManager.getDefaults().get("TextPane.background"));
+ jAux.setForeground((Color) UIManager.getDefaults().get("TextPane.foreground"));
+ jAux.setBackground((Color) UIManager.getDefaults().get("TextPane.background"));
jAux.setBorder(null);
m_ListDates[i] = jAux;
m_jDates.add(jAux);
}
-
+
m_jDays = new JLabel[7];
- for(int iHead = 0; iHead < 7; iHead++) {
+ for (int iHead = 0; iHead < 7; iHead++) {
JLabel JAuxHeader = new JLabel();
//JAuxHeader.setFont(new Font("Dialog", 1, 24));
JAuxHeader.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
m_jDays[iHead] = JAuxHeader;
m_jWeekDays.add(JAuxHeader);
}
-
+
DateFormat fmtWeekDay = new SimpleDateFormat("E");
Calendar oCalRender = new GregorianCalendar();
int iCol;
@@ -313,14 +333,13 @@ private void initComponents2() {
iCol += 7;
}
m_jDays[iCol].setText(fmtWeekDay.format(oCalRender.getTime()));
- }
+ }
}
-
- /** This method is called from within the constructor to
- * initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is
- * always regenerated by the Form Editor.
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
*/
// //GEN-BEGIN:initComponents
private void initComponents() {
@@ -367,8 +386,8 @@ private void initComponents() {
add(jPanel3, java.awt.BorderLayout.LINE_END);
}// //GEN-END:initComponents
-
-
+
+
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
@@ -379,5 +398,5 @@ private void initComponents() {
private javax.swing.JPanel m_jMonth;
private javax.swing.JPanel m_jWeekDays;
// End of variables declaration//GEN-END:variables
-
+
}
diff --git a/src-beans/uk/chromis/beans/JClockPanel.java b/src-beans/uk/chromis/beans/JClockPanel.java
index e11b1316..99327f04 100644
--- a/src-beans/uk/chromis/beans/JClockPanel.java
+++ b/src-beans/uk/chromis/beans/JClockPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/beans/JFlowPanel.java b/src-beans/uk/chromis/beans/JFlowPanel.java
index b7a942de..51b3c122 100644
--- a/src-beans/uk/chromis/beans/JFlowPanel.java
+++ b/src-beans/uk/chromis/beans/JFlowPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/beans/JNumberDialog.java b/src-beans/uk/chromis/beans/JNumberDialog.java
index 31daa5cb..0dae4647 100644
--- a/src-beans/uk/chromis/beans/JNumberDialog.java
+++ b/src-beans/uk/chromis/beans/JNumberDialog.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/beans/JNumberEvent.java b/src-beans/uk/chromis/beans/JNumberEvent.java
index c58d5026..1e981753 100644
--- a/src-beans/uk/chromis/beans/JNumberEvent.java
+++ b/src-beans/uk/chromis/beans/JNumberEvent.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/beans/JNumberEventListener.java b/src-beans/uk/chromis/beans/JNumberEventListener.java
index 19a78ef8..c57caf86 100644
--- a/src-beans/uk/chromis/beans/JNumberEventListener.java
+++ b/src-beans/uk/chromis/beans/JNumberEventListener.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/beans/JNumberKeys.form b/src-beans/uk/chromis/beans/JNumberKeys.form
index b6d2422e..1374b61d 100644
--- a/src-beans/uk/chromis/beans/JNumberKeys.form
+++ b/src-beans/uk/chromis/beans/JNumberKeys.form
@@ -23,7 +23,7 @@
-
+
diff --git a/src-beans/uk/chromis/beans/JNumberKeys.java b/src-beans/uk/chromis/beans/JNumberKeys.java
index 62bfc2ea..2f6ae8cb 100644
--- a/src-beans/uk/chromis/beans/JNumberKeys.java
+++ b/src-beans/uk/chromis/beans/JNumberKeys.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/beans/JPasswordDialog.java b/src-beans/uk/chromis/beans/JPasswordDialog.java
index 35110449..d0f5df7a 100644
--- a/src-beans/uk/chromis/beans/JPasswordDialog.java
+++ b/src-beans/uk/chromis/beans/JPasswordDialog.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/beans/JTimePanel.java b/src-beans/uk/chromis/beans/JTimePanel.java
index 91a43ae5..544354d5 100644
--- a/src-beans/uk/chromis/beans/JTimePanel.java
+++ b/src-beans/uk/chromis/beans/JTimePanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/beans/LocaleResources.java b/src-beans/uk/chromis/beans/LocaleResources.java
index 5684b29c..00e88838 100644
--- a/src-beans/uk/chromis/beans/LocaleResources.java
+++ b/src-beans/uk/chromis/beans/LocaleResources.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/beans/RoundedBorder.java b/src-beans/uk/chromis/beans/RoundedBorder.java
index a31765b7..73aa7e8a 100644
--- a/src-beans/uk/chromis/beans/RoundedBorder.java
+++ b/src-beans/uk/chromis/beans/RoundedBorder.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/editor/EditorComponent.java b/src-beans/uk/chromis/editor/EditorComponent.java
index df59a38a..439f22c2 100644
--- a/src-beans/uk/chromis/editor/EditorComponent.java
+++ b/src-beans/uk/chromis/editor/EditorComponent.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/editor/EditorKeys.java b/src-beans/uk/chromis/editor/EditorKeys.java
index 2312af07..ff02adae 100644
--- a/src-beans/uk/chromis/editor/EditorKeys.java
+++ b/src-beans/uk/chromis/editor/EditorKeys.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/editor/JEditorAbstract.java b/src-beans/uk/chromis/editor/JEditorAbstract.java
index 4b370567..71dd3453 100644
--- a/src-beans/uk/chromis/editor/JEditorAbstract.java
+++ b/src-beans/uk/chromis/editor/JEditorAbstract.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/editor/JEditorCurrency.java b/src-beans/uk/chromis/editor/JEditorCurrency.java
index 6f9dd11c..32c6d698 100644
--- a/src-beans/uk/chromis/editor/JEditorCurrency.java
+++ b/src-beans/uk/chromis/editor/JEditorCurrency.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/editor/JEditorCurrencyPositive.java b/src-beans/uk/chromis/editor/JEditorCurrencyPositive.java
index c30ffbd2..f2a659fd 100644
--- a/src-beans/uk/chromis/editor/JEditorCurrencyPositive.java
+++ b/src-beans/uk/chromis/editor/JEditorCurrencyPositive.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/editor/JEditorDouble.java b/src-beans/uk/chromis/editor/JEditorDouble.java
index cde4a387..ab0eaaeb 100644
--- a/src-beans/uk/chromis/editor/JEditorDouble.java
+++ b/src-beans/uk/chromis/editor/JEditorDouble.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/editor/JEditorDoublePositive.java b/src-beans/uk/chromis/editor/JEditorDoublePositive.java
index b6093559..6caa236f 100644
--- a/src-beans/uk/chromis/editor/JEditorDoublePositive.java
+++ b/src-beans/uk/chromis/editor/JEditorDoublePositive.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/editor/JEditorIntegerPositive.java b/src-beans/uk/chromis/editor/JEditorIntegerPositive.java
index 30132883..cb1bdc7c 100644
--- a/src-beans/uk/chromis/editor/JEditorIntegerPositive.java
+++ b/src-beans/uk/chromis/editor/JEditorIntegerPositive.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/editor/JEditorNumber.java b/src-beans/uk/chromis/editor/JEditorNumber.java
index 997a739d..4693f7b3 100644
--- a/src-beans/uk/chromis/editor/JEditorNumber.java
+++ b/src-beans/uk/chromis/editor/JEditorNumber.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/editor/JEditorPassword.java b/src-beans/uk/chromis/editor/JEditorPassword.java
index 4bab4749..8b97f40f 100644
--- a/src-beans/uk/chromis/editor/JEditorPassword.java
+++ b/src-beans/uk/chromis/editor/JEditorPassword.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/editor/JEditorString.java b/src-beans/uk/chromis/editor/JEditorString.java
index 902d1607..74b2b635 100644
--- a/src-beans/uk/chromis/editor/JEditorString.java
+++ b/src-beans/uk/chromis/editor/JEditorString.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/editor/JEditorStringNumber.java b/src-beans/uk/chromis/editor/JEditorStringNumber.java
index 9f812fae..d9de0ddf 100644
--- a/src-beans/uk/chromis/editor/JEditorStringNumber.java
+++ b/src-beans/uk/chromis/editor/JEditorStringNumber.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/editor/JEditorText.java b/src-beans/uk/chromis/editor/JEditorText.java
index a75350ac..a29278f9 100644
--- a/src-beans/uk/chromis/editor/JEditorText.java
+++ b/src-beans/uk/chromis/editor/JEditorText.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/fixedimages/blackuser.png b/src-beans/uk/chromis/fixedimages/blackuser.png
new file mode 100644
index 00000000..ca28b965
Binary files /dev/null and b/src-beans/uk/chromis/fixedimages/blackuser.png differ
diff --git a/src-beans/uk/chromis/fixedimages/blueuser.png b/src-beans/uk/chromis/fixedimages/blueuser.png
new file mode 100644
index 00000000..05ed9d23
Binary files /dev/null and b/src-beans/uk/chromis/fixedimages/blueuser.png differ
diff --git a/src-beans/uk/chromis/fixedimages/chromislogomedi.png b/src-beans/uk/chromis/fixedimages/chromislogomedi.png
new file mode 100644
index 00000000..e5669a34
Binary files /dev/null and b/src-beans/uk/chromis/fixedimages/chromislogomedi.png differ
diff --git a/src-beans/uk/chromis/fixedimages/greenuser.png b/src-beans/uk/chromis/fixedimages/greenuser.png
new file mode 100644
index 00000000..f4cb3c6d
Binary files /dev/null and b/src-beans/uk/chromis/fixedimages/greenuser.png differ
diff --git a/src-beans/uk/chromis/fixedimages/orangeuser.png b/src-beans/uk/chromis/fixedimages/orangeuser.png
new file mode 100644
index 00000000..6d9f3520
Binary files /dev/null and b/src-beans/uk/chromis/fixedimages/orangeuser.png differ
diff --git a/Icon sets/royalblue/uk/chromis/images/user.png b/src-beans/uk/chromis/fixedimages/rblueuser.png
similarity index 100%
rename from Icon sets/royalblue/uk/chromis/images/user.png
rename to src-beans/uk/chromis/fixedimages/rblueuser.png
diff --git a/src-beans/uk/chromis/fixedimages/reduser.png b/src-beans/uk/chromis/fixedimages/reduser.png
new file mode 100644
index 00000000..72601cb2
Binary files /dev/null and b/src-beans/uk/chromis/fixedimages/reduser.png differ
diff --git a/src-beans/uk/chromis/format/DoubleUtils.java b/src-beans/uk/chromis/format/DoubleUtils.java
index f6a25c6c..f8d5c02a 100644
--- a/src-beans/uk/chromis/format/DoubleUtils.java
+++ b/src-beans/uk/chromis/format/DoubleUtils.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/format/Formats.java b/src-beans/uk/chromis/format/Formats.java
index 3129734b..6b1040eb 100644
--- a/src-beans/uk/chromis/format/Formats.java
+++ b/src-beans/uk/chromis/format/Formats.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,7 +16,6 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.format;
import java.text.DateFormat;
@@ -24,91 +23,46 @@
import java.text.NumberFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.time.format.FormatStyle;
import java.util.Date;
import uk.chromis.basic.BasicException;
/**
*
- *
+ *
*/
public abstract class Formats {
-
- /**
- *
- */
- public final static Formats NULL = new FormatsNULL();
- /**
- *
- */
+ public final static Formats NULL = new FormatsNULL();
public final static Formats INT = new FormatsINT();
-
- /**
- *
- */
public final static Formats STRING = new FormatsSTRING();
-
- /**
- *
- */
public final static Formats DOUBLE = new FormatsDOUBLE();
-
- /**
- *
- */
public final static Formats CURRENCY = new FormatsCURRENCY();
-
- /**
- *
- */
public final static Formats PERCENT = new FormatsPERCENT();
-
- /**
- *
- */
public final static Formats BOOLEAN = new FormatsBOOLEAN();
-
- /**
- *
- */
public final static Formats TIMESTAMP = new FormatsTIMESTAMP();
-
- /**
- *
- */
public final static Formats DATE = new FormatsDATE();
-
- /**
- *
- */
+ public final static Formats TIMEDIFFERENCE = new FormatsTIMEDIFFERENCE();
public final static Formats TIME = new FormatsTIME();
-
- /**
- *
- */
public final static Formats BYTEA = new FormatsBYTEA();
-
- /**
- *
- */
public final static Formats HOURMIN = new FormatsHOURMIN();
-/** Added; Thanks TSirwani 3 Mar 11 */
public final static Formats SIMPLEDATE = new FormatsSIMPLEDATE();
private static NumberFormat m_integerformat = NumberFormat.getIntegerInstance();
private static NumberFormat m_doubleformat = NumberFormat.getNumberInstance();
private static NumberFormat m_currencyformat = NumberFormat.getCurrencyInstance();
private static NumberFormat m_percentformat = new DecimalFormat("#,##0.##%");
-
private static DateFormat m_dateformat = DateFormat.getDateInstance();
private static DateFormat m_timeformat = DateFormat.getTimeInstance();
private static DateFormat m_datetimeformat = DateFormat.getDateTimeInstance();
-
private static final DateFormat m_hourminformat = new SimpleDateFormat("H:mm:ss");
private static final DateFormat m_simpledate = new SimpleDateFormat("dd-MM-yyyy");
- /** Creates a new instance of Formats */
+
+ /**
+ * Creates a new instance of Formats
+ */
protected Formats() {
}
-
+
/**
*
* @return
@@ -117,7 +71,7 @@ public static int getCurrencyDecimals() {
return m_currencyformat.getMaximumFractionDigits();
}
-
+
/**
*
* @param value
@@ -127,10 +81,10 @@ public String formatValue(Object value) {
if (value == null) {
return "";
} else {
- return formatValueInt(value);
+ return formatValueInt(value);
}
}
-
+
/**
*
* @param value
@@ -147,9 +101,9 @@ public Object parseValue(String value, Object defvalue) throws BasicException {
} catch (ParseException e) {
throw new BasicException(e.getMessage(), e);
}
- }
+ }
}
-
+
/**
*
* @param value
@@ -194,7 +148,7 @@ public static void setCurrencyPattern(String pattern) {
} else {
m_currencyformat = new DecimalFormat(pattern);
}
- }
+ }
/**
*
@@ -219,7 +173,7 @@ public static void setDatePattern(String pattern) {
m_dateformat = new SimpleDateFormat(pattern);
}
}
-
+
/**
*
* @param pattern
@@ -231,7 +185,7 @@ public static void setTimePattern(String pattern) {
m_timeformat = new SimpleDateFormat(pattern);
}
}
-
+
/**
*
* @param pattern
@@ -243,7 +197,7 @@ public static void setDateTimePattern(String pattern) {
m_datetimeformat = new SimpleDateFormat(pattern);
}
}
-
+
/**
*
* @param value
@@ -265,67 +219,85 @@ public static void setDateTimePattern(String pattern) {
*/
public abstract int getAlignment();
- private static final class FormatsNULL extends Formats {
+ private static final class FormatsNULL extends Formats {
+
@Override
protected String formatValueInt(Object value) {
return null;
- }
+ }
+
@Override
protected Object parseValueInt(String value) throws ParseException {
return null;
}
+
@Override
public int getAlignment() {
return javax.swing.SwingConstants.LEFT;
}
}
- private static final class FormatsINT extends Formats {
+
+ private static final class FormatsINT extends Formats {
+
@Override
protected String formatValueInt(Object value) {
return m_integerformat.format(((Number) value).longValue());
- }
+ }
+
@Override
protected Object parseValueInt(String value) throws ParseException {
return m_integerformat.parse(value).intValue();
}
+
@Override
public int getAlignment() {
return javax.swing.SwingConstants.RIGHT;
}
}
- private static final class FormatsSTRING extends Formats {
+
+ private static final class FormatsSTRING extends Formats {
+
@Override
protected String formatValueInt(Object value) {
return (String) value;
- }
+ }
+
@Override
protected Object parseValueInt(String value) throws ParseException {
return value;
}
+
@Override
public int getAlignment() {
return javax.swing.SwingConstants.LEFT;
}
- }
- private static final class FormatsDOUBLE extends Formats {
+ }
+
+ private static final class FormatsDOUBLE extends Formats {
+
@Override
protected String formatValueInt(Object value) {
return m_doubleformat.format(DoubleUtils.fixDecimals((Number) value)); // quickfix for 3838
- }
+ }
+
@Override
protected Object parseValueInt(String value) throws ParseException {
return m_doubleformat.parse(value).doubleValue();
}
+
@Override
public int getAlignment() {
return javax.swing.SwingConstants.RIGHT;
}
- }
- private static final class FormatsPERCENT extends Formats {
+ }
+
+ private static final class FormatsPERCENT extends Formats {
+
@Override
protected String formatValueInt(Object value) {
return m_percentformat.format(DoubleUtils.fixDecimals((Number) value)); // quickfix for 3838
- }
+ }
+
@Override
protected Object parseValueInt(String value) throws ParseException {
try {
@@ -335,16 +307,20 @@ protected Object parseValueInt(String value) throws ParseException {
return m_doubleformat.parse(value).doubleValue() / 100;
}
}
+
@Override
public int getAlignment() {
return javax.swing.SwingConstants.RIGHT;
}
- }
- private static final class FormatsCURRENCY extends Formats {
+ }
+
+ private static final class FormatsCURRENCY extends Formats {
+
@Override
protected String formatValueInt(Object value) {
return m_currencyformat.format(DoubleUtils.fixDecimals((Number) value)); // quickfix for 3838
- }
+ }
+
@Override
protected Object parseValueInt(String value) throws ParseException {
try {
@@ -354,30 +330,38 @@ protected Object parseValueInt(String value) throws ParseException {
return m_doubleformat.parse(value).doubleValue();
}
}
+
@Override
public int getAlignment() {
return javax.swing.SwingConstants.RIGHT;
}
- }
- private static final class FormatsBOOLEAN extends Formats {
+ }
+
+ private static final class FormatsBOOLEAN extends Formats {
+
@Override
protected String formatValueInt(Object value) {
return ((Boolean) value).toString();
- }
+ }
+
@Override
protected Object parseValueInt(String value) throws ParseException {
return Boolean.valueOf(value);
}
+
@Override
public int getAlignment() {
return javax.swing.SwingConstants.CENTER;
}
- }
- private static final class FormatsTIMESTAMP extends Formats {
+ }
+
+ private static final class FormatsTIMESTAMP extends Formats {
+
@Override
protected String formatValueInt(Object value) {
return m_datetimeformat.format((Date) value);
- }
+ }
+
@Override
protected Object parseValueInt(String value) throws ParseException {
try {
@@ -387,40 +371,81 @@ protected Object parseValueInt(String value) throws ParseException {
return m_dateformat.parse(value);
}
}
+
@Override
public int getAlignment() {
return javax.swing.SwingConstants.CENTER;
}
}
- private static final class FormatsDATE extends Formats {
+
+ private static final class FormatsTIMEDIFFERENCE extends Formats {
+
+ @Override
+ protected String formatValueInt(Object value) {
+ Double tmp = Double.parseDouble((String) value);
+ int time = tmp.intValue();
+ DecimalFormat df = new DecimalFormat("00");
+ int hours = (time / 3600);
+ int minutes = (time - (hours * 3600)) / 60;
+ int seconds = (time - (hours * 3600) - (minutes * 60));
+ return df.format(hours).toString() + ":" + df.format(minutes).toString() + ":" + df.format(seconds).toString();
+ }
+
+ @Override
+ protected Object parseValueInt(String value) throws ParseException {
+ Double tmp = Double.parseDouble((String) value);
+ int time = tmp.intValue();
+ DecimalFormat df = new DecimalFormat("00");
+ int hours = (time / 3600);
+ int minutes = (time - (hours * 3600)) / 60;
+ int seconds = (time - (hours * 3600) - (minutes * 60));
+ return df.format(hours).toString() + ":" + df.format(minutes).toString() + ":" + df.format(seconds).toString();
+ }
+
+ @Override
+ public int getAlignment() {
+ return javax.swing.SwingConstants.CENTER;
+ }
+ }
+
+ private static final class FormatsDATE extends Formats {
+
@Override
protected String formatValueInt(Object value) {
return m_dateformat.format((Date) value);
- }
+ }
+
@Override
protected Object parseValueInt(String value) throws ParseException {
return m_dateformat.parse(value);
}
+
@Override
public int getAlignment() {
return javax.swing.SwingConstants.CENTER;
}
- }
- private static final class FormatsTIME extends Formats {
+ }
+
+ private static final class FormatsTIME extends Formats {
+
@Override
protected String formatValueInt(Object value) {
return m_timeformat.format((Date) value);
- }
+ }
+
@Override
protected Object parseValueInt(String value) throws ParseException {
return m_timeformat.parse(value);
}
+
@Override
public int getAlignment() {
return javax.swing.SwingConstants.CENTER;
}
- }
- private static final class FormatsBYTEA extends Formats {
+ }
+
+ private static final class FormatsBYTEA extends Formats {
+
@Override
protected String formatValueInt(Object value) {
try {
@@ -428,61 +453,69 @@ protected String formatValueInt(Object value) {
} catch (java.io.UnsupportedEncodingException eu) {
return "";
}
- }
+ }
+
@Override
protected Object parseValueInt(String value) throws ParseException {
try {
- return value.getBytes("UTF-8");
+ return value.getBytes("UTF-8");
} catch (java.io.UnsupportedEncodingException eu) {
- return new byte[0];
+ return new byte[0];
}
}
+
@Override
public int getAlignment() {
return javax.swing.SwingConstants.LEADING;
}
- }
- private static final class FormatsHOURMIN extends Formats {
- @Override
- protected String formatValueInt(Object value) {
- return m_hourminformat.format(value);
-}
- @Override
- protected Date parseValueInt(String value) throws ParseException {
- return m_hourminformat.parse(value);
- }
- @Override
- public int getAlignment() {
+ }
- return javax.swing.SwingConstants.CENTER;
+ private static final class FormatsHOURMIN extends Formats {
- }
+ @Override
+ protected String formatValueInt(Object value) {
+ return m_hourminformat.format(value);
+ }
- }
+ @Override
+ protected Date parseValueInt(String value) throws ParseException {
+ return m_hourminformat.parse(value);
+ }
-/** Added; Thanks TSirwani 3 Mar 11 */
- private static final class FormatsSIMPLEDATE extends Formats {
+ @Override
+ public int getAlignment() {
+
+ return javax.swing.SwingConstants.CENTER;
+
+ }
+
+ }
+
+ /**
+ * Added; Thanks TSirwani 3 Mar 11
+ */
+ private static final class FormatsSIMPLEDATE extends Formats {
- @Override
- protected String formatValueInt(Object value) {
+ @Override
+ protected String formatValueInt(Object value) {
- return m_simpledate.format(value);
+ return m_simpledate.format(value);
- }
+ }
- @Override
- protected Date parseValueInt(String value) throws ParseException {
+ @Override
+ protected Date parseValueInt(String value) throws ParseException {
- return m_simpledate.parse(value);
+ return m_simpledate.parse(value);
- }
+ }
- @Override
- public int getAlignment() {
+ @Override
+ public int getAlignment() {
- return javax.swing.SwingConstants.CENTER;
+ return javax.swing.SwingConstants.CENTER;
- }
+ }
- }
+ }
}
diff --git a/src-beans/uk/chromis/format/FormatsConstrain.java b/src-beans/uk/chromis/format/FormatsConstrain.java
index 6e6a9ff8..ad2667a4 100644
--- a/src-beans/uk/chromis/format/FormatsConstrain.java
+++ b/src-beans/uk/chromis/format/FormatsConstrain.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/format/FormatsException.java b/src-beans/uk/chromis/format/FormatsException.java
index 18afc5cc..168b7e35 100644
--- a/src-beans/uk/chromis/format/FormatsException.java
+++ b/src-beans/uk/chromis/format/FormatsException.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/format/FormatsRESOURCE.java b/src-beans/uk/chromis/format/FormatsRESOURCE.java
index 6a7fe073..fc48a96e 100644
--- a/src-beans/uk/chromis/format/FormatsRESOURCE.java
+++ b/src-beans/uk/chromis/format/FormatsRESOURCE.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-beans/uk/chromis/format/FormatsValidate.java b/src-beans/uk/chromis/format/FormatsValidate.java
index 9f0151bc..ca460f51 100644
--- a/src-beans/uk/chromis/format/FormatsValidate.java
+++ b/src-beans/uk/chromis/format/FormatsValidate.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/gui/ComboBoxValModel.java b/src-data/uk/chromis/data/gui/ComboBoxValModel.java
index 3d32cea8..11b875f2 100644
--- a/src-data/uk/chromis/data/gui/ComboBoxValModel.java
+++ b/src-data/uk/chromis/data/gui/ComboBoxValModel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/gui/CompoundIcon.java b/src-data/uk/chromis/data/gui/CompoundIcon.java
index 02508fe5..c9f95756 100644
--- a/src-data/uk/chromis/data/gui/CompoundIcon.java
+++ b/src-data/uk/chromis/data/gui/CompoundIcon.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/gui/FindInfo.java b/src-data/uk/chromis/data/gui/FindInfo.java
index 9524d4b3..0d6ccc42 100644
--- a/src-data/uk/chromis/data/gui/FindInfo.java
+++ b/src-data/uk/chromis/data/gui/FindInfo.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/gui/JCounter.java b/src-data/uk/chromis/data/gui/JCounter.java
index dc557c15..6870795a 100644
--- a/src-data/uk/chromis/data/gui/JCounter.java
+++ b/src-data/uk/chromis/data/gui/JCounter.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/gui/JFind.java b/src-data/uk/chromis/data/gui/JFind.java
index cfdc6827..1dabb1ec 100644
--- a/src-data/uk/chromis/data/gui/JFind.java
+++ b/src-data/uk/chromis/data/gui/JFind.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/gui/JImageEditor.form b/src-data/uk/chromis/data/gui/JImageEditor.form
index 1c5decdf..94029f3f 100644
--- a/src-data/uk/chromis/data/gui/JImageEditor.form
+++ b/src-data/uk/chromis/data/gui/JImageEditor.form
@@ -69,7 +69,9 @@
-
+
+
+
@@ -80,7 +82,9 @@
-
+
+
+
@@ -91,7 +95,9 @@
-
+
+
+
@@ -125,7 +131,9 @@
-
+
+
+
diff --git a/src-data/uk/chromis/data/gui/JImageEditor.java b/src-data/uk/chromis/data/gui/JImageEditor.java
index 5d3db553..3f4ba7f6 100644
--- a/src-data/uk/chromis/data/gui/JImageEditor.java
+++ b/src-data/uk/chromis/data/gui/JImageEditor.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,7 +16,7 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
+//
package uk.chromis.data.gui;
import java.awt.Color;
@@ -48,41 +48,44 @@
/**
*
- *
+ *
*/
public class JImageEditor extends javax.swing.JPanel {
-
+
private Dimension m_maxsize;
private ZoomIcon m_icon;
private BufferedImage m_Img = null;
-
+
private static File m_fCurrentDirectory = null;
private static NumberFormat m_percentformat = new DecimalFormat("#,##0.##%");
-
- /** Creates new form JImageEditor */
+
+ /**
+ * Creates new form JImageEditor
+ */
public JImageEditor() {
initComponents();
-
+
m_Img = null;
- m_maxsize = new Dimension( 200, 200 ); // Default maximum size for product images
+ m_maxsize = new Dimension(200, 200); // Default maximum size for product images
m_icon = new ZoomIcon();
m_jImage.setIcon(m_icon);
m_jPercent.setText(m_percentformat.format(m_icon.getZoom()));
privateSetEnabled(isEnabled());
-
+
// Enable drag & drop image support
- this.setTransferHandler( createTransferHandler() );
+ this.setTransferHandler(createTransferHandler());
}
-
- private TransferHandler createTransferHandler(){
- return new TransferHandler( ){
+
+ private TransferHandler createTransferHandler() {
+ return new TransferHandler() {
@Override
- public boolean importData( JComponent comp, Transferable t ) {
+ public boolean importData(JComponent comp, Transferable t) {
+ System.out.println("flavor " + (DataFlavor.imageFlavor));
if (t.isDataFlavorSupported(DataFlavor.imageFlavor)) {
try {
- Image image = (Image) t.getTransferData(DataFlavor.imageFlavor);
+ Image image = (Image) t.getTransferData(DataFlavor.imageFlavor);
ImageIcon icon = new ImageIcon(image);
- setIconImage( icon );
+ setIconImage(icon);
return true;
} catch (Throwable th) {
System.out.println("Failed to accept dropped image " + th);
@@ -97,19 +100,19 @@ public boolean importData( JComponent comp, Transferable t ) {
}
return true;
} catch (Throwable th) {
- System.out.println( "Failed to accept dropped image " + th);
+ System.out.println("Failed to accept dropped image " + th);
}
- }
+ }
return true;
}
@Override
- public boolean canImport( JComponent comp, DataFlavor[] transferFlavors ) {
+ public boolean canImport(JComponent comp, DataFlavor[] transferFlavors) {
return true;
}
};
}
-
+
/**
*
* @param size
@@ -125,14 +128,14 @@ public void setMaxDimensions(Dimension size) {
public Dimension getMaxDimensions() {
return m_maxsize;
}
-
+
@Override
public void setEnabled(boolean value) {
privateSetEnabled(value);
super.setEnabled(value);
}
-
+
private void privateSetEnabled(boolean value) {
m_jbtnopen.setEnabled(value);
m_jbtnclose.setEnabled(value && (m_Img != null));
@@ -141,29 +144,29 @@ private void privateSetEnabled(boolean value) {
m_jPercent.setEnabled(value && (m_Img != null));
m_jScr.setEnabled(value && (m_Img != null));
}
-
+
/**
*
* @param img
*/
public void setIconImage(ImageIcon img) {
BufferedImage bi = new BufferedImage(
- img.getIconWidth(),
- img.getIconHeight(),
- BufferedImage.TYPE_INT_RGB);
+ img.getIconWidth(),
+ img.getIconHeight(),
+ BufferedImage.TYPE_INT_RGB);
Graphics g = bi.createGraphics();
// paint the Icon to the BufferedImage.
- img.paintIcon(null, g, 0,0);
+ img.paintIcon(null, g, 0, 0);
g.dispose();
-
+
// Resize image if it is too big
if (m_maxsize != null && (bi.getHeight() > m_maxsize.height || bi.getWidth() > m_maxsize.width)) {
bi = resizeImage(bi);
}
-
- setImage( bi );
+
+ setImage(bi);
}
-
+
/**
*
* @param img
@@ -172,18 +175,18 @@ public void setImage(BufferedImage img) {
BufferedImage oldimg = m_Img;
m_Img = img;
m_icon.setIcon(m_Img == null ? null : new ImageIcon(m_Img));
-
+
m_jPercent.setText(m_percentformat.format(m_icon.getZoom()));
-
+
m_jImage.revalidate();
m_jScr.revalidate();
m_jScr.repaint();
privateSetEnabled(isEnabled());
-
+
firePropertyChange("image", oldimg, m_Img);
}
-
+
/**
*
* @return
@@ -199,7 +202,7 @@ public BufferedImage getImage() {
public double getZoom() {
return m_icon.getZoom();
}
-
+
/**
*
* @param zoom
@@ -207,50 +210,50 @@ public double getZoom() {
public void setZoom(double zoom) {
double oldzoom = m_icon.getZoom();
m_icon.setZoom(zoom);
-
+
m_jPercent.setText(m_percentformat.format(m_icon.getZoom()));
-
+
m_jImage.revalidate();
m_jScr.revalidate();
m_jScr.repaint();
-
+
firePropertyChange("zoom", oldzoom, zoom);
}
-
+
/**
*
*/
- public void incZoom() {
+ public void incZoom() {
double zoom = m_icon.getZoom();
setZoom(zoom > 4.0 ? 8.0 : zoom * 2.0);
}
-
+
/**
*
*/
- public void decZoom() {
+ public void decZoom() {
double zoom = m_icon.getZoom();
setZoom(zoom < 0.5 ? 0.25 : zoom / 2.0);
}
-
+
/**
*
*/
public void doLoad() {
JFileChooser fc = new JFileChooser(m_fCurrentDirectory);
-
+
fc.addChoosableFileFilter(new ExtensionsFilter(LocalRes.getIntString("label.imagefiles"), "png", "gif", "jpg", "jpeg", "bmp"));
- if (fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
+ if (fc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
try {
BufferedImage img = ImageIO.read(fc.getSelectedFile());
if (img != null) {
// compruebo que no exceda el tamano maximo.
if (m_maxsize != null && (img.getHeight() > m_maxsize.height || img.getWidth() > m_maxsize.width)) {
- if (JOptionPane.showConfirmDialog(this, LocalRes.getIntString("message.resizeimage"), LocalRes.getIntString("title.editor"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
+ if (JOptionPane.showConfirmDialog(this, LocalRes.getIntString("message.resizeimage"), LocalRes.getIntString("title.editor"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
// Redimensionamos la imagen para que se ajuste
img = resizeImage(img);
- }
+ }
}
setImage(img);
m_fCurrentDirectory = fc.getCurrentDirectory();
@@ -259,14 +262,14 @@ public void doLoad() {
}
}
}
-
+
private BufferedImage resizeImage(BufferedImage img) {
-
+
int myheight = img.getHeight();
int mywidth = img.getWidth();
-
+
if (myheight > m_maxsize.height) {
- mywidth = (int) (mywidth * m_maxsize.height / myheight);
+ mywidth = (int) (mywidth * m_maxsize.height / myheight);
myheight = m_maxsize.height;
}
if (mywidth > m_maxsize.width) {
@@ -288,34 +291,35 @@ private BufferedImage resizeImage(BufferedImage img) {
g2d.fillRect(0, 0, mywidth, myheight);
if (scalex < scaley) {
- g2d.drawImage(img, 0,(int) ((myheight - img.getHeight(null) * scalex) / 2.0)
- , mywidth, (int) (img.getHeight(null) * scalex), null);
+ g2d.drawImage(img, 0, (int) ((myheight - img.getHeight(null) * scalex) / 2.0), mywidth, (int) (img.getHeight(null) * scalex), null);
} else {
- g2d.drawImage(img, (int) ((mywidth - img.getWidth(null) * scaley) / 2.0), 0
- , (int) (img.getWidth(null) * scaley), myheight, null);
+ g2d.drawImage(img, (int) ((mywidth - img.getWidth(null) * scaley) / 2.0), 0, (int) (img.getWidth(null) * scaley), myheight, null);
}
- g2d.dispose();
-
+ g2d.dispose();
+
return thumb;
}
-
+
private static class ZoomIcon implements Icon {
-
+
private Icon ico;
private double zoom;
-
+
public ZoomIcon() {
this.ico = null;
this.zoom = 1.0;
}
+
@Override
public int getIconHeight() {
return ico == null ? 0 : (int) (zoom * ico.getIconHeight());
}
+
@Override
public int getIconWidth() {
return ico == null ? 0 : (int) (zoom * ico.getIconWidth());
}
+
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
if (ico != null) {
@@ -328,27 +332,31 @@ public void paintIcon(Component c, Graphics g, int x, int y) {
g2d.setTransform(oldt);
}
}
+
public void setIcon(Icon ico) {
this.ico = ico;
this.zoom = 1.0;
}
+
public void setZoom(double zoom) {
this.zoom = zoom;
}
+
public double getZoom() {
return zoom;
}
- }
+ }
+
private static class ExtensionsFilter extends FileFilter {
-
+
private String message;
private String[] extensions;
-
+
public ExtensionsFilter(String message, String... extensions) {
this.message = message;
- this.extensions = extensions;
+ this.extensions = extensions;
}
-
+
@Override
public boolean accept(java.io.File f) {
if (f.isDirectory()) {
@@ -358,26 +366,26 @@ public boolean accept(java.io.File f) {
int ipos = sFileName.lastIndexOf('.');
if (ipos >= 0) {
String sExt = sFileName.substring(ipos + 1);
- for(String s : extensions) {
+ for (String s : extensions) {
if (s.equalsIgnoreCase(sExt)) {
return true;
}
}
- }
+ }
return false;
- }
+ }
}
-
+
@Override
public String getDescription() {
return message;
- }
+ }
}
-
- /** This method is called from within the constructor to
- * initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is
- * always regenerated by the Form Editor.
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
*/
// //GEN-BEGIN:initComponents
private void initComponents() {
@@ -407,7 +415,8 @@ private void initComponents() {
jPanel2.setLayout(new java.awt.GridLayout(0, 1, 0, 5));
m_jbtnopen.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/camera.png"))); // NOI18N
- m_jbtnopen.setToolTipText("Open Folder");
+ java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N
+ m_jbtnopen.setToolTipText(bundle.getString("tiptext.openfolder")); // NOI18N
m_jbtnopen.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_jbtnopenActionPerformed(evt);
@@ -416,7 +425,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel2.add(m_jbtnopen);
m_jbtnclose.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/fileclose.png"))); // NOI18N
- m_jbtnclose.setToolTipText("Remove Picture");
+ m_jbtnclose.setToolTipText(bundle.getString("tiptext.removepicture")); // NOI18N
m_jbtnclose.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_jbtncloseActionPerformed(evt);
@@ -425,7 +434,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel2.add(m_jbtnclose);
m_jbtnzoomin.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/viewmag+.png"))); // NOI18N
- m_jbtnzoomin.setToolTipText("Zoom In");
+ m_jbtnzoomin.setToolTipText(bundle.getString("tiptext.zoomin")); // NOI18N
m_jbtnzoomin.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_jbtnzoominActionPerformed(evt);
@@ -439,7 +448,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel2.add(m_jPercent);
m_jbtnzoomout.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/viewmag-.png"))); // NOI18N
- m_jbtnzoomout.setToolTipText("Zoom Out");
+ m_jbtnzoomout.setToolTipText(bundle.getString("tiptext.zoomout")); // NOI18N
m_jbtnzoomout.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_jbtnzoomoutActionPerformed(evt);
@@ -455,28 +464,28 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
private void m_jbtnzoomoutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jbtnzoomoutActionPerformed
decZoom();
-
+
}//GEN-LAST:event_m_jbtnzoomoutActionPerformed
private void m_jbtnzoominActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jbtnzoominActionPerformed
incZoom();
-
+
}//GEN-LAST:event_m_jbtnzoominActionPerformed
private void m_jbtncloseActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jbtncloseActionPerformed
-
+
setImage(null);
-
+
}//GEN-LAST:event_m_jbtncloseActionPerformed
private void m_jbtnopenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jbtnopenActionPerformed
-
+
doLoad();
-
+
}//GEN-LAST:event_m_jbtnopenActionPerformed
-
-
+
+
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
@@ -488,5 +497,5 @@ private void m_jbtnopenActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FI
private javax.swing.JButton m_jbtnzoomin;
private javax.swing.JButton m_jbtnzoomout;
// End of variables declaration//GEN-END:variables
-
+
}
diff --git a/src-data/uk/chromis/data/gui/JLabelDirty.java b/src-data/uk/chromis/data/gui/JLabelDirty.java
index 4ce891e8..340a5e07 100644
--- a/src-data/uk/chromis/data/gui/JLabelDirty.java
+++ b/src-data/uk/chromis/data/gui/JLabelDirty.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/gui/JListData.java b/src-data/uk/chromis/data/gui/JListData.java
index 6eabec83..c8e5707f 100644
--- a/src-data/uk/chromis/data/gui/JListData.java
+++ b/src-data/uk/chromis/data/gui/JListData.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/gui/JListNavigator.java b/src-data/uk/chromis/data/gui/JListNavigator.java
index f909ecab..87e93f31 100644
--- a/src-data/uk/chromis/data/gui/JListNavigator.java
+++ b/src-data/uk/chromis/data/gui/JListNavigator.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/gui/JMessageDialog.java b/src-data/uk/chromis/data/gui/JMessageDialog.java
index 50911754..f53eeab1 100644
--- a/src-data/uk/chromis/data/gui/JMessageDialog.java
+++ b/src-data/uk/chromis/data/gui/JMessageDialog.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -25,6 +25,7 @@
import java.awt.Window;
import javax.swing.JFrame;
import uk.chromis.data.loader.LocalRes;
+import uk.chromis.pos.forms.AppLocal;
/**
*
* @author adrian
@@ -75,6 +76,9 @@ public static void showMessage(Component parent, MessageInf inf) {
myMsg.jlblErrorCode.setText(inf.getErrorCodeMsg());
myMsg.jlblMessage.setText("" + inf.getMessageMsg());
+ myMsg.setTitle(LocalRes.getIntString("title.message") + " - " + AppLocal.APP_VERSION);
+
+
// Capturamos el texto de la excepcion...
if (inf.getCause() == null) {
myMsg.jtxtException.setText(null);
diff --git a/src-data/uk/chromis/data/gui/JNavigator.java b/src-data/uk/chromis/data/gui/JNavigator.java
index d28d96b4..59af7a8d 100644
--- a/src-data/uk/chromis/data/gui/JNavigator.java
+++ b/src-data/uk/chromis/data/gui/JNavigator.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/gui/JSaver.form b/src-data/uk/chromis/data/gui/JSaver.form
index 8d2a1c79..ff02445c 100644
--- a/src-data/uk/chromis/data/gui/JSaver.form
+++ b/src-data/uk/chromis/data/gui/JSaver.form
@@ -22,7 +22,9 @@
-
+
+
+
@@ -39,7 +41,9 @@
-
+
+
+
@@ -58,7 +62,9 @@
-
+
+
+
diff --git a/src-data/uk/chromis/data/gui/JSaver.java b/src-data/uk/chromis/data/gui/JSaver.java
index 16ce1a2f..bd25ef2d 100644
--- a/src-data/uk/chromis/data/gui/JSaver.java
+++ b/src-data/uk/chromis/data/gui/JSaver.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,7 +16,6 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.data.gui;
import javax.swing.JPanel;
@@ -27,23 +26,26 @@
/**
*
- *
+ *
*/
public class JSaver extends JPanel implements StateListener {
-
+
/**
*
*/
protected BrowsableEditableData m_bd;
-
- /** Creates new form JSaver
- * @param bd */
+
+ /**
+ * Creates new form JSaver
+ *
+ * @param bd
+ */
public JSaver(BrowsableEditableData bd) {
initComponents();
-
+
m_bd = bd;
-
+
// m_bd.addBrowseListener(this);
m_bd.addStateListener(this);
}
@@ -54,34 +56,34 @@ public JSaver(BrowsableEditableData bd) {
*/
@Override
public void updateState(int iState) {
- switch (iState) {
- case BrowsableEditableData.ST_INSERT:
- jbtnNew.setEnabled(m_bd.canInsertData());
- jbtnDelete.setEnabled(false);
- jbtnSave.setEnabled(m_bd.canInsertData());
- break;
- case BrowsableEditableData.ST_DELETE:
- jbtnNew.setEnabled(m_bd.canInsertData());
- jbtnDelete.setEnabled(false);
- jbtnSave.setEnabled(m_bd.canDeleteData());
- break;
- case BrowsableEditableData.ST_NORECORD:
- jbtnNew.setEnabled(m_bd.canInsertData());
- jbtnDelete.setEnabled(false);
- jbtnSave.setEnabled(false);
- break;
- case BrowsableEditableData.ST_UPDATE:
- jbtnNew.setEnabled(m_bd.canInsertData());
- jbtnDelete.setEnabled(m_bd.canDeleteData());
- jbtnSave.setEnabled(m_bd.canUpdateData());
- break;
+ switch (iState) {
+ case BrowsableEditableData.ST_INSERT:
+ jbtnNew.setEnabled(m_bd.canInsertData());
+ jbtnDelete.setEnabled(false);
+ jbtnSave.setEnabled(m_bd.canInsertData());
+ break;
+ case BrowsableEditableData.ST_DELETE:
+ jbtnNew.setEnabled(m_bd.canInsertData());
+ jbtnDelete.setEnabled(false);
+ jbtnSave.setEnabled(m_bd.canDeleteData());
+ break;
+ case BrowsableEditableData.ST_NORECORD:
+ jbtnNew.setEnabled(m_bd.canInsertData());
+ jbtnDelete.setEnabled(false);
+ jbtnSave.setEnabled(false);
+ break;
+ case BrowsableEditableData.ST_UPDATE:
+ jbtnNew.setEnabled(m_bd.canInsertData());
+ jbtnDelete.setEnabled(m_bd.canDeleteData());
+ jbtnSave.setEnabled(m_bd.canUpdateData());
+ break;
}
- }
-
- /** This method is called from within the constructor to
- * initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is
- * always regenerated by the Form Editor.
+ }
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
*/
// //GEN-BEGIN:initComponents
private void initComponents() {
@@ -94,7 +96,8 @@ private void initComponents() {
setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jbtnNew.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/editnew.png"))); // NOI18N
- jbtnNew.setToolTipText("Add New");
+ java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N
+ jbtnNew.setToolTipText(bundle.getString("tiptext.addnew")); // NOI18N
jbtnNew.setFocusPainted(false);
jbtnNew.setFocusable(false);
jbtnNew.setMargin(new java.awt.Insets(2, 8, 2, 8));
@@ -107,7 +110,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
add(jbtnNew);
jbtnDelete.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/sale_delete.png"))); // NOI18N
- jbtnDelete.setToolTipText("Delete");
+ jbtnDelete.setToolTipText(bundle.getString("tiptext.delete")); // NOI18N
jbtnDelete.setFocusPainted(false);
jbtnDelete.setFocusable(false);
jbtnDelete.setMargin(new java.awt.Insets(2, 8, 2, 8));
@@ -121,7 +124,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
add(jSeparator1);
jbtnSave.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/filesave.png"))); // NOI18N
- jbtnSave.setToolTipText("Save");
+ jbtnSave.setToolTipText(bundle.getString("tiptext.save")); // NOI18N
jbtnSave.setFocusPainted(false);
jbtnSave.setFocusable(false);
jbtnSave.setMargin(new java.awt.Insets(2, 8, 2, 8));
@@ -137,36 +140,39 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
private void jbtnSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnSaveActionPerformed
try {
m_bd.saveData();
-
+ m_bd.refreshData();
} catch (BasicException eD) {
MessageInf msg = new MessageInf(MessageInf.SGN_NOTICE, LocalRes.getIntString("message.nosave"), eD);
msg.show(this);
- }
+ }
}//GEN-LAST:event_jbtnSaveActionPerformed
private void jbtnDeleteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnDeleteActionPerformed
try {
m_bd.actionDelete();
+ m_bd.refreshData();
} catch (BasicException eD) {
MessageInf msg = new MessageInf(MessageInf.SGN_NOTICE, LocalRes.getIntString("message.nodelete"), eD);
msg.show(this);
- }
+ }
}//GEN-LAST:event_jbtnDeleteActionPerformed
private void jbtnNewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnNewActionPerformed
try {
+ m_bd.refreshData();
m_bd.actionInsert();
+
} catch (BasicException eD) {
MessageInf msg = new MessageInf(MessageInf.SGN_NOTICE, LocalRes.getIntString("message.nonew"), eD);
msg.show(this);
}
}//GEN-LAST:event_jbtnNewActionPerformed
-
+
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JSeparator jSeparator1;
private javax.swing.JButton jbtnDelete;
private javax.swing.JButton jbtnNew;
private javax.swing.JButton jbtnSave;
// End of variables declaration//GEN-END:variables
-
+
}
diff --git a/src-data/uk/chromis/data/gui/JSort.java b/src-data/uk/chromis/data/gui/JSort.java
index a8bcefa5..7b011f86 100644
--- a/src-data/uk/chromis/data/gui/JSort.java
+++ b/src-data/uk/chromis/data/gui/JSort.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/gui/ListCellRendererBasic.java b/src-data/uk/chromis/data/gui/ListCellRendererBasic.java
index 81481857..c3cb2e87 100644
--- a/src-data/uk/chromis/data/gui/ListCellRendererBasic.java
+++ b/src-data/uk/chromis/data/gui/ListCellRendererBasic.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/gui/ListKeyed.java b/src-data/uk/chromis/data/gui/ListKeyed.java
index 9423c175..92c774d8 100644
--- a/src-data/uk/chromis/data/gui/ListKeyed.java
+++ b/src-data/uk/chromis/data/gui/ListKeyed.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/gui/ListQBFModelNumber.java b/src-data/uk/chromis/data/gui/ListQBFModelNumber.java
index cb159c27..8849e921 100644
--- a/src-data/uk/chromis/data/gui/ListQBFModelNumber.java
+++ b/src-data/uk/chromis/data/gui/ListQBFModelNumber.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,24 +16,26 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
-
package uk.chromis.data.gui;
import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;
import uk.chromis.data.loader.QBFCompareEnum;
+
/**
*
- * @author adrian
+ * @author adrian
*/
public class ListQBFModelNumber extends AbstractListModel implements ComboBoxModel {
-
-private Object[] m_items;
-private Object m_sel;
-/** Creates a new instance of ListQBFModelNumber
- * @param items */
+ private Object[] m_items;
+ private Object m_sel;
+
+ /**
+ * Creates a new instance of ListQBFModelNumber
+ *
+ * @param items
+ */
// public ListQBFModelNumber() {
// private ListQBFModelNumber(Object... items) {
public ListQBFModelNumber(Object... items) {
@@ -42,23 +44,20 @@ public ListQBFModelNumber(Object... items) {
}
// m_items = new Object[] {
-
/**
*
* @return
*/
- public static ListQBFModelNumber getMandatoryString() {
+ public static ListQBFModelNumber getMandatoryString() {
return new ListQBFModelNumber(
- QBFCompareEnum.COMP_NONE,
- QBFCompareEnum.COMP_EQUALS,
- QBFCompareEnum.COMP_RE,
- QBFCompareEnum.COMP_DISTINCT,
-// QBFCompareEnum.COMP_GREATER,
- QBFCompareEnum.COMP_GREATER,
- QBFCompareEnum.COMP_LESS,
-// QBFCompareEnum.COMP_GREATEROREQUALS,
- QBFCompareEnum.COMP_GREATEROREQUALS,
- QBFCompareEnum.COMP_LESSOREQUALS
+ QBFCompareEnum.COMP_NONE,
+ QBFCompareEnum.COMP_EQUALS,
+ QBFCompareEnum.COMP_RE,
+ QBFCompareEnum.COMP_DISTINCT,
+ QBFCompareEnum.COMP_GREATER,
+ QBFCompareEnum.COMP_LESS,
+ QBFCompareEnum.COMP_GREATEROREQUALS,
+ QBFCompareEnum.COMP_LESSOREQUALS
);
}
@@ -68,13 +67,13 @@ public static ListQBFModelNumber getMandatoryString() {
*/
public static ListQBFModelNumber getMandatoryNumber() {
return new ListQBFModelNumber(
- QBFCompareEnum.COMP_NONE,
- QBFCompareEnum.COMP_EQUALS,
- QBFCompareEnum.COMP_DISTINCT,
- QBFCompareEnum.COMP_GREATER,
- QBFCompareEnum.COMP_LESS,
- QBFCompareEnum.COMP_GREATEROREQUALS,
- QBFCompareEnum.COMP_LESSOREQUALS
+ QBFCompareEnum.COMP_NONE,
+ QBFCompareEnum.COMP_EQUALS,
+ QBFCompareEnum.COMP_DISTINCT,
+ QBFCompareEnum.COMP_GREATER,
+ QBFCompareEnum.COMP_LESS,
+ QBFCompareEnum.COMP_GREATEROREQUALS,
+ QBFCompareEnum.COMP_LESSOREQUALS
);
}
@@ -84,19 +83,48 @@ public static ListQBFModelNumber getMandatoryNumber() {
*/
public static ListQBFModelNumber getNonMandatoryString() {
return new ListQBFModelNumber(
- QBFCompareEnum.COMP_NONE,
- QBFCompareEnum.COMP_EQUALS,
- QBFCompareEnum.COMP_RE,
- QBFCompareEnum.COMP_DISTINCT,
- QBFCompareEnum.COMP_GREATER,
- QBFCompareEnum.COMP_LESS,
- QBFCompareEnum.COMP_GREATEROREQUALS,
- QBFCompareEnum.COMP_LESSOREQUALS,
- QBFCompareEnum.COMP_ISNULL,
-// QBFCompareEnum.COMP_ISNOTNULL,
-// };
-// m_sel = m_items[0];
- QBFCompareEnum.COMP_ISNOTNULL
+ QBFCompareEnum.COMP_NONE,
+ QBFCompareEnum.COMP_EQUALS,
+ QBFCompareEnum.COMP_RE,
+ QBFCompareEnum.COMP_DISTINCT,
+ QBFCompareEnum.COMP_GREATER,
+ QBFCompareEnum.COMP_LESS,
+ QBFCompareEnum.COMP_GREATEROREQUALS,
+ QBFCompareEnum.COMP_LESSOREQUALS,
+ QBFCompareEnum.COMP_ISNULL,
+ QBFCompareEnum.COMP_ISNOTNULL
+ );
+ }
+
+ /**
+ *
+ * @return
+ */
+ public static ListQBFModelNumber getNonMandatoryProduct() {
+ return new ListQBFModelNumber(
+ null,
+ QBFCompareEnum.COMP_EQUALS,
+ QBFCompareEnum.COMP_RE,
+ QBFCompareEnum.COMP_DISTINCT,
+ QBFCompareEnum.COMP_GREATER,
+ QBFCompareEnum.COMP_LESS,
+ QBFCompareEnum.COMP_GREATEROREQUALS,
+ QBFCompareEnum.COMP_LESSOREQUALS
+ );
+ }
+
+ /**
+ *
+ * @return
+ */
+ public static ListQBFModelNumber getNonMandatoryPrice() {
+ return new ListQBFModelNumber(
+ null,
+ QBFCompareEnum.COMP_LESS,
+ QBFCompareEnum.COMP_LESSOREQUALS,
+ QBFCompareEnum.COMP_EQUALS,
+ QBFCompareEnum.COMP_GREATER,
+ QBFCompareEnum.COMP_GREATEROREQUALS
);
}
@@ -106,17 +134,17 @@ public static ListQBFModelNumber getNonMandatoryString() {
*/
public static ListQBFModelNumber getNonMandatoryNumber() {
return new ListQBFModelNumber(
- QBFCompareEnum.COMP_NONE,
- QBFCompareEnum.COMP_EQUALS,
- QBFCompareEnum.COMP_DISTINCT,
- QBFCompareEnum.COMP_GREATER,
- QBFCompareEnum.COMP_LESS,
- QBFCompareEnum.COMP_GREATEROREQUALS,
- QBFCompareEnum.COMP_LESSOREQUALS,
- QBFCompareEnum.COMP_ISNULL,
- QBFCompareEnum.COMP_ISNOTNULL
+ QBFCompareEnum.COMP_NONE,
+ QBFCompareEnum.COMP_EQUALS,
+ QBFCompareEnum.COMP_DISTINCT,
+ QBFCompareEnum.COMP_GREATER,
+ QBFCompareEnum.COMP_LESS,
+ QBFCompareEnum.COMP_GREATEROREQUALS,
+ QBFCompareEnum.COMP_LESSOREQUALS,
+ QBFCompareEnum.COMP_ISNULL,
+ QBFCompareEnum.COMP_ISNOTNULL
);
- }
+ }
/**
*
@@ -124,34 +152,31 @@ public static ListQBFModelNumber getNonMandatoryNumber() {
*/
public static ListQBFModelNumber getOverrideMandatoryNumber() {
return new ListQBFModelNumber(
-// QBFCompareEnum.COMP_NONE,
- QBFCompareEnum.COMP_EQUALS,
- QBFCompareEnum.COMP_DISTINCT,
- QBFCompareEnum.COMP_GREATER,
- QBFCompareEnum.COMP_LESS,
- QBFCompareEnum.COMP_GREATEROREQUALS,
- QBFCompareEnum.COMP_LESSOREQUALS
+ QBFCompareEnum.COMP_EQUALS,
+ QBFCompareEnum.COMP_DISTINCT,
+ QBFCompareEnum.COMP_GREATER,
+ QBFCompareEnum.COMP_LESS,
+ QBFCompareEnum.COMP_GREATEROREQUALS,
+ QBFCompareEnum.COMP_LESSOREQUALS
);
- }
-
-
+ }
@Override
- public Object getElementAt(int index) {
+ public Object getElementAt(int index) {
return m_items[index];
}
-
+
@Override
public int getSize() {
return m_items.length;
}
-
+
@Override
public Object getSelectedItem() {
return m_sel;
}
-
+
@Override
public void setSelectedItem(Object anItem) {
m_sel = anItem;
diff --git a/src-data/uk/chromis/data/gui/ListValModel.java b/src-data/uk/chromis/data/gui/ListValModel.java
index e0f92e70..65c7353b 100644
--- a/src-data/uk/chromis/data/gui/ListValModel.java
+++ b/src-data/uk/chromis/data/gui/ListValModel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/gui/MessageInf.java b/src-data/uk/chromis/data/gui/MessageInf.java
index 348edf4b..e58f5f04 100644
--- a/src-data/uk/chromis/data/gui/MessageInf.java
+++ b/src-data/uk/chromis/data/gui/MessageInf.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/gui/NullIcon.java b/src-data/uk/chromis/data/gui/NullIcon.java
index 80606506..ea218ccf 100644
--- a/src-data/uk/chromis/data/gui/NullIcon.java
+++ b/src-data/uk/chromis/data/gui/NullIcon.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/gui/TableRendererBasic.java b/src-data/uk/chromis/data/gui/TableRendererBasic.java
index 3f282d99..9ce24baf 100644
--- a/src-data/uk/chromis/data/gui/TableRendererBasic.java
+++ b/src-data/uk/chromis/data/gui/TableRendererBasic.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/BaseSentence.java b/src-data/uk/chromis/data/loader/BaseSentence.java
index 72a9e679..7ee8fc46 100644
--- a/src-data/uk/chromis/data/loader/BaseSentence.java
+++ b/src-data/uk/chromis/data/loader/BaseSentence.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/BasicSentenceEnum.java b/src-data/uk/chromis/data/loader/BasicSentenceEnum.java
index 8d4ab405..c3830634 100644
--- a/src-data/uk/chromis/data/loader/BasicSentenceEnum.java
+++ b/src-data/uk/chromis/data/loader/BasicSentenceEnum.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/BatchSentence.java b/src-data/uk/chromis/data/loader/BatchSentence.java
index 7f9cc7e7..335c87fd 100644
--- a/src-data/uk/chromis/data/loader/BatchSentence.java
+++ b/src-data/uk/chromis/data/loader/BatchSentence.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -216,6 +216,11 @@ public void close() throws BasicException {
public int updateCount() {
return 0;
}
+
+ @Override
+ public java.math.BigDecimal getBigDecimal(int columnIndex) throws BasicException {
+ throw new BasicException(LocalRes.getIntString("exception.nodataset"));
+ }
}
/**
diff --git a/src-data/uk/chromis/data/loader/BatchSentenceResource.java b/src-data/uk/chromis/data/loader/BatchSentenceResource.java
index d769b408..117ecea1 100644
--- a/src-data/uk/chromis/data/loader/BatchSentenceResource.java
+++ b/src-data/uk/chromis/data/loader/BatchSentenceResource.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/BatchSentenceScript.java b/src-data/uk/chromis/data/loader/BatchSentenceScript.java
index bbe5eaa0..343dacab 100644
--- a/src-data/uk/chromis/data/loader/BatchSentenceScript.java
+++ b/src-data/uk/chromis/data/loader/BatchSentenceScript.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/CompanyDetails.java b/src-data/uk/chromis/data/loader/CompanyDetails.java
index afb0094d..9da10780 100644
--- a/src-data/uk/chromis/data/loader/CompanyDetails.java
+++ b/src-data/uk/chromis/data/loader/CompanyDetails.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/ComparatorCreator.java b/src-data/uk/chromis/data/loader/ComparatorCreator.java
index 4bdec0a5..a547e7ff 100644
--- a/src-data/uk/chromis/data/loader/ComparatorCreator.java
+++ b/src-data/uk/chromis/data/loader/ComparatorCreator.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/ComparatorCreatorBasic.java b/src-data/uk/chromis/data/loader/ComparatorCreatorBasic.java
index 4cb29985..77c9738a 100644
--- a/src-data/uk/chromis/data/loader/ComparatorCreatorBasic.java
+++ b/src-data/uk/chromis/data/loader/ComparatorCreatorBasic.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/DataField.java b/src-data/uk/chromis/data/loader/DataField.java
index 166f6b4d..6b3730ce 100644
--- a/src-data/uk/chromis/data/loader/DataField.java
+++ b/src-data/uk/chromis/data/loader/DataField.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/DataParams.java b/src-data/uk/chromis/data/loader/DataParams.java
index 283a37e2..516c19f7 100644
--- a/src-data/uk/chromis/data/loader/DataParams.java
+++ b/src-data/uk/chromis/data/loader/DataParams.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,35 +16,28 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.data.loader;
import java.util.Date;
import uk.chromis.basic.BasicException;
-
+import java.math.*;
/**
*
* @author adrianromero
*/
public abstract class DataParams implements DataWrite {
-
+
/**
*
*/
protected DataWrite dw;
-
+
/**
*
* @throws BasicException
*/
public abstract void writeValues() throws BasicException;
- /**
- *
- * @param paramIndex
- * @param iValue
- * @throws BasicException
- */
public void setInt(int paramIndex, Integer iValue) throws BasicException {
dw.setInt(paramIndex, iValue);
}
@@ -53,68 +46,34 @@ public void setString(int paramIndex, String sValue) throws BasicException {
dw.setString(paramIndex, sValue);
}
- /**
- *
- * @param paramIndex
- * @param dValue
- * @throws BasicException
- */
public void setDouble(int paramIndex, Double dValue) throws BasicException {
dw.setDouble(paramIndex, dValue);
}
- /**
- *
- * @param paramIndex
- * @param bValue
- * @throws BasicException
- */
+ public void setBigDecimal(int paramIndex, BigDecimal bdValue) throws BasicException {
+ dw.setBigDecimal(paramIndex, bdValue);
+ }
+
public void setBoolean(int paramIndex, Boolean bValue) throws BasicException {
dw.setBoolean(paramIndex, bValue);
}
- /**
- *
- * @param paramIndex
- * @param dValue
- * @throws BasicException
- */
public void setTimestamp(int paramIndex, Date dValue) throws BasicException {
dw.setTimestamp(paramIndex, dValue);
}
- /**
- *
- * @param paramIndex
- * @param value
- * @throws BasicException
- */
public void setBytes(int paramIndex, byte[] value) throws BasicException {
dw.setBytes(paramIndex, value);
}
- /**
- *
- * @param paramIndex
- * @param value
- * @throws BasicException
- */
public void setObject(int paramIndex, Object value) throws BasicException {
dw.setObject(paramIndex, value);
}
- /**
- *
- * @return
- */
public DataWrite getDataWrite() {
return dw;
}
- /**
- *
- * @param dw
- */
public void setDataWrite(DataWrite dw) {
this.dw = dw;
}
diff --git a/src-data/uk/chromis/data/loader/DataRead.java b/src-data/uk/chromis/data/loader/DataRead.java
index 27dbfc9d..0b7eecd8 100644
--- a/src-data/uk/chromis/data/loader/DataRead.java
+++ b/src-data/uk/chromis/data/loader/DataRead.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -35,6 +35,14 @@ public interface DataRead {
*/
public Integer getInt(int columnIndex) throws BasicException;
+ /**
+ *
+ * @param columnIndex
+ * @return
+ * @throws BasicException
+ */
+ public java.math.BigDecimal getBigDecimal(int columnIndex) throws BasicException;
+
/**
*
* @param columnIndex
diff --git a/src-data/uk/chromis/data/loader/DataResultSet.java b/src-data/uk/chromis/data/loader/DataResultSet.java
index 1bfa05a6..deee0c88 100644
--- a/src-data/uk/chromis/data/loader/DataResultSet.java
+++ b/src-data/uk/chromis/data/loader/DataResultSet.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/DataWrite.java b/src-data/uk/chromis/data/loader/DataWrite.java
index 70872a88..f2f9d049 100644
--- a/src-data/uk/chromis/data/loader/DataWrite.java
+++ b/src-data/uk/chromis/data/loader/DataWrite.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,71 +16,29 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.data.loader;
import uk.chromis.basic.BasicException;
/**
*
- * @author adrian
+ * @author adrian
*/
public interface DataWrite {
-
- /**
- *
- * @param paramIndex
- * @param iValue
- * @throws BasicException
- */
+
public void setInt(int paramIndex, Integer iValue) throws BasicException;
- /**
- *
- * @param paramIndex
- * @param sValue
- * @throws BasicException
- */
+
public void setString(int paramIndex, String sValue) throws BasicException;
- /**
- *
- * @param paramIndex
- * @param dValue
- * @throws BasicException
- */
public void setDouble(int paramIndex, Double dValue) throws BasicException;
- /**
- *
- * @param paramIndex
- * @param bValue
- * @throws BasicException
- */
public void setBoolean(int paramIndex, Boolean bValue) throws BasicException;
- /**
- *
- * @param paramIndex
- * @param dValue
- * @throws BasicException
- */
public void setTimestamp(int paramIndex, java.util.Date dValue) throws BasicException;
-
- //public void setBinaryStream(int paramIndex, java.io.InputStream in, int length) throws DataException;
-
- /**
- *
- * @param paramIndex
- * @param value
- * @throws BasicException
- */
- public void setBytes(int paramIndex, byte[] value) throws BasicException;
- /**
- *
- * @param paramIndex
- * @param value
- * @throws BasicException
- */
+ public void setBytes(int paramIndex, byte[] value) throws BasicException;
+
public void setObject(int paramIndex, Object value) throws BasicException;
+
+ public void setBigDecimal(int paramIndex, java.math.BigDecimal bdValue) throws BasicException;
}
diff --git a/src-data/uk/chromis/data/loader/DataWriteUtils.java b/src-data/uk/chromis/data/loader/DataWriteUtils.java
index eeafb315..42de7b93 100644
--- a/src-data/uk/chromis/data/loader/DataWriteUtils.java
+++ b/src-data/uk/chromis/data/loader/DataWriteUtils.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/Datas.java b/src-data/uk/chromis/data/loader/Datas.java
index 1aed7770..ba970e71 100644
--- a/src-data/uk/chromis/data/loader/Datas.java
+++ b/src-data/uk/chromis/data/loader/Datas.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,76 +16,36 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.data.loader;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import uk.chromis.basic.BasicException;
+import java.math.*;
/**
*
- *
+ *
*/
public abstract class Datas {
-
- /**
- *
- */
- public final static Datas INT = new DatasINT();
- /**
- *
- */
+ public final static Datas INT = new DatasINT();
+ public final static Datas PERCENT = new DatasPERCENT();
public final static Datas STRING = new DatasSTRING();
-
- /**
- *
- */
public final static Datas DOUBLE = new DatasDOUBLE();
-
- /**
- *
- */
public final static Datas BOOLEAN = new DatasBOOLEAN();
-
- /**
- *
- */
public final static Datas TIMESTAMP = new DatasTIMESTAMP();
-
- /**
- *
- */
public final static Datas BYTES = new DatasBYTES();
-
- /**
- *
- */
public final static Datas IMAGE = new DatasIMAGE();
- //public final static Datas INPUTSTREAM = new DatasINPUTSTREAM();
-
- /**
- *
- */
- public final static Datas OBJECT = new DatasOBJECT();
-
- /**
- *
- */
+ public final static Datas OBJECT = new DatasOBJECT();
public final static Datas SERIALIZABLE = new DatasSERIALIZABLE();
-
- /**
- *
- */
public final static Datas NULL = new DatasNULL();
-
- private static DateFormat tsf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
-
- /** Creates a new instance of Datas */
+ public final static Datas BIGDECIMAL = new DatasBIGDECIMAL();
+ private static DateFormat tsf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
+
private Datas() {
}
-
+
/**
*
* @param dr
@@ -104,10 +64,7 @@ private Datas() {
*/
public abstract void setValue(DataWrite dw, int i, Object value) throws BasicException;
- /**
- *
- * @return
- */
+
public abstract Class getClassValue();
/**
@@ -124,7 +81,7 @@ private Datas() {
* @return
*/
protected abstract int compareAbstract(Object o1, Object o2);
-
+
/**
*
* @param value
@@ -137,7 +94,7 @@ public String toString(Object value) {
return toStringAbstract(value);
}
}
-
+
/**
*
* @param o1
@@ -157,131 +114,195 @@ public int compare(Object o1, Object o2) {
return compareAbstract(o1, o2);
}
}
-
+
private static final class DatasINT extends Datas {
+
public Object getValue(DataRead dr, int i) throws BasicException {
return dr.getInt(i);
}
+
public void setValue(DataWrite dw, int i, Object value) throws BasicException {
dw.setInt(i, (Integer) value);
}
+
public Class getClassValue() {
return java.lang.Integer.class;
}
+
protected String toStringAbstract(Object value) {
return ((Integer) value).toString();
}
+
protected int compareAbstract(Object o1, Object o2) {
return ((Integer) o1).compareTo((Integer) o2);
- }
+ }
}
+
private static final class DatasSTRING extends Datas {
+
public Object getValue(DataRead dr, int i) throws BasicException {
return dr.getString(i);
}
+
public void setValue(DataWrite dw, int i, Object value) throws BasicException {
dw.setString(i, (String) value);
}
+
public Class getClassValue() {
return java.lang.String.class;
}
+
protected String toStringAbstract(Object value) {
return "\'" + DataWriteUtils.getEscaped((String) value) + "\'";
}
+
protected int compareAbstract(Object o1, Object o2) {
return ((String) o1).compareTo((String) o2);
- }
+ }
}
+
+ private static final class DatasBIGDECIMAL extends Datas {
+
+ public Object getValue(DataRead dr, int i) throws BasicException {
+ return dr.getBigDecimal(i);
+ }
+
+ public void setValue(DataWrite dw, int i, Object value) throws BasicException {
+ dw.setBigDecimal(i, (BigDecimal) value);
+ }
+
+ public Class getClassValue() {
+ return java.math.BigDecimal.class;
+ }
+
+ protected String toStringAbstract(Object value) {
+ return ((BigDecimal) value).toString();
+ }
+
+ protected int compareAbstract(Object o1, Object o2) {
+ return ((BigDecimal) o1).compareTo((BigDecimal) o2);
+ }
+ }
+
private static final class DatasDOUBLE extends Datas {
+
public Object getValue(DataRead dr, int i) throws BasicException {
return dr.getDouble(i);
}
+
public void setValue(DataWrite dw, int i, Object value) throws BasicException {
dw.setDouble(i, (Double) value);
}
+
public Class getClassValue() {
return java.lang.Double.class;
}
+
protected String toStringAbstract(Object value) {
return ((Double) value).toString();
}
+
protected int compareAbstract(Object o1, Object o2) {
return ((Double) o1).compareTo((Double) o2);
- }
+ }
}
+
private static final class DatasBOOLEAN extends Datas {
+
public Object getValue(DataRead dr, int i) throws BasicException {
return dr.getBoolean(i);
}
+
public void setValue(DataWrite dw, int i, Object value) throws BasicException {
dw.setBoolean(i, (Boolean) value);
}
+
public Class getClassValue() {
return java.lang.Boolean.class;
}
+
protected String toStringAbstract(Object value) {
return ((Boolean) value).toString();
}
+
protected int compareAbstract(Object o1, Object o2) {
return ((Boolean) o1).compareTo((Boolean) o2);
- }
+ }
}
+
private static final class DatasTIMESTAMP extends Datas {
+
public Object getValue(DataRead dr, int i) throws BasicException {
return dr.getTimestamp(i);
}
- public void setValue(DataWrite dw, int i, Object value) throws BasicException {
+
+ public void setValue(DataWrite dw, int i, Object value) throws BasicException {
dw.setTimestamp(i, (java.util.Date) value);
}
+
public Class getClassValue() {
return java.util.Date.class;
}
+
protected String toStringAbstract(Object value) {
return tsf.format(value);
}
+
protected int compareAbstract(Object o1, Object o2) {
return ((java.util.Date) o1).compareTo((java.util.Date) o2);
- }
+ }
}
+
private static final class DatasBYTES extends Datas {
+
public Object getValue(DataRead dr, int i) throws BasicException {
return dr.getBytes(i);
}
+
public void setValue(DataWrite dw, int i, Object value) throws BasicException {
dw.setBytes(i, (byte[]) value);
}
+
public Class getClassValue() {
return byte[].class;
}
+
protected String toStringAbstract(Object value) {
return "0x" + ImageUtils.bytes2hex((byte[]) value);
}
+
protected int compareAbstract(Object o1, Object o2) {
throw new UnsupportedOperationException();
- }
- }
+ }
+ }
+
private static final class DatasIMAGE extends Datas {
+
@Override
public Object getValue(DataRead dr, int i) throws BasicException {
return ImageUtils.readImage(dr.getBytes(i));
}
+
@Override
public void setValue(DataWrite dw, int i, Object value) throws BasicException {
dw.setBytes(i, ImageUtils.writeImage((java.awt.image.BufferedImage) value));
}
+
@Override
public Class getClassValue() {
return java.awt.image.BufferedImage.class;
}
+
@Override
protected String toStringAbstract(Object value) {
return "0x" + ImageUtils.bytes2hex(ImageUtils.writeImage((java.awt.image.BufferedImage) value));
}
+
@Override
protected int compareAbstract(Object o1, Object o2) {
throw new UnsupportedOperationException();
- }
- }
+ }
+ }
// private static final class DatasINPUTSTREAM extends Datas {
// public Object getValue(DataRead dr, int i) throws DataException {
// byte[] b = dr.getBytes(i);
@@ -290,57 +311,96 @@ protected int compareAbstract(Object o1, Object o2) {
// public void setValue(DataWrite dw, int i, Object value) throws DataException {
// }
// }
+
private static final class DatasOBJECT extends Datas {
+
public Object getValue(DataRead dr, int i) throws BasicException {
return dr.getObject(i);
}
+
public void setValue(DataWrite dw, int i, Object value) throws BasicException {
dw.setObject(i, value);
}
+
public Class getClassValue() {
return java.lang.Object.class;
}
+
protected String toStringAbstract(Object value) {
return "0x" + ImageUtils.bytes2hex(ImageUtils.writeSerializable(value));
}
+
protected int compareAbstract(Object o1, Object o2) {
throw new UnsupportedOperationException();
- }
+ }
}
-
+
private static final class DatasSERIALIZABLE extends Datas {
+
public Object getValue(DataRead dr, int i) throws BasicException {
return ImageUtils.readSerializable(dr.getBytes(i));
}
+
public void setValue(DataWrite dw, int i, Object value) throws BasicException {
dw.setBytes(i, ImageUtils.writeSerializable(value));
}
+
public Class getClassValue() {
return java.lang.Object.class;
}
+
protected String toStringAbstract(Object value) {
return "0x" + ImageUtils.bytes2hex(ImageUtils.writeSerializable(value));
}
+
protected int compareAbstract(Object o1, Object o2) {
throw new UnsupportedOperationException();
- }
- }
-
+ }
+ }
+
+ private static final class DatasPERCENT extends Datas {
+
+ public Object getValue(DataRead dr, int i) throws BasicException {
+ return null;
+ }
+
+ public void setValue(DataWrite dw, int i, Object value) throws BasicException {
+ // No asigno null, no asigno nada.
+ }
+
+ public Class getClassValue() {
+ return java.lang.Object.class;
+ }
+
+ protected String toStringAbstract(Object value) {
+ return "null";
+ }
+
+ protected int compareAbstract(Object o1, Object o2) {
+ throw new UnsupportedOperationException();
+ }
+ }
+
private static final class DatasNULL extends Datas {
+
public Object getValue(DataRead dr, int i) throws BasicException {
return null;
}
+
public void setValue(DataWrite dw, int i, Object value) throws BasicException {
// No asigno null, no asigno nada.
}
+
public Class getClassValue() {
return java.lang.Object.class;
}
+
protected String toStringAbstract(Object value) {
return "null";
}
+
protected int compareAbstract(Object o1, Object o2) {
throw new UnsupportedOperationException();
- }
- }
+ }
+ }
}
diff --git a/src-data/uk/chromis/data/loader/IKeyGetter.java b/src-data/uk/chromis/data/loader/IKeyGetter.java
index 838b4a10..259a95bd 100644
--- a/src-data/uk/chromis/data/loader/IKeyGetter.java
+++ b/src-data/uk/chromis/data/loader/IKeyGetter.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/IKeyed.java b/src-data/uk/chromis/data/loader/IKeyed.java
index ea14dfbd..e0ff122d 100644
--- a/src-data/uk/chromis/data/loader/IKeyed.java
+++ b/src-data/uk/chromis/data/loader/IKeyed.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/IRenderString.java b/src-data/uk/chromis/data/loader/IRenderString.java
index 60491dcf..acea64f9 100644
--- a/src-data/uk/chromis/data/loader/IRenderString.java
+++ b/src-data/uk/chromis/data/loader/IRenderString.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/ISQLBuilderStatic.java b/src-data/uk/chromis/data/loader/ISQLBuilderStatic.java
index 0acea439..04c934c9 100644
--- a/src-data/uk/chromis/data/loader/ISQLBuilderStatic.java
+++ b/src-data/uk/chromis/data/loader/ISQLBuilderStatic.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/ImageUtils.java b/src-data/uk/chromis/data/loader/ImageUtils.java
index 63b7baa7..c8c4ab43 100644
--- a/src-data/uk/chromis/data/loader/ImageUtils.java
+++ b/src-data/uk/chromis/data/loader/ImageUtils.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/ImportSentence.java b/src-data/uk/chromis/data/loader/ImportSentence.java
index e4d02ab0..87afce37 100644
--- a/src-data/uk/chromis/data/loader/ImportSentence.java
+++ b/src-data/uk/chromis/data/loader/ImportSentence.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/JDBCSentence.java b/src-data/uk/chromis/data/loader/JDBCSentence.java
index 48176316..6e3558be 100644
--- a/src-data/uk/chromis/data/loader/JDBCSentence.java
+++ b/src-data/uk/chromis/data/loader/JDBCSentence.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,62 +16,64 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.data.loader;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import uk.chromis.basic.BasicException;
+import java.math.*;
/**
*
- *
+ *
*/
public abstract class JDBCSentence extends BaseSentence {
-
+
// Conexion
// protected Connection m_c;
+ /**
+ *
+ */
+ protected Session m_s;
/**
+ * Creates a new instance of BaseSentence
*
+ * @param s
*/
- protected Session m_s;
-
- /** Creates a new instance of BaseSentence
- * @param s */
public JDBCSentence(Session s) {
super();
- m_s = s;
+ m_s = s;
}
/**
*
*/
protected static final class JDBCDataResultSet implements DataResultSet {
-
+
private ResultSet m_rs;
private SerializerRead m_serread;
// private int m_iColumnCount;
- /**
- *
- * @param rs
- * @param serread
- */
- public JDBCDataResultSet(ResultSet rs, SerializerRead serread) {
+ /**
+ *
+ * @param rs
+ * @param serread
+ */
+ public JDBCDataResultSet(ResultSet rs, SerializerRead serread) {
m_rs = rs;
m_serread = serread;
// m_iColumnCount = -1;
}
- /**
- *
- * @param columnIndex
- * @return
- * @throws BasicException
- */
- public Integer getInt(int columnIndex) throws BasicException {
+ /**
+ *
+ * @param columnIndex
+ * @return
+ * @throws BasicException
+ */
+ public Integer getInt(int columnIndex) throws BasicException {
try {
int iValue = m_rs.getInt(columnIndex);
return m_rs.wasNull() ? null : new Integer(iValue);
@@ -80,13 +82,13 @@ public Integer getInt(int columnIndex) throws BasicException {
}
}
- /**
- *
- * @param columnIndex
- * @return
- * @throws BasicException
- */
- public String getString(int columnIndex) throws BasicException {
+ /**
+ *
+ * @param columnIndex
+ * @return
+ * @throws BasicException
+ */
+ public String getString(int columnIndex) throws BasicException {
try {
return m_rs.getString(columnIndex);
} catch (SQLException eSQL) {
@@ -94,13 +96,13 @@ public String getString(int columnIndex) throws BasicException {
}
}
- /**
- *
- * @param columnIndex
- * @return
- * @throws BasicException
- */
- public Double getDouble(int columnIndex) throws BasicException {
+ /**
+ *
+ * @param columnIndex
+ * @return
+ * @throws BasicException
+ */
+ public Double getDouble(int columnIndex) throws BasicException {
try {
double dValue = m_rs.getDouble(columnIndex);
return m_rs.wasNull() ? null : new Double(dValue);
@@ -109,13 +111,13 @@ public Double getDouble(int columnIndex) throws BasicException {
}
}
- /**
- *
- * @param columnIndex
- * @return
- * @throws BasicException
- */
- public Boolean getBoolean(int columnIndex) throws BasicException {
+ /**
+ *
+ * @param columnIndex
+ * @return
+ * @throws BasicException
+ */
+ public Boolean getBoolean(int columnIndex) throws BasicException {
try {
boolean bValue = m_rs.getBoolean(columnIndex);
return m_rs.wasNull() ? null : new Boolean(bValue);
@@ -123,14 +125,14 @@ public Boolean getBoolean(int columnIndex) throws BasicException {
throw new BasicException(eSQL);
}
}
-
- /**
- *
- * @param columnIndex
- * @return
- * @throws BasicException
- */
- public java.util.Date getTimestamp(int columnIndex) throws BasicException {
+
+ /**
+ *
+ * @param columnIndex
+ * @return
+ * @throws BasicException
+ */
+ public java.util.Date getTimestamp(int columnIndex) throws BasicException {
try {
java.sql.Timestamp ts = m_rs.getTimestamp(columnIndex);
return ts == null ? null : new java.util.Date(ts.getTime());
@@ -139,13 +141,13 @@ public java.util.Date getTimestamp(int columnIndex) throws BasicException {
}
}
- /**
- *
- * @param columnIndex
- * @return
- * @throws BasicException
- */
- public byte[] getBytes(int columnIndex) throws BasicException {
+ /**
+ *
+ * @param columnIndex
+ * @return
+ * @throws BasicException
+ */
+ public byte[] getBytes(int columnIndex) throws BasicException {
try {
return m_rs.getBytes(columnIndex);
} catch (SQLException eSQL) {
@@ -153,13 +155,13 @@ public byte[] getBytes(int columnIndex) throws BasicException {
}
}
- /**
- *
- * @param columnIndex
- * @return
- * @throws BasicException
- */
- public Object getObject(int columnIndex) throws BasicException {
+ /**
+ *
+ * @param columnIndex
+ * @return
+ * @throws BasicException
+ */
+ public Object getObject(int columnIndex) throws BasicException {
try {
return m_rs.getObject(columnIndex);
} catch (SQLException eSQL) {
@@ -167,12 +169,11 @@ public Object getObject(int columnIndex) throws BasicException {
}
}
- /**
- *
- * @return
- * @throws BasicException
- */
- public DataField[] getDataField() throws BasicException {
+ /**
+ *
+ * @return @throws BasicException
+ */
+ public DataField[] getDataField() throws BasicException {
try {
ResultSetMetaData md = m_rs.getMetaData();
DataField[] df = new DataField[md.getColumnCount()];
@@ -188,22 +189,20 @@ public DataField[] getDataField() throws BasicException {
}
}
- /**
- *
- * @return
- * @throws BasicException
- */
- @Override
+ /**
+ *
+ * @return @throws BasicException
+ */
+ @Override
public Object getCurrent() throws BasicException {
return m_serread.readValues(this);
}
- /**
- *
- * @return
- * @throws BasicException
- */
- @Override
+ /**
+ *
+ * @return @throws BasicException
+ */
+ @Override
public boolean next() throws BasicException {
try {
return m_rs.next();
@@ -212,11 +211,11 @@ public boolean next() throws BasicException {
}
}
- /**
- *
- * @throws BasicException
- */
- @Override
+ /**
+ *
+ * @throws BasicException
+ */
+ @Override
public void close() throws BasicException {
try {
m_rs.close();
@@ -225,14 +224,23 @@ public void close() throws BasicException {
}
}
- /**
- *
- * @return
- * @throws BasicException
- */
- @Override
+ /**
+ *
+ * @return @throws BasicException
+ */
+ @Override
public int updateCount() throws BasicException {
return -1; // es decir somos datos.
- }
- }
+ }
+
+ @Override
+ public BigDecimal getBigDecimal(int columnIndex) throws BasicException {
+ try {
+ BigDecimal bdValue = m_rs.getBigDecimal(columnIndex);
+ return m_rs.wasNull() ? null : bdValue;
+ } catch (SQLException eSQL) {
+ throw new BasicException(eSQL);
+ }
+ }
+ }
}
diff --git a/src-data/uk/chromis/data/loader/KeyGetterBasic.java b/src-data/uk/chromis/data/loader/KeyGetterBasic.java
index de012412..160f706c 100644
--- a/src-data/uk/chromis/data/loader/KeyGetterBasic.java
+++ b/src-data/uk/chromis/data/loader/KeyGetterBasic.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/KeyGetterBuilder.java b/src-data/uk/chromis/data/loader/KeyGetterBuilder.java
index 46fbc7d4..971bfb92 100644
--- a/src-data/uk/chromis/data/loader/KeyGetterBuilder.java
+++ b/src-data/uk/chromis/data/loader/KeyGetterBuilder.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/KeyGetterFirst.java b/src-data/uk/chromis/data/loader/KeyGetterFirst.java
index bf9e113f..efd280f6 100644
--- a/src-data/uk/chromis/data/loader/KeyGetterFirst.java
+++ b/src-data/uk/chromis/data/loader/KeyGetterFirst.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/LocalRes.java b/src-data/uk/chromis/data/loader/LocalRes.java
index a1423348..ef06fedd 100644
--- a/src-data/uk/chromis/data/loader/LocalRes.java
+++ b/src-data/uk/chromis/data/loader/LocalRes.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/MetaSentence.java b/src-data/uk/chromis/data/loader/MetaSentence.java
index cbd1a16d..68b5688d 100644
--- a/src-data/uk/chromis/data/loader/MetaSentence.java
+++ b/src-data/uk/chromis/data/loader/MetaSentence.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,21 +16,21 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.data.loader;
import java.sql.DatabaseMetaData;
-import java.sql.SQLException;
+import java.sql.SQLException;
import java.util.ArrayList;
import uk.chromis.basic.BasicException;
import uk.chromis.data.loader.JDBCSentence.JDBCDataResultSet;
+import java.math.*;
/**
*
- *
+ *
*/
public class MetaSentence extends JDBCSentence {
-
+
private String m_sSentence;
/**
@@ -43,11 +43,14 @@ public class MetaSentence extends JDBCSentence {
*/
protected SerializerWrite m_SerWrite = null;
- /** Creates a new instance of MetaDataSentence
+ /**
+ * Creates a new instance of MetaDataSentence
+ *
* @param s
* @param sSentence
* @param serwrite
- * @param serread */
+ * @param serread
+ */
public MetaSentence(Session s, String sSentence, SerializerWrite serwrite, SerializerRead serread) {
super(s);
m_sSentence = sSentence;
@@ -64,52 +67,65 @@ public MetaSentence(Session s, String sSentence, SerializerWrite serwrite, Seria
public MetaSentence(Session s, String sSentence, SerializerRead serread) {
this(s, sSentence, null, serread);
}
-
+
private static class MetaParameter implements DataWrite {
private ArrayList m_aParams;
- /** Creates a new instance of MetaParameter */
+ /**
+ * Creates a new instance of MetaParameter
+ */
public MetaParameter() {
m_aParams = new ArrayList();
}
-
+
public void setDouble(int paramIndex, Double dValue) throws BasicException {
throw new BasicException(LocalRes.getIntString("exception.noparamtype"));
}
+
+ public void setBigDecimal(int paramIndex, BigDecimal bdValue) throws BasicException {
+ throw new BasicException(LocalRes.getIntString("exception.noparamtype"));
+ }
+
public void setBoolean(int paramIndex, Boolean bValue) throws BasicException {
throw new BasicException(LocalRes.getIntString("exception.noparamtype"));
}
+
public void setInt(int paramIndex, Integer iValue) throws BasicException {
throw new BasicException(LocalRes.getIntString("exception.noparamtype"));
- }
+ }
+
public void setString(int paramIndex, String sValue) throws BasicException {
ensurePlace(paramIndex - 1);
m_aParams.set(paramIndex - 1, sValue);
}
+
public void setTimestamp(int paramIndex, java.util.Date dValue) throws BasicException {
throw new BasicException(LocalRes.getIntString("exception.noparamtype"));
}
// public void setBinaryStream(int paramIndex, java.io.InputStream in, int length) throws DataException {
// throw new DataException("Param type not allowed");
// }
+
public void setBytes(int paramIndex, byte[] value) throws BasicException {
- throw new BasicException(LocalRes.getIntString("exception.noparamtype"));
- }
+ throw new BasicException(LocalRes.getIntString("exception.noparamtype"));
+ }
+
public void setObject(int paramIndex, Object value) throws BasicException {
setString(paramIndex, (value == null) ? null : value.toString());
}
public String getString(int index) {
return (String) m_aParams.get(index);
- }
-
+ }
+
private void ensurePlace(int i) {
m_aParams.ensureCapacity(i);
- while (i >= m_aParams.size()){
+ while (i >= m_aParams.size()) {
m_aParams.add(null);
}
}
+
}
/**
@@ -119,20 +135,19 @@ private void ensurePlace(int i) {
* @throws BasicException
*/
public DataResultSet openExec(Object params) throws BasicException {
-
+
closeExec();
-
+
try {
DatabaseMetaData db = m_s.getConnection().getMetaData();
- MetaParameter mp = new MetaParameter();
+ MetaParameter mp = new MetaParameter();
if (params != null) {
// si m_SerWrite fuera null deberiamos cascar
- m_SerWrite.writeValues(mp, params);
+ m_SerWrite.writeValues(mp, params);
}
// Catalogs Has Schemas Has Objects
-
// Lo generico de la base de datos
if ("getCatalogs".equals(m_sSentence)) {
return new JDBCDataResultSet(db.getCatalogs(), m_SerRead);
@@ -143,30 +158,29 @@ public DataResultSet openExec(Object params) throws BasicException {
} else if ("getTypeInfo".equals(m_sSentence)) {
return new JDBCDataResultSet(db.getTypeInfo(), m_SerRead);
- // Los objetos por catalogo, esquema
-
- // Los tipos definidos por usuario
+ // Los objetos por catalogo, esquema
+ // Los tipos definidos por usuario
} else if ("getUDTs".equals(m_sSentence)) {
- return new JDBCDataResultSet(db.getUDTs(mp.getString(0), mp.getString(1), null, null), m_SerRead);
+ return new JDBCDataResultSet(db.getUDTs(mp.getString(0), mp.getString(1), null, null), m_SerRead);
} else if ("getSuperTypes".equals(m_sSentence)) {
- return new JDBCDataResultSet(db.getSuperTypes(mp.getString(0), mp.getString(1), mp.getString(2)), m_SerRead);
+ return new JDBCDataResultSet(db.getSuperTypes(mp.getString(0), mp.getString(1), mp.getString(2)), m_SerRead);
- // Los atributos
+ // Los atributos
} else if ("getAttributes".equals(m_sSentence)) {
return new JDBCDataResultSet(db.getAttributes(mp.getString(0), mp.getString(1), null, null), m_SerRead);
- // Las Tablas y sus objetos relacionados
+ // Las Tablas y sus objetos relacionados
} else if ("getTables".equals(m_sSentence)) {
return new JDBCDataResultSet(db.getTables(mp.getString(0), mp.getString(1), null, null), m_SerRead);
} else if ("getSuperTables".equals(m_sSentence)) {
- return new JDBCDataResultSet(db.getSuperTables(mp.getString(0), mp.getString(1), mp.getString(2)), m_SerRead);
+ return new JDBCDataResultSet(db.getSuperTables(mp.getString(0), mp.getString(1), mp.getString(2)), m_SerRead);
} else if ("getTablePrivileges".equals(m_sSentence)) {
return new JDBCDataResultSet(db.getTablePrivileges(mp.getString(0), mp.getString(1), mp.getString(2)), m_SerRead);
} else if ("getBestRowIdentifier".equals(m_sSentence)) {
return new JDBCDataResultSet(db.getBestRowIdentifier(mp.getString(0), mp.getString(1), mp.getString(2), 0, true), m_SerRead);
} else if ("getPrimaryKeys".equals(m_sSentence)) {
return new JDBCDataResultSet(db.getPrimaryKeys(mp.getString(0), mp.getString(1), mp.getString(2)), m_SerRead);
- } else if ("getColumnPrivileges".equals(m_sSentence)) {
+ } else if ("getColumnPrivileges".equals(m_sSentence)) {
return new JDBCDataResultSet(db.getColumnPrivileges(mp.getString(0), mp.getString(1), mp.getString(2), null), m_SerRead);
} else if ("getColumns".equals(m_sSentence)) {
return new JDBCDataResultSet(db.getColumns(mp.getString(0), mp.getString(1), mp.getString(2), null), m_SerRead);
@@ -181,7 +195,7 @@ public DataResultSet openExec(Object params) throws BasicException {
} else if ("getCrossReference".equals(m_sSentence)) {
return new JDBCDataResultSet(db.getCrossReference(mp.getString(0), mp.getString(1), mp.getString(2), null, null, null), m_SerRead);
- // Los procedimientos y sus objetos relacionados
+ // Los procedimientos y sus objetos relacionados
} else if ("getProcedures".equals(m_sSentence)) {
return new JDBCDataResultSet(db.getProcedures(mp.getString(0), mp.getString(1), null), m_SerRead);
} else if ("getProcedureColumns".equals(m_sSentence)) {
@@ -201,11 +215,10 @@ public DataResultSet openExec(Object params) throws BasicException {
*/
public void closeExec() throws BasicException {
}
-
+
/**
*
- * @return
- * @throws BasicException
+ * @return @throws BasicException
*/
public DataResultSet moreResults() throws BasicException {
return null;
diff --git a/src-data/uk/chromis/data/loader/NormalBuilder.java b/src-data/uk/chromis/data/loader/NormalBuilder.java
index d97b1f65..10c6a241 100644
--- a/src-data/uk/chromis/data/loader/NormalBuilder.java
+++ b/src-data/uk/chromis/data/loader/NormalBuilder.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,26 +16,29 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.data.loader;
import java.util.ArrayList;
import uk.chromis.basic.BasicException;
+import java.math.*;
/**
*
- *
+ *
*/
public class NormalBuilder implements ISQLBuilderStatic {
-
+
private String m_sSentence;
-
- /** Creates a new instance of NormalBuilder
- * @param sSentence */
+
+ /**
+ * Creates a new instance of NormalBuilder
+ *
+ * @param sSentence
+ */
public NormalBuilder(String sSentence) {
m_sSentence = sSentence;
}
-
+
/**
*
* @param sw
@@ -45,47 +48,54 @@ public NormalBuilder(String sSentence) {
*/
@Override
public String getSQL(SerializerWrite sw, Object params) throws BasicException {
-
+
NormalParameter mydw = new NormalParameter(m_sSentence);
if (sw != null) {
sw.writeValues(mydw, params);
}
return mydw.getSentence();
}
-
+
private static class NormalParameter implements DataWrite {
-
+
private String m_sSentence;
private ArrayList m_aParams; // of String
-
+
public NormalParameter(String sSentence) {
m_sSentence = sSentence;
m_aParams = new ArrayList();
}
-
+
@Override
public void setDouble(int paramIndex, Double dValue) throws BasicException {
ensurePlace(paramIndex - 1);
m_aParams.set(paramIndex - 1, DataWriteUtils.getSQLValue(dValue));
}
-
+
+ @Override
+ public void setBigDecimal(int paramIndex, BigDecimal bdValue) throws BasicException {
+ ensurePlace(paramIndex - 1);
+ m_aParams.set(paramIndex - 1, DataWriteUtils.getSQLValue(bdValue));
+ }
+
@Override
public void setBoolean(int paramIndex, Boolean bValue) throws BasicException {
ensurePlace(paramIndex - 1);
m_aParams.set(paramIndex - 1, DataWriteUtils.getSQLValue(bValue));
- }
+ }
+
@Override
public void setInt(int paramIndex, Integer iValue) throws BasicException {
ensurePlace(paramIndex - 1);
m_aParams.set(paramIndex - 1, DataWriteUtils.getSQLValue(iValue));
}
-
+
@Override
public void setString(int paramIndex, String sValue) throws BasicException {
ensurePlace(paramIndex - 1);
m_aParams.set(paramIndex - 1, DataWriteUtils.getSQLValue(sValue));
}
-
+
@Override
public void setTimestamp(int paramIndex, java.util.Date dValue) throws BasicException {
ensurePlace(paramIndex - 1);
@@ -94,25 +104,27 @@ public void setTimestamp(int paramIndex, java.util.Date dValue) throws BasicExce
// public void setBinaryStream(int paramIndex, java.io.InputStream in, int length) throws DataException{
// throw new DataException("Param type not allowed");
// }
+
@Override
public void setBytes(int paramIndex, byte[] value) throws BasicException {
throw new BasicException(LocalRes.getIntString("exception.noparamtype"));
}
+
@Override
public void setObject(int paramIndex, Object value) throws BasicException {
ensurePlace(paramIndex - 1);
m_aParams.set(paramIndex - 1, DataWriteUtils.getSQLValue(value));
}
-
+
private void ensurePlace(int i) {
m_aParams.ensureCapacity(i);
- while (i >= m_aParams.size()){
+ while (i >= m_aParams.size()) {
m_aParams.add(null);
}
}
-
+
public String getSentence() {
-
+
StringBuilder sNewSentence = new StringBuilder();
int iCount = 0;
int iPos;
@@ -130,8 +142,9 @@ public String getSentence() {
iLast = iPos + 1;
}
sNewSentence.append(m_sSentence.substring(iLast));
-
+
return sNewSentence.toString(); // sustituida
- }
- }
+ }
+
+ }
}
diff --git a/src-data/uk/chromis/data/loader/PreparedSentence.java b/src-data/uk/chromis/data/loader/PreparedSentence.java
index 15359ee1..7b6d23c3 100644
--- a/src-data/uk/chromis/data/loader/PreparedSentence.java
+++ b/src-data/uk/chromis/data/loader/PreparedSentence.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,7 +16,6 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.data.loader;
import java.sql.PreparedStatement;
@@ -26,10 +25,11 @@
import java.util.logging.Level;
import java.util.logging.Logger;
import uk.chromis.basic.BasicException;
+import java.math.*;
/**
*
- * @author adrianromero
+ * @author adrianromero
*/
public class PreparedSentence extends JDBCSentence {
@@ -46,10 +46,10 @@ public class PreparedSentence extends JDBCSentence {
*
*/
protected SerializerRead m_SerRead = null;
-
+
// Estado
private PreparedStatement m_Stmt;
-
+
/**
*
* @param s
@@ -57,9 +57,9 @@ public class PreparedSentence extends JDBCSentence {
* @param serwrite
* @param serread
*/
- public PreparedSentence(Session s, String sentence, SerializerWrite serwrite, SerializerRead serread) {
+ public PreparedSentence(Session s, String sentence, SerializerWrite serwrite, SerializerRead serread) {
super(s);
- m_sentence = sentence;
+ m_sentence = sentence;
m_SerWrite = serwrite;
m_SerRead = serread;
m_Stmt = null;
@@ -71,7 +71,7 @@ public PreparedSentence(Session s, String sentence, SerializerWrite serwrite, Se
* @param sentence
* @param serwrite
*/
- public PreparedSentence(Session s, String sentence, SerializerWrite serwrite) {
+ public PreparedSentence(Session s, String sentence, SerializerWrite serwrite) {
this(s, sentence, serwrite, null);
}
@@ -80,15 +80,17 @@ public PreparedSentence(Session s, String sentence, SerializerWrite serwrite) {
* @param s
* @param sentence
*/
- public PreparedSentence(Session s, String sentence) {
+ public PreparedSentence(Session s, String sentence) {
this(s, sentence, null, null);
}
-
+
private static final class PreparedSentencePars implements DataWrite {
private PreparedStatement m_ps;
- /** Creates a new instance of SQLParameter */
+ /**
+ * Creates a new instance of SQLParameter
+ */
PreparedSentencePars(PreparedStatement ps) {
m_ps = ps;
}
@@ -101,6 +103,7 @@ public void setInt(int paramIndex, Integer iValue) throws BasicException {
throw new BasicException(eSQL);
}
}
+
@Override
public void setString(int paramIndex, String sValue) throws BasicException {
try {
@@ -109,6 +112,7 @@ public void setString(int paramIndex, String sValue) throws BasicException {
throw new BasicException(eSQL);
}
}
+
@Override
public void setDouble(int paramIndex, Double dValue) throws BasicException {
try {
@@ -116,7 +120,8 @@ public void setDouble(int paramIndex, Double dValue) throws BasicException {
} catch (SQLException eSQL) {
throw new BasicException(eSQL);
}
- }
+ }
+
@Override
public void setBoolean(int paramIndex, Boolean bValue) throws BasicException {
try {
@@ -129,15 +134,16 @@ public void setBoolean(int paramIndex, Boolean bValue) throws BasicException {
} catch (SQLException eSQL) {
throw new BasicException(eSQL);
}
- }
+ }
+
@Override
- public void setTimestamp(int paramIndex, java.util.Date dValue) throws BasicException {
+ public void setTimestamp(int paramIndex, java.util.Date dValue) throws BasicException {
try {
m_ps.setObject(paramIndex, dValue == null ? null : new Timestamp(dValue.getTime()), Types.TIMESTAMP);
} catch (SQLException eSQL) {
throw new BasicException(eSQL);
}
- }
+ }
// public void setBinaryStream(int paramIndex, java.io.InputStream in, int length) throws DataException {
// try {
// m_ps.setBinaryStream(paramIndex, in, length);
@@ -145,6 +151,7 @@ public void setTimestamp(int paramIndex, java.util.Date dValue) throws BasicExce
// throw new DataException(eSQL);
// }
// }
+
@Override
public void setBytes(int paramIndex, byte[] value) throws BasicException {
try {
@@ -153,6 +160,7 @@ public void setBytes(int paramIndex, byte[] value) throws BasicException {
throw new BasicException(eSQL);
}
}
+
@Override
public void setObject(int paramIndex, Object value) throws BasicException {
try {
@@ -161,6 +169,15 @@ public void setObject(int paramIndex, Object value) throws BasicException {
throw new BasicException(eSQL);
}
}
+
+ @Override
+ public void setBigDecimal(int paramIndex, BigDecimal bdValue) throws BasicException {
+ try {
+ m_ps.setObject(paramIndex, bdValue);
+ } catch (SQLException eSQL) {
+ throw new BasicException(eSQL);
+ }
+ }
}
/**
@@ -173,7 +190,7 @@ public void setObject(int paramIndex, Object value) throws BasicException {
public DataResultSet openExec(Object params) throws BasicException {
// true -> un resultset
// false -> un updatecount (si -1 entonces se acabo)
-
+
closeExec();
try {
@@ -181,7 +198,7 @@ public DataResultSet openExec(Object params) throws BasicException {
logger.log(Level.INFO, "Executing prepared SQL: {0}", m_sentence);
m_Stmt = m_s.getConnection().prepareStatement(m_sentence);
-
+
if (m_SerWrite != null) {
// si m_SerWrite fuera null deberiamos cascar.
m_SerWrite.writeValues(new PreparedSentencePars(m_Stmt), params);
@@ -189,7 +206,7 @@ public DataResultSet openExec(Object params) throws BasicException {
if (m_Stmt.execute()) {
return new JDBCDataResultSet(m_Stmt.getResultSet(), m_SerRead);
- } else {
+ } else {
int iUC = m_Stmt.getUpdateCount();
if (iUC < 0) {
return null;
@@ -201,19 +218,18 @@ public DataResultSet openExec(Object params) throws BasicException {
throw new BasicException(eSQL);
}
}
-
+
/**
*
- * @return
- * @throws BasicException
+ * @return @throws BasicException
*/
@Override
public final DataResultSet moreResults() throws BasicException {
// true -> un resultset
// false -> un updatecount (si -1 entonces se acabo)
-
+
try {
- if (m_Stmt.getMoreResults()){
+ if (m_Stmt.getMoreResults()) {
// tenemos resultset
return new JDBCDataResultSet(m_Stmt.getResultSet(), m_SerRead);
} else {
@@ -236,15 +252,15 @@ public final DataResultSet moreResults() throws BasicException {
*/
@Override
public final void closeExec() throws BasicException {
-
+
if (m_Stmt != null) {
try {
m_Stmt.close();
- } catch (SQLException eSQL) {
+ } catch (SQLException eSQL) {
throw new BasicException(eSQL);
} finally {
m_Stmt = null;
}
}
- }
+ }
}
diff --git a/src-data/uk/chromis/data/loader/QBFBuilder.java b/src-data/uk/chromis/data/loader/QBFBuilder.java
index b8bb3811..b4e23912 100644
--- a/src-data/uk/chromis/data/loader/QBFBuilder.java
+++ b/src-data/uk/chromis/data/loader/QBFBuilder.java
@@ -16,23 +16,23 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.data.loader;
import uk.chromis.basic.BasicException;
+import java.math.*;
/**
*
- * @author adrian
+ * @author adrian
*/
public class QBFBuilder implements ISQLBuilderStatic {
-
- private final String m_sSentNullFilter; // la sentencia que se devuelve cuando el filtro es vacio
- private final String m_sSentBeginPart; // La sentencia que se devuelve es m_sSentBeginPart + ( filtro ) + m_sSentEndPart
- private final String m_sSentEndPart;
-
- private final String[] m_asFindFields;
-
+
+ private String m_sSentNullFilter; // la sentencia que se devuelve cuando el filtro es vacio
+ private String m_sSentBeginPart; // La sentencia que se devuelve es m_sSentBeginPart + ( filtro ) + m_sSentEndPart
+ private String m_sSentEndPart;
+
+ private String[] m_asFindFields;
+
// /** Creates a new instance of QBFBuilder */
// public QBFBuilder(TableDefinition tb, String[] asFindFields) {
// StringBuilder sent = new StringBuilder();
@@ -51,13 +51,25 @@ public class QBFBuilder implements ISQLBuilderStatic {
// m_sSentEndPart = "";
// m_asFindFields = asFindFields;
// }
+ /**
+ *
+ * @param sSentence
+ * @param asFindFields
+ */
+ public QBFBuilder(String sSentence, String[] asFindFields) {
+ CreateSentence(sSentence, asFindFields, true);
+ }
/**
*
* @param sSentence
* @param asFindFields
*/
- public QBFBuilder(String sSentence, String[] asFindFields) {
+ public QBFBuilder(String sSentence, String[] asFindFields, boolean bNullFilterAll) {
+ CreateSentence(sSentence, asFindFields, bNullFilterAll);
+ }
+
+ private void CreateSentence(String sSentence, String[] asFindFields, boolean bNullFilterAll) {
int iPos = sSentence.indexOf("?(QBF_FILTER)");
if (iPos < 0) {
m_sSentBeginPart = sSentence;
@@ -66,7 +78,9 @@ public QBFBuilder(String sSentence, String[] asFindFields) {
} else {
m_sSentBeginPart = sSentence.substring(0, iPos);
m_sSentEndPart = sSentence.substring(iPos + 13);
- m_sSentNullFilter = m_sSentBeginPart + "(1=1)" + m_sSentEndPart;
+ m_sSentNullFilter = m_sSentBeginPart
+ + (bNullFilterAll ? "(1=1)" : "(1=0)")
+ + m_sSentEndPart;
}
m_asFindFields = asFindFields;
}
@@ -80,37 +94,46 @@ public QBFBuilder(String sSentence, String[] asFindFields) {
*/
@Override
public String getSQL(SerializerWrite sw, Object params) throws BasicException {
-
+
QBFParameter mydw = new QBFParameter(m_asFindFields);
if (sw == null || params == null) {
return m_sSentNullFilter;
} else {
sw.writeValues(mydw, params);
String sFilter = mydw.getFilter();
- if (sFilter.length() == 0) {
+ if (sFilter.length() == 0) {
return m_sSentNullFilter; // no hay filtro
} else {
return m_sSentBeginPart + "(" + sFilter + ")" + m_sSentEndPart; // incluimos el filtro
}
- }
- }
-
+ }
+ }
+
private static class QBFParameter implements DataWrite {
-
+
private final String[] m_asFindFields;
private final QBFCompareEnum[] m_aiCondFields;
private final String[] m_aParams;
-
+
public QBFParameter(String[] asFindFields) {
m_asFindFields = asFindFields;
m_aiCondFields = new QBFCompareEnum[asFindFields.length];
m_aParams = new String[asFindFields.length];
-
- for( int i = 0; i < m_aParams.length; i++) {
+
+ for (int i = 0; i < m_aParams.length; i++) {
m_aParams[i] = DataWriteUtils.getSQLValue((Object) null);
}
}
-
+
+ @Override
+ public void setBigDecimal(int paramIndex, BigDecimal bdValue) throws BasicException {
+ if ((paramIndex - 1) % 2 == 0) {
+ throw new BasicException(LocalRes.getIntString("exception.nocompare"));
+ } else {
+ m_aParams[(paramIndex - 1) / 2] = DataWriteUtils.getSQLValue(bdValue);
+ }
+ }
+
@Override
public void setDouble(int paramIndex, Double dValue) throws BasicException {
if ((paramIndex - 1) % 2 == 0) {
@@ -118,7 +141,8 @@ public void setDouble(int paramIndex, Double dValue) throws BasicException {
} else {
m_aParams[(paramIndex - 1) / 2] = DataWriteUtils.getSQLValue(dValue);
}
- }
+ }
+
@Override
public void setBoolean(int paramIndex, Boolean bValue) throws BasicException {
if ((paramIndex - 1) % 2 == 0) {
@@ -126,7 +150,8 @@ public void setBoolean(int paramIndex, Boolean bValue) throws BasicException {
} else {
m_aParams[(paramIndex - 1) / 2] = DataWriteUtils.getSQLValue(bValue);
}
- }
+ }
+
@Override
public void setInt(int paramIndex, Integer iValue) throws BasicException {
if ((paramIndex - 1) % 2 == 0) {
@@ -134,7 +159,8 @@ public void setInt(int paramIndex, Integer iValue) throws BasicException {
} else {
m_aParams[(paramIndex - 1) / 2] = DataWriteUtils.getSQLValue(iValue);
}
- }
+ }
+
@Override
public void setString(int paramIndex, String sValue) throws BasicException {
if ((paramIndex - 1) % 2 == 0) {
@@ -142,7 +168,8 @@ public void setString(int paramIndex, String sValue) throws BasicException {
} else {
m_aParams[(paramIndex - 1) / 2] = DataWriteUtils.getSQLValue(sValue);
}
- }
+ }
+
@Override
public void setTimestamp(int paramIndex, java.util.Date dValue) throws BasicException {
if ((paramIndex - 1) % 2 == 0) {
@@ -158,6 +185,7 @@ public void setTimestamp(int paramIndex, java.util.Date dValue) throws BasicExce
// throw new DataException("Param type not allowed");
// }
// }
+
@Override
public void setBytes(int paramIndex, byte[] value) throws BasicException {
if ((paramIndex - 1) % 2 == 0) {
@@ -166,6 +194,7 @@ public void setBytes(int paramIndex, byte[] value) throws BasicException {
throw new BasicException("Param type not allowed");
}
}
+
@Override
public void setObject(int paramIndex, Object value) throws BasicException {
if ((paramIndex - 1) % 2 == 0) {
@@ -178,24 +207,24 @@ public void setObject(int paramIndex, Object value) throws BasicException {
m_aParams[(paramIndex - 1) / 2] = DataWriteUtils.getSQLValue(value);
}
}
-
+
public String getFilter() {
// El retorno debe ser siempre una expresion valida puesto que no se donde sera insertada.
-
+
StringBuilder sFilter = new StringBuilder();
-
- String sItem;
- for (int i = 0; i < m_asFindFields.length; i ++) {
- sItem = m_aiCondFields[i].getExpression(m_asFindFields[i], m_aParams[i]);
+
+ String sItem;
+ for (int i = 0; i < m_asFindFields.length; i++) {
+ sItem = m_aiCondFields[i].getExpression(m_asFindFields[i], m_aParams[i]);
if (sItem != null) {
if (sFilter.length() > 0) {
sFilter.append(" AND ");
}
sFilter.append(sItem);
- }
+ }
}
return sFilter.toString();
- }
- }
+ }
+ }
}
diff --git a/src-data/uk/chromis/data/loader/QBFCompareEnum.java b/src-data/uk/chromis/data/loader/QBFCompareEnum.java
index 1b4e2670..14bb5817 100644
--- a/src-data/uk/chromis/data/loader/QBFCompareEnum.java
+++ b/src-data/uk/chromis/data/loader/QBFCompareEnum.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,93 +16,115 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.data.loader;
/**
*
- * @author adrian
+ * @author adrian
*/
public abstract class QBFCompareEnum {
-
+
/**
*
*/
- public final static QBFCompareEnum COMP_NONE = new QBFCompareEnum(0, "qbf.none") {
- public String getExpression(String sField, String sSQLValue) { return null; }
+ public final static QBFCompareEnum COMP_NONE = new QBFCompareEnum(0, "qbf.none") {
+ public String getExpression(String sField, String sSQLValue) {
+ return null;
+ }
};
/**
*
*/
public final static QBFCompareEnum COMP_ISNULL = new QBFCompareEnum(1, "qbf.null") {
- public String getExpression(String sField, String sSQLValue) { return sField + " IS NULL"; }
+ public String getExpression(String sField, String sSQLValue) {
+ return sField + " IS NULL";
+ }
};
/**
*
*/
public final static QBFCompareEnum COMP_ISNOTNULL = new QBFCompareEnum(2, "qbf.notnull") {
- public String getExpression(String sField, String sSQLValue) { return sField + " IS NOT NULL"; }
+ public String getExpression(String sField, String sSQLValue) {
+ return sField + " IS NOT NULL";
+ }
};
/**
*
*/
public final static QBFCompareEnum COMP_RE = new QBFCompareEnum(3, "qbf.re") {
- public String getExpression(String sField, String sSQLValue) { return sField + " LIKE " + sSQLValue; }
+ // public String getExpression(String sField, String sSQLValue) { return sField + " LIKE " + sSQLValue; }
+ public String getExpression(String sField, String sSQLValue) {
+ String search = sSQLValue.replaceAll("'", "");
+ return sField + " LIKE '%" + search + "%'";
+ }
+
};
/**
*
*/
public final static QBFCompareEnum COMP_EQUALS = new QBFCompareEnum(3, "qbf.equals") {
- public String getExpression(String sField, String sSQLValue) { return sField + " = " + sSQLValue; }
+ public String getExpression(String sField, String sSQLValue) {
+ return sField + " = " + sSQLValue;
+ }
};
/**
*
*/
public final static QBFCompareEnum COMP_DISTINCT = new QBFCompareEnum(4, "qbf.distinct") {
- public String getExpression(String sField, String sSQLValue) { return sField + " <> " + sSQLValue; }
+ public String getExpression(String sField, String sSQLValue) {
+ return sField + " <> " + sSQLValue;
+ }
};
/**
*
*/
public final static QBFCompareEnum COMP_GREATER = new QBFCompareEnum(5, "qbf.greater") {
- public String getExpression(String sField, String sSQLValue) { return sField + " > " + sSQLValue; }
+ public String getExpression(String sField, String sSQLValue) {
+ return sField + " > " + sSQLValue;
+ }
};
/**
*
*/
public final static QBFCompareEnum COMP_LESS = new QBFCompareEnum(6, "qbf.less") {
- public String getExpression(String sField, String sSQLValue) { return sField + " < " + sSQLValue; }
+ public String getExpression(String sField, String sSQLValue) {
+ return sField + " < " + sSQLValue;
+ }
};
/**
*
*/
public final static QBFCompareEnum COMP_GREATEROREQUALS = new QBFCompareEnum(7, "qbf.greaterequals") {
- public String getExpression(String sField, String sSQLValue) { return sField + " >= " + sSQLValue; }
+ public String getExpression(String sField, String sSQLValue) {
+ return sField + " >= " + sSQLValue;
+ }
};
/**
*
*/
public final static QBFCompareEnum COMP_LESSOREQUALS = new QBFCompareEnum(8, "qbf.lessequals") {
- public String getExpression(String sField, String sSQLValue) { return sField + " <= " + sSQLValue; }
+ public String getExpression(String sField, String sSQLValue) {
+ return sField + " <= " + sSQLValue;
+ }
};
// public final static QBFCompareEnum COMP_STARTSWITH = new QBFCompareEnum(9, "qbf.startswith") {
// public String getExpression(String sField, String sSQLValue) { return sField + " LIKE " ... + sSQLValue; }
// };
// public final static int COMP_ENDSWITH = 12;
// public final static int COMP_CONTAINS = 13;
-
- private int m_iValue;
+
+ private int m_iValue;
private String m_sKey;
-
+
private QBFCompareEnum(int iValue, String sKey) {
m_iValue = iValue;
m_sKey = sKey;
@@ -115,6 +137,7 @@ private QBFCompareEnum(int iValue, String sKey) {
public int getCompareInt() {
return m_iValue;
}
+
public String toString() {
return LocalRes.getIntString(m_sKey);
}
diff --git a/src-data/uk/chromis/data/loader/RenderStringBasic.java b/src-data/uk/chromis/data/loader/RenderStringBasic.java
index 6257d0ac..bc2d581a 100644
--- a/src-data/uk/chromis/data/loader/RenderStringBasic.java
+++ b/src-data/uk/chromis/data/loader/RenderStringBasic.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/RenderStringStockChange.java b/src-data/uk/chromis/data/loader/RenderStringStockChange.java
index a7953ebc..7a46c20f 100644
--- a/src-data/uk/chromis/data/loader/RenderStringStockChange.java
+++ b/src-data/uk/chromis/data/loader/RenderStringStockChange.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SentenceEnum.java b/src-data/uk/chromis/data/loader/SentenceEnum.java
index e139662c..e24d9ed0 100644
--- a/src-data/uk/chromis/data/loader/SentenceEnum.java
+++ b/src-data/uk/chromis/data/loader/SentenceEnum.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SentenceExec.java b/src-data/uk/chromis/data/loader/SentenceExec.java
index 2a4d29c1..f7d857fc 100644
--- a/src-data/uk/chromis/data/loader/SentenceExec.java
+++ b/src-data/uk/chromis/data/loader/SentenceExec.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SentenceExecAdapter.java b/src-data/uk/chromis/data/loader/SentenceExecAdapter.java
index dcda35a6..31bbacd0 100644
--- a/src-data/uk/chromis/data/loader/SentenceExecAdapter.java
+++ b/src-data/uk/chromis/data/loader/SentenceExecAdapter.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SentenceExecTransaction.java b/src-data/uk/chromis/data/loader/SentenceExecTransaction.java
index 15b3d7f6..982068b4 100644
--- a/src-data/uk/chromis/data/loader/SentenceExecTransaction.java
+++ b/src-data/uk/chromis/data/loader/SentenceExecTransaction.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SentenceFind.java b/src-data/uk/chromis/data/loader/SentenceFind.java
index a172ecc5..8dd6d103 100644
--- a/src-data/uk/chromis/data/loader/SentenceFind.java
+++ b/src-data/uk/chromis/data/loader/SentenceFind.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SentenceList.java b/src-data/uk/chromis/data/loader/SentenceList.java
index b6506b42..bf02011a 100644
--- a/src-data/uk/chromis/data/loader/SentenceList.java
+++ b/src-data/uk/chromis/data/loader/SentenceList.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SentenceUpdateResultSet.java b/src-data/uk/chromis/data/loader/SentenceUpdateResultSet.java
index a3772043..8617db1b 100644
--- a/src-data/uk/chromis/data/loader/SentenceUpdateResultSet.java
+++ b/src-data/uk/chromis/data/loader/SentenceUpdateResultSet.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,25 +16,28 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.data.loader;
import uk.chromis.basic.BasicException;
+import java.math.*;
/**
*
- * @author adrian
+ * @author adrian
*/
public class SentenceUpdateResultSet implements DataResultSet {
-
+
private int m_iUpdateCount;
-
- /** Creates a new instance of UpdateResultSet
- * @param iUpdateCount */
+
+ /**
+ * Creates a new instance of UpdateResultSet
+ *
+ * @param iUpdateCount
+ */
public SentenceUpdateResultSet(int iUpdateCount) {
m_iUpdateCount = iUpdateCount;
}
-
+
/**
*
* @param columnIndex
@@ -55,6 +58,16 @@ public String getString(int columnIndex) throws BasicException {
throw new BasicException(LocalRes.getIntString("exception.nodataset"));
}
+ /**
+ *
+ * @param columnIndex
+ * @return
+ * @throws BasicException
+ */
+ public BigDecimal getBigDecimal(int columnIndex) throws BasicException {
+ throw new BasicException(LocalRes.getIntString("exception.nodataset"));
+ }
+
/**
*
* @param columnIndex
@@ -86,14 +99,13 @@ public java.util.Date getTimestamp(int columnIndex) throws BasicException {
}
//public java.io.InputStream getBinaryStream(int columnIndex) throws DataException;
-
/**
*
* @param columnIndex
* @return
* @throws BasicException
*/
- public byte[] getBytes(int columnIndex) throws BasicException {
+ public byte[] getBytes(int columnIndex) throws BasicException {
throw new BasicException(LocalRes.getIntString("exception.nodataset"));
}
@@ -103,50 +115,45 @@ public byte[] getBytes(int columnIndex) throws BasicException {
* @return
* @throws BasicException
*/
- public Object getObject(int columnIndex) throws BasicException {
+ public Object getObject(int columnIndex) throws BasicException {
throw new BasicException(LocalRes.getIntString("exception.nodataset"));
}
// public int getColumnCount() throws DataException;
-
/**
*
- * @return
- * @throws BasicException
+ * @return @throws BasicException
*/
- public DataField[] getDataField() throws BasicException {
+ public DataField[] getDataField() throws BasicException {
throw new BasicException(LocalRes.getIntString("exception.nodataset"));
}
/**
*
- * @return
- * @throws BasicException
+ * @return @throws BasicException
*/
public Object getCurrent() throws BasicException {
throw new BasicException(LocalRes.getIntString("exception.nodataset"));
}
-
+
/**
*
- * @return
- * @throws BasicException
+ * @return @throws BasicException
*/
public boolean next() throws BasicException {
throw new BasicException(LocalRes.getIntString("exception.nodataset"));
}
-
+
/**
*
* @throws BasicException
*/
public void close() throws BasicException {
}
-
+
/**
*
- * @return
- * @throws BasicException
+ * @return @throws BasicException
*/
public int updateCount() throws BasicException {
return m_iUpdateCount;
diff --git a/src-data/uk/chromis/data/loader/SequenceForDerby.java b/src-data/uk/chromis/data/loader/SequenceForDerby.java
index 0bfaf03d..311a50fe 100644
--- a/src-data/uk/chromis/data/loader/SequenceForDerby.java
+++ b/src-data/uk/chromis/data/loader/SequenceForDerby.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SequenceForMySQL.java b/src-data/uk/chromis/data/loader/SequenceForMySQL.java
index d5f0b167..4aef15d2 100644
--- a/src-data/uk/chromis/data/loader/SequenceForMySQL.java
+++ b/src-data/uk/chromis/data/loader/SequenceForMySQL.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializableBuilder.java b/src-data/uk/chromis/data/loader/SerializableBuilder.java
index 76f642c3..bba789e8 100644
--- a/src-data/uk/chromis/data/loader/SerializableBuilder.java
+++ b/src-data/uk/chromis/data/loader/SerializableBuilder.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializableRead.java b/src-data/uk/chromis/data/loader/SerializableRead.java
index 4e014fc3..537677da 100644
--- a/src-data/uk/chromis/data/loader/SerializableRead.java
+++ b/src-data/uk/chromis/data/loader/SerializableRead.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializableWrite.java b/src-data/uk/chromis/data/loader/SerializableWrite.java
index 1511eab6..5247526e 100644
--- a/src-data/uk/chromis/data/loader/SerializableWrite.java
+++ b/src-data/uk/chromis/data/loader/SerializableWrite.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializerRead.java b/src-data/uk/chromis/data/loader/SerializerRead.java
index 05dda0f6..78c01308 100644
--- a/src-data/uk/chromis/data/loader/SerializerRead.java
+++ b/src-data/uk/chromis/data/loader/SerializerRead.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializerReadBasic.java b/src-data/uk/chromis/data/loader/SerializerReadBasic.java
index a925a0b9..cc34d28c 100644
--- a/src-data/uk/chromis/data/loader/SerializerReadBasic.java
+++ b/src-data/uk/chromis/data/loader/SerializerReadBasic.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializerReadBuilder.java b/src-data/uk/chromis/data/loader/SerializerReadBuilder.java
index 4153ee4a..602deeab 100644
--- a/src-data/uk/chromis/data/loader/SerializerReadBuilder.java
+++ b/src-data/uk/chromis/data/loader/SerializerReadBuilder.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializerReadBytes.java b/src-data/uk/chromis/data/loader/SerializerReadBytes.java
index 0eaa168c..7ccd3772 100644
--- a/src-data/uk/chromis/data/loader/SerializerReadBytes.java
+++ b/src-data/uk/chromis/data/loader/SerializerReadBytes.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializerReadClass.java b/src-data/uk/chromis/data/loader/SerializerReadClass.java
index 63fe6ab6..a2008a4a 100644
--- a/src-data/uk/chromis/data/loader/SerializerReadClass.java
+++ b/src-data/uk/chromis/data/loader/SerializerReadClass.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializerReadDate.java b/src-data/uk/chromis/data/loader/SerializerReadDate.java
index 88920e1f..17bd4a9d 100644
--- a/src-data/uk/chromis/data/loader/SerializerReadDate.java
+++ b/src-data/uk/chromis/data/loader/SerializerReadDate.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializerReadDouble.java b/src-data/uk/chromis/data/loader/SerializerReadDouble.java
index b3716c36..cf4d6487 100644
--- a/src-data/uk/chromis/data/loader/SerializerReadDouble.java
+++ b/src-data/uk/chromis/data/loader/SerializerReadDouble.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializerReadImage.java b/src-data/uk/chromis/data/loader/SerializerReadImage.java
index bd6ebe1c..b0e4d819 100644
--- a/src-data/uk/chromis/data/loader/SerializerReadImage.java
+++ b/src-data/uk/chromis/data/loader/SerializerReadImage.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializerReadInteger.java b/src-data/uk/chromis/data/loader/SerializerReadInteger.java
index 60daa134..add9b671 100644
--- a/src-data/uk/chromis/data/loader/SerializerReadInteger.java
+++ b/src-data/uk/chromis/data/loader/SerializerReadInteger.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializerReadString.java b/src-data/uk/chromis/data/loader/SerializerReadString.java
index 70ce14d8..7f1e2c3a 100644
--- a/src-data/uk/chromis/data/loader/SerializerReadString.java
+++ b/src-data/uk/chromis/data/loader/SerializerReadString.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializerReadUTF8.java b/src-data/uk/chromis/data/loader/SerializerReadUTF8.java
index 3449469f..f9ab56ac 100644
--- a/src-data/uk/chromis/data/loader/SerializerReadUTF8.java
+++ b/src-data/uk/chromis/data/loader/SerializerReadUTF8.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializerWrite.java b/src-data/uk/chromis/data/loader/SerializerWrite.java
index f8c35382..3c614163 100644
--- a/src-data/uk/chromis/data/loader/SerializerWrite.java
+++ b/src-data/uk/chromis/data/loader/SerializerWrite.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializerWriteBasic.java b/src-data/uk/chromis/data/loader/SerializerWriteBasic.java
index 1dc86231..958511b7 100644
--- a/src-data/uk/chromis/data/loader/SerializerWriteBasic.java
+++ b/src-data/uk/chromis/data/loader/SerializerWriteBasic.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializerWriteBasicComposed.java b/src-data/uk/chromis/data/loader/SerializerWriteBasicComposed.java
index b774cb38..03b144e0 100644
--- a/src-data/uk/chromis/data/loader/SerializerWriteBasicComposed.java
+++ b/src-data/uk/chromis/data/loader/SerializerWriteBasicComposed.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializerWriteBasicExt.java b/src-data/uk/chromis/data/loader/SerializerWriteBasicExt.java
index c7d4f0a4..1bfb29cf 100644
--- a/src-data/uk/chromis/data/loader/SerializerWriteBasicExt.java
+++ b/src-data/uk/chromis/data/loader/SerializerWriteBasicExt.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializerWriteBuilder.java b/src-data/uk/chromis/data/loader/SerializerWriteBuilder.java
index 00e46d65..824cc3bb 100644
--- a/src-data/uk/chromis/data/loader/SerializerWriteBuilder.java
+++ b/src-data/uk/chromis/data/loader/SerializerWriteBuilder.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializerWriteComposed.java b/src-data/uk/chromis/data/loader/SerializerWriteComposed.java
index 9057fefa..0ccc75e0 100644
--- a/src-data/uk/chromis/data/loader/SerializerWriteComposed.java
+++ b/src-data/uk/chromis/data/loader/SerializerWriteComposed.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,26 +16,28 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.data.loader;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import uk.chromis.basic.BasicException;
+import java.math.*;
/**
*
- *
+ *
*/
public class SerializerWriteComposed implements SerializerWrite {
-
- private List serwrites = new ArrayList();
-
- /** Creates a new instance of SerializerWriteComposed */
+
+ private List serwrites = new ArrayList();
+
+ /**
+ * Creates a new instance of SerializerWriteComposed
+ */
public SerializerWriteComposed() {
}
-
+
/**
*
* @param sw
@@ -43,7 +45,7 @@ public SerializerWriteComposed() {
public void add(SerializerWrite sw) {
serwrites.add(sw);
}
-
+
/**
*
* @param dp
@@ -51,31 +53,36 @@ public void add(SerializerWrite sw) {
* @throws BasicException
*/
public void writeValues(DataWrite dp, Object obj) throws BasicException {
-
+
Object[] a = (Object[]) obj;
DataWriteComposed dpc = new DataWriteComposed(dp);
-
+
int i = 0;
for (SerializerWrite sw : serwrites) {
dpc.next();
sw.writeValues(dpc, a[i++]);
}
- }
-
+ }
+
private static class DataWriteComposed implements DataWrite {
-
+
private DataWrite dp;
private int offset = 0;
- private int max = 0;
-
+ private int max = 0;
+
public DataWriteComposed(DataWrite dp) {
this.dp = dp;
}
-
+
public void next() {
offset = max;
}
-
+
+ public void setBigDecimal(int paramIndex, BigDecimal bdValue) throws BasicException {
+ dp.setBigDecimal(offset + paramIndex, bdValue);
+ max = Math.max(max, offset + paramIndex);
+ }
+
public void setInt(int paramIndex, Integer iValue) throws BasicException {
dp.setInt(offset + paramIndex, iValue);
max = Math.max(max, offset + paramIndex);
@@ -111,5 +118,5 @@ public void setObject(int paramIndex, Object value) throws BasicException {
max = Math.max(max, offset + paramIndex);
}
}
-
-}
\ No newline at end of file
+
+}
diff --git a/src-data/uk/chromis/data/loader/SerializerWriteInteger.java b/src-data/uk/chromis/data/loader/SerializerWriteInteger.java
index 5c47130d..d87524a1 100644
--- a/src-data/uk/chromis/data/loader/SerializerWriteInteger.java
+++ b/src-data/uk/chromis/data/loader/SerializerWriteInteger.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializerWriteParams.java b/src-data/uk/chromis/data/loader/SerializerWriteParams.java
index 43fd8c6b..3817fdb6 100644
--- a/src-data/uk/chromis/data/loader/SerializerWriteParams.java
+++ b/src-data/uk/chromis/data/loader/SerializerWriteParams.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SerializerWriteString.java b/src-data/uk/chromis/data/loader/SerializerWriteString.java
index 342c4f4d..3c008bca 100644
--- a/src-data/uk/chromis/data/loader/SerializerWriteString.java
+++ b/src-data/uk/chromis/data/loader/SerializerWriteString.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/Session.java b/src-data/uk/chromis/data/loader/Session.java
index f12d9912..b0353f46 100644
--- a/src-data/uk/chromis/data/loader/Session.java
+++ b/src-data/uk/chromis/data/loader/Session.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,7 +16,6 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.data.loader;
import java.sql.Connection;
@@ -25,16 +24,15 @@
/**
*
- * @author adrianromero
- * Created on February 6, 2007, 4:06 PM
+ * @author adrianromero Created on February 6, 2007, 4:06 PM
*
*/
public final class Session {
-
+
private final String m_surl;
private final String m_sappuser;
private final String m_spassword;
-
+
private Connection m_c;
private boolean m_bInTransaction;
@@ -42,54 +40,67 @@ public final class Session {
*
*/
public final SessionDB DB;
-
- /** Creates a new instance of Session
+
+ /**
+ * Creates a new instance of Session
+ *
* @param url
* @param user
* @param password
- * @throws java.sql.SQLException */
+ * @throws java.sql.SQLException
+ */
public Session(String url, String user, String password) throws SQLException {
m_surl = url;
m_sappuser = user;
m_spassword = password;
-
+
m_c = null;
m_bInTransaction = false;
-
+
connect(); // no lazy connection
DB = getDiff();
}
-
+
+ public Session(Connection connection) throws SQLException {
+ m_surl = null;
+ m_sappuser = null;
+ m_spassword = null;
+ m_bInTransaction = false;
+ m_c = connection;
+ m_c.setAutoCommit(true);
+ DB = getDiff();
+ }
+
/**
*
* @throws SQLException
*/
public void connect() throws SQLException {
-
+
// primero cerramos si no estabamos cerrados
close();
-
+
// creamos una nueva conexion.
m_c = (m_sappuser == null && m_spassword == null)
- ? DriverManager.getConnection(m_surl)
- : DriverManager.getConnection(m_surl, m_sappuser, m_spassword);
+ ? DriverManager.getConnection(m_surl)
+ : DriverManager.getConnection(m_surl, m_sappuser, m_spassword);
m_c.setAutoCommit(true);
m_bInTransaction = false;
- }
+ }
/**
*
*/
public void close() {
-
+
if (m_c != null) {
try {
if (m_bInTransaction) {
m_bInTransaction = false; // lo primero salimos del estado
m_c.rollback();
- m_c.setAutoCommit(true);
- }
+ m_c.setAutoCommit(true);
+ }
m_c.close();
} catch (SQLException e) {
// me la como
@@ -98,26 +109,25 @@ public void close() {
}
}
}
-
+
/**
*
- * @return
- * @throws SQLException
+ * @return @throws SQLException
*/
public Connection getConnection() throws SQLException {
-
+
if (!m_bInTransaction) {
ensureConnection();
}
return m_c;
}
-
+
/**
*
* @throws SQLException
*/
public void begin() throws SQLException {
-
+
if (m_bInTransaction) {
throw new SQLException("Already in transaction");
} else {
@@ -135,7 +145,7 @@ public void commit() throws SQLException {
if (m_bInTransaction) {
m_bInTransaction = false; // lo primero salimos del estado
m_c.commit();
- m_c.setAutoCommit(true);
+ m_c.setAutoCommit(true);
} else {
throw new SQLException("Transaction not started");
}
@@ -149,7 +159,7 @@ public void rollback() throws SQLException {
if (m_bInTransaction) {
m_bInTransaction = false; // lo primero salimos del estado
m_c.rollback();
- m_c.setAutoCommit(true);
+ m_c.setAutoCommit(true);
} else {
throw new SQLException("Transaction not started");
}
@@ -162,10 +172,10 @@ public void rollback() throws SQLException {
public boolean isTransaction() {
return m_bInTransaction;
}
-
+
private void ensureConnection() throws SQLException {
// solo se invoca si isTransaction == false
-
+
boolean bclosed;
try {
bclosed = m_c == null || m_c.isClosed();
@@ -177,12 +187,11 @@ private void ensureConnection() throws SQLException {
if (bclosed) {
connect();
}
- }
+ }
/**
*
- * @return
- * @throws SQLException
+ * @return @throws SQLException
*/
public String getURL() throws SQLException {
return getConnection().getMetaData().getURL();
@@ -192,14 +201,10 @@ private SessionDB getDiff() throws SQLException {
String sdbmanager = getConnection().getMetaData().getDatabaseProductName();
switch (sdbmanager) {
- case "HSQL Database Engine":
- return new SessionDBHSQLDB();
case "MySQL":
return new SessionDBMySQL();
case "PostgreSQL":
return new SessionDBPostgreSQL();
- case "Oracle":
- return new SessionDBOracle();
case "Apache Derby":
return new SessionDBDerby();
default:
diff --git a/src-data/uk/chromis/data/loader/SessionDB.java b/src-data/uk/chromis/data/loader/SessionDB.java
index ecb67e20..db64d006 100644
--- a/src-data/uk/chromis/data/loader/SessionDB.java
+++ b/src-data/uk/chromis/data/loader/SessionDB.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SessionDBDerby.java b/src-data/uk/chromis/data/loader/SessionDBDerby.java
index d1c20764..c8aadf42 100644
--- a/src-data/uk/chromis/data/loader/SessionDBDerby.java
+++ b/src-data/uk/chromis/data/loader/SessionDBDerby.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SessionDBGeneric.java b/src-data/uk/chromis/data/loader/SessionDBGeneric.java
index 37baf79d..a1316f43 100644
--- a/src-data/uk/chromis/data/loader/SessionDBGeneric.java
+++ b/src-data/uk/chromis/data/loader/SessionDBGeneric.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SessionDBHSQLDB.java b/src-data/uk/chromis/data/loader/SessionDBHSQLDB.java
deleted file mode 100644
index 75fb34f0..00000000
--- a/src-data/uk/chromis/data/loader/SessionDBHSQLDB.java
+++ /dev/null
@@ -1,94 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
-// http://www.chromis.co.uk
-//
-// This file is part of Chromis POS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-package uk.chromis.data.loader;
-
-/**
- *
- * @author adrianromero
- */
-public class SessionDBHSQLDB implements SessionDB {
-
- /**
- *
- * @return
- */
- @Override
- public String TRUE() {
- return "TRUE";
- }
-
- /**
- *
- * @return
- */
- @Override
- public String FALSE() {
- return "FALSE";
- }
-
- /**
- *
- * @return
- */
- @Override
- public String INTEGER_NULL() {
- return "CAST(NULL AS INTEGER)";
- }
-
- /**
- *
- * @return
- */
- @Override
- public String CHAR_NULL() {
- return "CAST(NULL AS CHAR)";
- }
-
- /**
- *
- * @return
- */
- @Override
- public String getName() {
- return "HSQLDB";
- }
-
- /**
- *
- * @param s
- * @param sequence
- * @return
- */
- @Override
- public SentenceFind getSequenceSentence(Session s, String sequence) {
- return new StaticSentence(s, "CALL NEXT VALUE FOR " + sequence, null, SerializerReadInteger.INSTANCE);
- }
-
- /**
- *
- * @param s
- * @param sequence
- * @return
- */
- @Override
- public SentenceFind resetSequenceSentence(Session s, String sequence) {
- return new StaticSentence(s, "CALL NEXT VALUE FOR " + sequence, null, SerializerReadInteger.INSTANCE);
- }
-}
diff --git a/src-data/uk/chromis/data/loader/SessionDBMySQL.java b/src-data/uk/chromis/data/loader/SessionDBMySQL.java
index 6bff720b..d81bf619 100644
--- a/src-data/uk/chromis/data/loader/SessionDBMySQL.java
+++ b/src-data/uk/chromis/data/loader/SessionDBMySQL.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SessionDBOracle.java b/src-data/uk/chromis/data/loader/SessionDBOracle.java
deleted file mode 100644
index 50251bc8..00000000
--- a/src-data/uk/chromis/data/loader/SessionDBOracle.java
+++ /dev/null
@@ -1,87 +0,0 @@
-// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
-// http://www.chromis.co.uk
-//
-// This file is part of Chromis POS
-//
-// Chromis POS is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// Chromis POS is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with Chromis POS. If not, see .
-
-package uk.chromis.data.loader;
-
-/**
- *
- * @author adrianromero
- */
-public class SessionDBOracle implements SessionDB {
-
- /**
- *
- * @return
- */
- public String TRUE() {
- return "1";
- }
-
- /**
- *
- * @return
- */
- public String FALSE() {
- return "0";
- }
-
- /**
- *
- * @return
- */
- public String INTEGER_NULL() {
- return "CAST(NULL AS INTEGER)";
- }
-
- /**
- *
- * @return
- */
- public String CHAR_NULL() {
- return "CAST(NULL AS CHAR)";
- }
-
- /**
- *
- * @return
- */
- public String getName() {
- return "Oracle";
- }
-
- /**
- *
- * @param s
- * @param sequence
- * @return
- */
- public SentenceFind getSequenceSentence(Session s, String sequence) {
- return new StaticSentence(s, "SELECT " + sequence + ".NEXTVAL FROM DUAL", null, SerializerReadInteger.INSTANCE);
- }
-
- /**
- *
- * @param s
- * @param sequence
- * @return
- */
- public SentenceFind resetSequenceSentence(Session s, String sequence) {
- return new StaticSentence(s, "SELECT " + sequence + ".NEXTVAL FROM DUAL", null, SerializerReadInteger.INSTANCE);
- }
-}
\ No newline at end of file
diff --git a/src-data/uk/chromis/data/loader/SessionDBPostgreSQL.java b/src-data/uk/chromis/data/loader/SessionDBPostgreSQL.java
index cfa86145..22cd463c 100644
--- a/src-data/uk/chromis/data/loader/SessionDBPostgreSQL.java
+++ b/src-data/uk/chromis/data/loader/SessionDBPostgreSQL.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/SimpleBuilder.java b/src-data/uk/chromis/data/loader/SimpleBuilder.java
index 32652ffc..876378b9 100644
--- a/src-data/uk/chromis/data/loader/SimpleBuilder.java
+++ b/src-data/uk/chromis/data/loader/SimpleBuilder.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/StaticSentence.java b/src-data/uk/chromis/data/loader/StaticSentence.java
index 92be1166..83873704 100644
--- a/src-data/uk/chromis/data/loader/StaticSentence.java
+++ b/src-data/uk/chromis/data/loader/StaticSentence.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/TableDefinition.java b/src-data/uk/chromis/data/loader/TableDefinition.java
index e212cbfe..66d125ec 100644
--- a/src-data/uk/chromis/data/loader/TableDefinition.java
+++ b/src-data/uk/chromis/data/loader/TableDefinition.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/Transaction.java b/src-data/uk/chromis/data/loader/Transaction.java
index 2f231f48..a70f9a46 100644
--- a/src-data/uk/chromis/data/loader/Transaction.java
+++ b/src-data/uk/chromis/data/loader/Transaction.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/Vectorer.java b/src-data/uk/chromis/data/loader/Vectorer.java
index 6d7b099f..b839cf4c 100644
--- a/src-data/uk/chromis/data/loader/Vectorer.java
+++ b/src-data/uk/chromis/data/loader/Vectorer.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/VectorerBasic.java b/src-data/uk/chromis/data/loader/VectorerBasic.java
index 1f377802..6259b58a 100644
--- a/src-data/uk/chromis/data/loader/VectorerBasic.java
+++ b/src-data/uk/chromis/data/loader/VectorerBasic.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/loader/VectorerBuilder.java b/src-data/uk/chromis/data/loader/VectorerBuilder.java
index a4099d27..15c16364 100644
--- a/src-data/uk/chromis/data/loader/VectorerBuilder.java
+++ b/src-data/uk/chromis/data/loader/VectorerBuilder.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,29 +16,30 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.data.loader;
import java.util.ArrayList;
import uk.chromis.basic.BasicException;
+import java.math.*;
/**
*
- *
+ *
*/
public abstract class VectorerBuilder implements Vectorer {
-
- /** Creates a new instance of VectorerBuilder */
+
+ /**
+ * Creates a new instance of VectorerBuilder
+ */
public VectorerBuilder() {
}
-
+
/**
*
- * @return
- * @throws BasicException
+ * @return @throws BasicException
*/
public abstract String[] getHeaders() throws BasicException;
-
+
/**
*
* @param obj
@@ -46,37 +47,49 @@ public VectorerBuilder() {
* @throws BasicException
*/
public String[] getValues(Object obj) throws BasicException {
-
- SerializableToArray s2a = new SerializableToArray();
+
+ SerializableToArray s2a = new SerializableToArray();
((SerializableWrite) obj).writeValues(s2a);
return s2a.getValues();
}
-
+
private static class SerializableToArray implements DataWrite {
private ArrayList m_aParams;
- /** Creates a new instance of MetaParameter */
+ /**
+ * Creates a new instance of MetaParameter
+ */
public SerializableToArray() {
m_aParams = new ArrayList();
}
+
+ public void setBigDecimal(int paramIndex, BigDecimal bdValue) throws BasicException {
+ ensurePlace(paramIndex - 1);
+ m_aParams.set(paramIndex - 1, bdValue.toString());
+ }
+
public void setDouble(int paramIndex, Double dValue) throws BasicException {
ensurePlace(paramIndex - 1);
m_aParams.set(paramIndex - 1, dValue.toString());
}
+
public void setBoolean(int paramIndex, Boolean bValue) throws BasicException {
ensurePlace(paramIndex - 1);
m_aParams.set(paramIndex - 1, bValue.toString());
}
+
public void setInt(int paramIndex, Integer iValue) throws BasicException {
ensurePlace(paramIndex - 1);
m_aParams.set(paramIndex - 1, iValue.toString());
- }
+ }
+
public void setString(int paramIndex, String sValue) throws BasicException {
ensurePlace(paramIndex - 1);
m_aParams.set(paramIndex - 1, sValue);
}
+
public void setTimestamp(int paramIndex, java.util.Date dValue) throws BasicException {
ensurePlace(paramIndex - 1);
m_aParams.set(paramIndex - 1, dValue.toString());
@@ -85,24 +98,26 @@ public void setTimestamp(int paramIndex, java.util.Date dValue) throws BasicExce
// ensurePlace(paramIndex -1);
// // m_aParams.set(paramIndex - 1, value.toString()); // quiza un uuencode o algo asi
// }
+
public void setBytes(int paramIndex, byte[] value) throws BasicException {
- ensurePlace(paramIndex -1);
+ ensurePlace(paramIndex - 1);
m_aParams.set(paramIndex - 1, value.toString()); // quiza un uuencode o algo asi
}
+
public void setObject(int paramIndex, Object value) throws BasicException {
ensurePlace(paramIndex - 1);
m_aParams.set(paramIndex - 1, value.toString());
- }
-
+ }
+
private void ensurePlace(int i) {
m_aParams.ensureCapacity(i);
- while (i >= m_aParams.size()){
+ while (i >= m_aParams.size()) {
m_aParams.add(null);
}
}
-
+
public String[] getValues() {
return (String[]) m_aParams.toArray(new String[m_aParams.size()]);
- }
+ }
}
}
diff --git a/src-data/uk/chromis/data/model/Column.java b/src-data/uk/chromis/data/model/Column.java
index a989571d..c7d03d77 100644
--- a/src-data/uk/chromis/data/model/Column.java
+++ b/src-data/uk/chromis/data/model/Column.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/model/Field.java b/src-data/uk/chromis/data/model/Field.java
index f8c62c56..b06803cf 100644
--- a/src-data/uk/chromis/data/model/Field.java
+++ b/src-data/uk/chromis/data/model/Field.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/model/PrimaryKey.java b/src-data/uk/chromis/data/model/PrimaryKey.java
index b93feaa0..9ce31ce1 100644
--- a/src-data/uk/chromis/data/model/PrimaryKey.java
+++ b/src-data/uk/chromis/data/model/PrimaryKey.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/model/Row.java b/src-data/uk/chromis/data/model/Row.java
index 810bd854..26aaf5b8 100644
--- a/src-data/uk/chromis/data/model/Row.java
+++ b/src-data/uk/chromis/data/model/Row.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/model/Table.java b/src-data/uk/chromis/data/model/Table.java
index 2b7d86d9..5b72ee2d 100644
--- a/src-data/uk/chromis/data/model/Table.java
+++ b/src-data/uk/chromis/data/model/Table.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/user/BrowsableData.java b/src-data/uk/chromis/data/user/BrowsableData.java
index 894d4f5b..0bd9d4c6 100644
--- a/src-data/uk/chromis/data/user/BrowsableData.java
+++ b/src-data/uk/chromis/data/user/BrowsableData.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/user/BrowsableEditableData.java b/src-data/uk/chromis/data/user/BrowsableEditableData.java
index 79f0f00f..653b0633 100644
--- a/src-data/uk/chromis/data/user/BrowsableEditableData.java
+++ b/src-data/uk/chromis/data/user/BrowsableEditableData.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -34,28 +34,11 @@
*/
public class BrowsableEditableData {
- /**
- * Ticket Type = Debit
- */
public static final int ST_NORECORD = 0;
-
- /**
- * Ticket Type = Credit (Refund)
- */
public static final int ST_UPDATE = 1;
-
- /**
- * Payment Type = Debit (On Account)
- */
public static final int ST_DELETE = 2;
-
- /**
- * Payment Type = Credit (On Account)
- */
public static final int ST_INSERT = 3;
-
private final static int INX_EOF = -1;
-
private BrowsableData m_bd;
protected EventListenerList listeners = new EventListenerList();
diff --git a/src-data/uk/chromis/data/user/BrowseListener.java b/src-data/uk/chromis/data/user/BrowseListener.java
index cf537279..79c7972a 100644
--- a/src-data/uk/chromis/data/user/BrowseListener.java
+++ b/src-data/uk/chromis/data/user/BrowseListener.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/user/DirtyListener.java b/src-data/uk/chromis/data/user/DirtyListener.java
index 2629ffaf..7987ef6d 100644
--- a/src-data/uk/chromis/data/user/DirtyListener.java
+++ b/src-data/uk/chromis/data/user/DirtyListener.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/user/DirtyManager.java b/src-data/uk/chromis/data/user/DirtyManager.java
index ccec66b8..f2971c1f 100644
--- a/src-data/uk/chromis/data/user/DirtyManager.java
+++ b/src-data/uk/chromis/data/user/DirtyManager.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/user/DocumentLoader.java b/src-data/uk/chromis/data/user/DocumentLoader.java
index 9675777e..04eed664 100644
--- a/src-data/uk/chromis/data/user/DocumentLoader.java
+++ b/src-data/uk/chromis/data/user/DocumentLoader.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/user/DocumentLoaderBasic.java b/src-data/uk/chromis/data/user/DocumentLoaderBasic.java
index d8d2c87e..23a45d01 100644
--- a/src-data/uk/chromis/data/user/DocumentLoaderBasic.java
+++ b/src-data/uk/chromis/data/user/DocumentLoaderBasic.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/user/EditorCreator.java b/src-data/uk/chromis/data/user/EditorCreator.java
index 2d6b7614..d43dfc83 100644
--- a/src-data/uk/chromis/data/user/EditorCreator.java
+++ b/src-data/uk/chromis/data/user/EditorCreator.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/user/EditorCreatorComposed.java b/src-data/uk/chromis/data/user/EditorCreatorComposed.java
index 95cfab80..e7e77757 100644
--- a/src-data/uk/chromis/data/user/EditorCreatorComposed.java
+++ b/src-data/uk/chromis/data/user/EditorCreatorComposed.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/user/EditorListener.java b/src-data/uk/chromis/data/user/EditorListener.java
index b7cc03b1..6df10d5e 100644
--- a/src-data/uk/chromis/data/user/EditorListener.java
+++ b/src-data/uk/chromis/data/user/EditorListener.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/user/EditorRecord.java b/src-data/uk/chromis/data/user/EditorRecord.java
index b61c6885..4dbe22d1 100644
--- a/src-data/uk/chromis/data/user/EditorRecord.java
+++ b/src-data/uk/chromis/data/user/EditorRecord.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/user/FilterEditorCreator.java b/src-data/uk/chromis/data/user/FilterEditorCreator.java
index a2e18f5c..92b0b244 100644
--- a/src-data/uk/chromis/data/user/FilterEditorCreator.java
+++ b/src-data/uk/chromis/data/user/FilterEditorCreator.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/user/Finder.java b/src-data/uk/chromis/data/user/Finder.java
index 607fa20c..827a75b6 100644
--- a/src-data/uk/chromis/data/user/Finder.java
+++ b/src-data/uk/chromis/data/user/Finder.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/user/ListProvider.java b/src-data/uk/chromis/data/user/ListProvider.java
index 06c3de3f..b9df0b4e 100644
--- a/src-data/uk/chromis/data/user/ListProvider.java
+++ b/src-data/uk/chromis/data/user/ListProvider.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/user/ListProviderCreator.java b/src-data/uk/chromis/data/user/ListProviderCreator.java
index 8443c82f..705ec2bd 100644
--- a/src-data/uk/chromis/data/user/ListProviderCreator.java
+++ b/src-data/uk/chromis/data/user/ListProviderCreator.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/user/SaveProvider.java b/src-data/uk/chromis/data/user/SaveProvider.java
index 4045eeb8..59810c60 100644
--- a/src-data/uk/chromis/data/user/SaveProvider.java
+++ b/src-data/uk/chromis/data/user/SaveProvider.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-data/uk/chromis/data/user/StateListener.java b/src-data/uk/chromis/data/user/StateListener.java
index f15cd9cc..01147155 100644
--- a/src-data/uk/chromis/data/user/StateListener.java
+++ b/src-data/uk/chromis/data/user/StateListener.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/admin/DBPermissionsInfo.java b/src-pos/uk/chromis/pos/admin/DBPermissionsInfo.java
index 13cf8cf5..e75f4869 100644
--- a/src-pos/uk/chromis/pos/admin/DBPermissionsInfo.java
+++ b/src-pos/uk/chromis/pos/admin/DBPermissionsInfo.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/admin/DataLogicAdmin.java b/src-pos/uk/chromis/pos/admin/DataLogicAdmin.java
index 62ffbc8f..9b863ad5 100644
--- a/src-pos/uk/chromis/pos/admin/DataLogicAdmin.java
+++ b/src-pos/uk/chromis/pos/admin/DataLogicAdmin.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -95,12 +95,12 @@ public void init(Session s){
m_tresources = new TableDefinition(s,
"RESOURCES"
- , new String[] {"ID", "NAME", "RESTYPE", "CONTENT"}
+ , new String[] {"ID", "NAME", "RESTYPE", "CONTENT" }
, new String[] {"ID", AppLocal.getIntString("Label.Name"), AppLocal.getIntString("label.type"), "CONTENT"}
, new Datas[] {Datas.STRING, Datas.STRING, Datas.INT, Datas.BYTES}
, new Formats[] {Formats.STRING, Formats.STRING, Formats.INT, Formats.NULL}
, new int[] {0}
- , "NAME"
+ , "LOWER(NAME) "
);
diff --git a/src-pos/uk/chromis/pos/admin/JPermissionsList.java b/src-pos/uk/chromis/pos/admin/JPermissionsList.java
index b6c103ae..a7553e58 100644
--- a/src-pos/uk/chromis/pos/admin/JPermissionsList.java
+++ b/src-pos/uk/chromis/pos/admin/JPermissionsList.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/admin/PeopleInfo.java b/src-pos/uk/chromis/pos/admin/PeopleInfo.java
index 92c93259..56b955d6 100644
--- a/src-pos/uk/chromis/pos/admin/PeopleInfo.java
+++ b/src-pos/uk/chromis/pos/admin/PeopleInfo.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/admin/PeoplePanel.java b/src-pos/uk/chromis/pos/admin/PeoplePanel.java
index 2dc86c50..f365e271 100644
--- a/src-pos/uk/chromis/pos/admin/PeoplePanel.java
+++ b/src-pos/uk/chromis/pos/admin/PeoplePanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/admin/PeopleView.form b/src-pos/uk/chromis/pos/admin/PeopleView.form
index 62eaa98c..26a59ade 100644
--- a/src-pos/uk/chromis/pos/admin/PeopleView.form
+++ b/src-pos/uk/chromis/pos/admin/PeopleView.form
@@ -114,7 +114,9 @@
-
+
+
+
@@ -210,7 +212,9 @@
-
+
+
+
diff --git a/src-pos/uk/chromis/pos/admin/PeopleView.java b/src-pos/uk/chromis/pos/admin/PeopleView.java
index 68b30ece..c41220f7 100644
--- a/src-pos/uk/chromis/pos/admin/PeopleView.java
+++ b/src-pos/uk/chromis/pos/admin/PeopleView.java
@@ -256,7 +256,8 @@ private void initComponents() {
setPreferredSize(new java.awt.Dimension(531, 400));
jButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/fileclose.png"))); // NOI18N
- jButton3.setToolTipText("Clear Key");
+ java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N
+ jButton3.setToolTipText(bundle.getString("tiptext.clearkey")); // NOI18N
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
@@ -294,7 +295,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jcard.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/encrypted.png"))); // NOI18N
- jButton2.setToolTipText("Create Key");
+ jButton2.setToolTipText(bundle.getString("tiptext.createkey")); // NOI18N
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
diff --git a/src-pos/uk/chromis/pos/admin/ResourceType.java b/src-pos/uk/chromis/pos/admin/ResourceType.java
index 91713c6f..878b3eb9 100644
--- a/src-pos/uk/chromis/pos/admin/ResourceType.java
+++ b/src-pos/uk/chromis/pos/admin/ResourceType.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/admin/ResourcesPanel.java b/src-pos/uk/chromis/pos/admin/ResourcesPanel.java
index a0b88811..8182b0b8 100644
--- a/src-pos/uk/chromis/pos/admin/ResourcesPanel.java
+++ b/src-pos/uk/chromis/pos/admin/ResourcesPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/admin/RoleExtInfo.java b/src-pos/uk/chromis/pos/admin/RoleExtInfo.java
index cbf76611..9c7b9feb 100644
--- a/src-pos/uk/chromis/pos/admin/RoleExtInfo.java
+++ b/src-pos/uk/chromis/pos/admin/RoleExtInfo.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/admin/RoleInfo.java b/src-pos/uk/chromis/pos/admin/RoleInfo.java
index aa0d5bf7..cad66fd8 100644
--- a/src-pos/uk/chromis/pos/admin/RoleInfo.java
+++ b/src-pos/uk/chromis/pos/admin/RoleInfo.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/admin/RolesPanelNew.java b/src-pos/uk/chromis/pos/admin/RolesPanelNew.java
index bdadca6d..e2e95a40 100644
--- a/src-pos/uk/chromis/pos/admin/RolesPanelNew.java
+++ b/src-pos/uk/chromis/pos/admin/RolesPanelNew.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/admin/RolesView.java b/src-pos/uk/chromis/pos/admin/RolesView.java
index d499146b..212746c1 100644
--- a/src-pos/uk/chromis/pos/admin/RolesView.java
+++ b/src-pos/uk/chromis/pos/admin/RolesView.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/admin/RolesViewTree.java b/src-pos/uk/chromis/pos/admin/RolesViewTree.java
index c47bc795..8da307bf 100644
--- a/src-pos/uk/chromis/pos/admin/RolesViewTree.java
+++ b/src-pos/uk/chromis/pos/admin/RolesViewTree.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -347,7 +347,7 @@ public Object createValue() throws BasicException {
role[3] = jRightsLevel.getValue();
if (!hasPermissions) {
- Object[] options = {AppLocal.getIntString("Button.NoPermissionsYes"), AppLocal.getIntString("Button.NoPermissionsNo")};
+ Object[] options = {AppLocal.getIntString("Button.Yes"), AppLocal.getIntString("Button.No")};
if (JOptionPane.showOptionDialog(this,
AppLocal.getIntString("Message.adminpermissions1") + m_jName.getText() + " " + AppLocal.getIntString("Message.adminpermissions2"), AppLocal.getIntString("Message.adminwarning"),
JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE, null, options, options[1]) == 1) {
diff --git a/src-pos/uk/chromis/pos/catalog/CatalogSelector.java b/src-pos/uk/chromis/pos/catalog/CatalogSelector.java
index e5ed5624..3a610ba1 100644
--- a/src-pos/uk/chromis/pos/catalog/CatalogSelector.java
+++ b/src-pos/uk/chromis/pos/catalog/CatalogSelector.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/catalog/JCatalog.java b/src-pos/uk/chromis/pos/catalog/JCatalog.java
index e805ab97..6c9e7ae5 100644
--- a/src-pos/uk/chromis/pos/catalog/JCatalog.java
+++ b/src-pos/uk/chromis/pos/catalog/JCatalog.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,6 +16,7 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
+//
package uk.chromis.pos.catalog;
import uk.chromis.basic.BasicException;
@@ -69,6 +70,7 @@ public class JCatalog extends JPanel implements ListSelectionListener, CatalogSe
private java.util.List categories;
private CategoryInfo showingcategory = null;
+ private Long startTime;
private boolean b;
@@ -266,6 +268,7 @@ private void selectCategoryPanel(String catid) {
categories = m_dlSales.getSubcategories(catid);
}
+ // startTime = System.nanoTime();
for (CategoryInfo cat : categories) {
// these the sub categories displayed in the main products Panel
@@ -275,16 +278,17 @@ private void selectCategoryPanel(String catid) {
jcurrTab.addButton(new ImageIcon(tnbsubcat.getThumbNailText(cat.getImage(), "")), new SelectedCategory(cat), cat.getTextTip(), "");
}
}
-/*
+
+ /*
java.util.List prods = m_dlSales.getProductCatalogAlways();
for (ProductInfoExt prod : prods) {
jcurrTab.addButton(new ImageIcon(tnbbutton.getThumbNailText(prod.getImage(), getProductLabel(prod))), new SelectedAction(prod), prod.getTextTip(), "");
}
-*/
+ */
// Add products
- java.util.List products = m_dlSales.getProductCatalog(catid, true);
+ java.util.List products = m_dlSales.getProductCatalog(catid);
for (ProductInfoExt prod : products) {
-// These are the products selection panel
+// These are the products selection panel
jcurrTab.addButton(new ImageIcon(tnbbutton.getThumbNailText(prod.getImage(), getProductLabel(prod))), new SelectedAction(prod), prod.getTextTip(), "");
}
}
@@ -295,6 +299,10 @@ private void selectCategoryPanel(String catid) {
} catch (BasicException e) {
JMessageDialog.showMessage(this, new MessageInf(MessageInf.SGN_WARNING, AppLocal.getIntString("message.notactive"), e));
}
+
+ // Long elapsedTime = System.nanoTime() - startTime;
+ // double seconds = (double)elapsedTime / 1000000000.0;
+ // System.out.println("Time take = " + seconds);
}
private String getProductLabel(ProductInfoExt product) {
diff --git a/src-pos/uk/chromis/pos/catalog/JCatalogFull.java b/src-pos/uk/chromis/pos/catalog/JCatalogFull.java
index 96cd39db..64920449 100644
--- a/src-pos/uk/chromis/pos/catalog/JCatalogFull.java
+++ b/src-pos/uk/chromis/pos/catalog/JCatalogFull.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -183,7 +183,7 @@ private void buildProductPanel() {
String sColour = (String) newColour;
if (sColour == null) {
sColour = "";
- }
+ }
jcurrTab.addButton(new ImageIcon(tnbbutton.getThumbNailText(prod.getImage(), getProductLabel(prod))), new SelectedAction(prod), prod.getTextTip(), sColour);
}
} catch (BasicException e) {
diff --git a/src-pos/uk/chromis/pos/catalog/JCatalogTab.java b/src-pos/uk/chromis/pos/catalog/JCatalogTab.java
index ef8d81e1..104a55b6 100644
--- a/src-pos/uk/chromis/pos/catalog/JCatalogTab.java
+++ b/src-pos/uk/chromis/pos/catalog/JCatalogTab.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -70,6 +70,7 @@ public void addButton(Icon ico, ActionListener al, String textTip, String col) {
JButton btn = new JButton();
btn.applyComponentOrientation(getComponentOrientation());
btn.setIcon(ico);
+ //btn.setPreferredSize(new Dimension(60, 40));
btn.setFocusPainted(false);
btn.setFocusable(false);
if (textTip != null){
diff --git a/src-pos/uk/chromis/pos/catalog/JProductsSelector.java b/src-pos/uk/chromis/pos/catalog/JProductsSelector.java
index 219fb2c6..29fc0614 100644
--- a/src-pos/uk/chromis/pos/catalog/JProductsSelector.java
+++ b/src-pos/uk/chromis/pos/catalog/JProductsSelector.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -61,7 +61,7 @@ public void addProduct(Image img, String display, ActionListener al,String textT
btn.setText(display);
// btn.setText(name);
- btn.setIcon(new ImageIcon(img));
+ btn.setIcon(new ImageIcon(img));
btn.setFocusPainted(false);
if (textTip != null){
btn.setToolTipText(textTip);
diff --git a/src-pos/uk/chromis/pos/cleandb/JFrmCreateClean.form b/src-pos/uk/chromis/pos/cleandb/JFrmCreateClean.form
new file mode 100644
index 00000000..560e0346
--- /dev/null
+++ b/src-pos/uk/chromis/pos/cleandb/JFrmCreateClean.form
@@ -0,0 +1,25 @@
+
+
+
diff --git a/src-pos/uk/chromis/pos/cleandb/JFrmCreateClean.java b/src-pos/uk/chromis/pos/cleandb/JFrmCreateClean.java
new file mode 100644
index 00000000..35a7ca54
--- /dev/null
+++ b/src-pos/uk/chromis/pos/cleandb/JFrmCreateClean.java
@@ -0,0 +1,101 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016
+// http://www.chromis.co.uk
+//
+// This file is part of Chromis POS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+package uk.chromis.pos.cleandb;
+
+import java.awt.BorderLayout;
+import java.awt.event.WindowAdapter;
+import java.awt.event.WindowEvent;
+import java.io.IOException;
+import javax.imageio.ImageIO;
+import uk.chromis.basic.BasicException;
+import uk.chromis.pos.forms.AppConfig;
+import uk.chromis.pos.forms.AppLocal;
+import uk.chromis.pos.forms.AppProperties;
+import uk.chromis.pos.forms.JRootFrame;
+
+
+public class JFrmCreateClean extends javax.swing.JFrame {
+
+ private JPanelCleandb config;
+
+ public JFrmCreateClean(AppProperties props) {
+ initComponents();
+
+ try {
+ this.setIconImage(ImageIO.read(JRootFrame.class.getResourceAsStream("/uk/chromis/fixedimages/smllogo.png")));
+ } catch (IOException e) {
+ }
+ setTitle(AppLocal.APP_NAME + " - " + AppLocal.APP_VERSION + " - " + AppLocal.getIntString("Menu.CreateCleanDB"));
+ addWindowListener(new MyFrameListener());
+
+ config = new JPanelCleandb(props);
+ getContentPane().add(config, BorderLayout.CENTER);
+
+ try {
+ config.activate();
+ } catch (BasicException e) { // never thrown ;-)
+ }
+ }
+
+ private class MyFrameListener extends WindowAdapter{
+
+ @Override
+ public void windowClosing(WindowEvent evt) {
+ if (config.deactivate()) {
+ dispose();
+ }
+ }
+ @Override
+ public void windowClosed(WindowEvent evt) {
+ System.exit(0);
+ }
+ }
+ /** This method is called from within the constructor to
+ * initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is
+ * always regenerated by the Form Editor.
+ */
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
+
+ setSize(new java.awt.Dimension(702, 591));
+ setLocationRelativeTo(null);
+ }// //GEN-END:initComponents
+
+ /**
+ * @param args the command line arguments
+ */
+ public static void main(final String args[]) {
+ java.awt.EventQueue.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+
+ AppConfig config = AppConfig.getInstance();
+ new JFrmCreateClean(config).setVisible(true);
+ }
+ });
+ }
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ // End of variables declaration//GEN-END:variables
+
+}
diff --git a/src-pos/uk/chromis/pos/cleandb/JPanelCleandb.form b/src-pos/uk/chromis/pos/cleandb/JPanelCleandb.form
new file mode 100644
index 00000000..e3795540
--- /dev/null
+++ b/src-pos/uk/chromis/pos/cleandb/JPanelCleandb.form
@@ -0,0 +1,468 @@
+
+
+
diff --git a/src-pos/uk/chromis/pos/cleandb/JPanelCleandb.java b/src-pos/uk/chromis/pos/cleandb/JPanelCleandb.java
new file mode 100644
index 00000000..19bc6b1d
--- /dev/null
+++ b/src-pos/uk/chromis/pos/cleandb/JPanelCleandb.java
@@ -0,0 +1,1085 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016
+// http://www.chromis.co.uk
+//
+// This file is part of Chromis POS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+//
+package uk.chromis.pos.cleandb;
+
+import uk.chromis.basic.BasicException;
+import uk.chromis.data.gui.JMessageDialog;
+import uk.chromis.data.gui.MessageInf;
+import uk.chromis.data.loader.Session;
+import uk.chromis.data.user.DirtyManager;
+import uk.chromis.pos.config.PanelConfig;
+import uk.chromis.pos.forms.*;
+import uk.chromis.pos.util.AltEncrypter;
+import uk.chromis.pos.util.DirectoryEvent;
+import java.awt.HeadlessException;
+import java.io.File;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.sql.Connection;
+import java.sql.DatabaseMetaData;
+import java.sql.Driver;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Properties;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.*;
+import liquibase.Liquibase;
+import liquibase.database.Database;
+import liquibase.database.DatabaseFactory;
+import liquibase.database.jvm.JdbcConnection;
+import liquibase.exception.DatabaseException;
+import liquibase.exception.LiquibaseException;
+import liquibase.resource.ClassLoaderResourceAccessor;
+
+/**
+ *
+ *
+ */
+public class JPanelCleandb extends JPanel implements JPanelView {
+
+ private DirtyManager dirty = new DirtyManager();
+ private Connection con;
+ private String sdbmanager;
+ private Connection con2;
+ private String sdbmanager2;
+ private Statement stmt;
+ private List m_panelconfig;
+
+ private String db_user2;
+ private String db_url2;
+ private char[] pass;
+ private String db_password2;
+ private String changelog;
+ private Liquibase liquibase;
+ private List tableList;
+
+ public JPanelCleandb(AppView oApp) {
+ this(oApp.getProperties());
+ }
+
+ public JPanelCleandb(AppProperties props) {
+
+ tableList = new ArrayList<>();
+
+ initComponents();
+ jPanel2.setPreferredSize(new java.awt.Dimension(645, 209));
+ m_panelconfig = new ArrayList<>();
+
+ jtxtDbDriverLib.getDocument().addDocumentListener(dirty);
+ jtxtDbDriver.getDocument().addDocumentListener(dirty);
+ jtxtDbURL.getDocument().addDocumentListener(dirty);
+ jtxtDbPassword.getDocument().addDocumentListener(dirty);
+ jtxtDbUser.getDocument().addDocumentListener(dirty);
+ jbtnDbDriverLib.addActionListener(new DirectoryEvent(jtxtDbDriverLib));
+ jNewdbType.addActionListener(dirty);
+
+ jNewdbType.addItem("Apache Derby Embedded");
+ jNewdbType.addItem("MySQL");
+ jNewdbType.addItem("PostgreSQL");
+
+ }
+
+ @Override
+ public JComponent getComponent() {
+ return this;
+ }
+
+ @Override
+ public String getTitle() {
+ return AppLocal.getIntString("Menu.Configuration");
+ }
+
+ public Boolean getSeconddbDetails() {
+ db_user2 = jtxtDbUser.getText();
+ db_url2 = jtxtDbURL.getText();
+ pass = jtxtDbPassword.getPassword();
+ db_password2 = new String(pass);
+ Properties connectionProps = new Properties();
+ connectionProps.put("user", db_user2);
+ connectionProps.put("password", db_password2);
+ try {
+ Class.forName(jtxtDbDriver.getText());
+ ClassLoader cloader = new URLClassLoader(new URL[]{new File(jtxtDbDriverLib.getText()).toURI().toURL()});
+ DriverManager.registerDriver(new DriverWrapper((Driver) Class.forName(jtxtDbDriver.getText(), true, cloader).newInstance()));
+ con2 = (Connection) DriverManager.getConnection(db_url2, db_user2, db_password2);
+ Session session2 = new Session(db_url2, db_user2, db_password2);
+ sdbmanager2 = con2.getMetaData().getDatabaseProductName();
+ return (true);
+ } catch (ClassNotFoundException | MalformedURLException | InstantiationException | IllegalAccessException | SQLException e) {
+ JMessageDialog.showMessage(this, new MessageInf(MessageInf.SGN_DANGER, AppLocal.getIntString("database.UnableToConnect"), e));
+ return (false);
+ }
+ }
+
+ @Override
+ public void activate() throws BasicException {
+ String db_user = (AppConfig.getInstance().getProperty("db.user"));
+ String db_url = (AppConfig.getInstance().getProperty("db.URL"));
+ String db_password = (AppConfig.getInstance().getProperty("db.password"));
+ if (db_user != null && db_password != null && db_password.startsWith("crypt:")) {
+ // the password is encrypted
+ AltEncrypter cypher = new AltEncrypter("cypherkey" + db_user);
+ db_password = cypher.decrypt(db_password.substring(6));
+ }
+ try {
+ Session session = AppViewConnection.createSession();
+ con = DriverManager.getConnection(db_url, db_user, db_password);
+ sdbmanager = con.getMetaData().getDatabaseProductName();
+ } catch (BasicException | SQLException e) {
+ JMessageDialog.showMessage(this, new MessageInf(MessageInf.SGN_DANGER, AppLocal.getIntString("database.UnableToConnect"), e));
+ System.exit(0);
+ }
+ }
+
+ @Override
+ public boolean deactivate() {
+ return true;
+ }
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
+ */
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ jbtnMigrate = new javax.swing.JButton();
+ jbtnExit = new javax.swing.JButton();
+ jPanel1 = new javax.swing.JPanel();
+ jPanel2 = new javax.swing.JPanel();
+ jLabel18 = new javax.swing.JLabel();
+ jtxtDbDriverLib = new javax.swing.JTextField();
+ jbtnDbDriverLib = new javax.swing.JButton();
+ jLabel1 = new javax.swing.JLabel();
+ jtxtDbDriver = new javax.swing.JTextField();
+ jLabel2 = new javax.swing.JLabel();
+ jtxtDbURL = new javax.swing.JTextField();
+ jLabel3 = new javax.swing.JLabel();
+ jtxtDbUser = new javax.swing.JTextField();
+ jLabel4 = new javax.swing.JLabel();
+ jtxtDbPassword = new javax.swing.JPasswordField();
+ jLabel5 = new javax.swing.JLabel();
+ jNewdbType = new javax.swing.JComboBox();
+ jButtonTest = new javax.swing.JButton();
+ pb = new javax.swing.JProgressBar();
+ jPanel3 = new javax.swing.JPanel();
+ jChkStockRecords = new javax.swing.JCheckBox();
+ jchkFloorplans = new javax.swing.JCheckBox();
+ jScrollPane1 = new javax.swing.JScrollPane();
+ jTextArea1 = new javax.swing.JTextArea();
+
+ setPreferredSize(new java.awt.Dimension(600, 300));
+
+ jbtnMigrate.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jbtnMigrate.setText("Create Clean Database");
+ jbtnMigrate.setMaximumSize(new java.awt.Dimension(70, 33));
+ jbtnMigrate.setMinimumSize(new java.awt.Dimension(70, 33));
+ jbtnMigrate.setPreferredSize(new java.awt.Dimension(70, 33));
+ jbtnMigrate.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jbtnMigrateActionPerformed(evt);
+ }
+ });
+
+ jbtnExit.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jbtnExit.setText(AppLocal.getIntString("Button.Exit")); // NOI18N
+ jbtnExit.setMaximumSize(new java.awt.Dimension(70, 33));
+ jbtnExit.setMinimumSize(new java.awt.Dimension(70, 33));
+ jbtnExit.setPreferredSize(new java.awt.Dimension(70, 33));
+ jbtnExit.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jbtnExitActionPerformed(evt);
+ }
+ });
+
+ jPanel1.setLayout(null);
+
+ jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "New Database details", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N
+ jPanel2.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel18.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel18.setText(AppLocal.getIntString("label.dbdriverlib")); // NOI18N
+
+ jtxtDbDriverLib.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jbtnDbDriverLib.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/fileopen.png"))); // NOI18N
+ jbtnDbDriverLib.setMaximumSize(new java.awt.Dimension(64, 32));
+ jbtnDbDriverLib.setMinimumSize(new java.awt.Dimension(64, 32));
+ jbtnDbDriverLib.setPreferredSize(new java.awt.Dimension(64, 32));
+
+ jLabel1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel1.setText(AppLocal.getIntString("Label.DbDriver")); // NOI18N
+
+ jtxtDbDriver.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel2.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel2.setText(AppLocal.getIntString("Label.DbURL")); // NOI18N
+
+ jtxtDbURL.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel3.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel3.setText(AppLocal.getIntString("Label.DbUser")); // NOI18N
+
+ jtxtDbUser.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel4.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel4.setText(AppLocal.getIntString("Label.DbPassword")); // NOI18N
+
+ jtxtDbPassword.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel5.setText("New Database ");
+
+ jNewdbType.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jNewdbTypeActionPerformed(evt);
+ }
+ });
+
+ jButtonTest.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jButtonTest.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/database.png"))); // NOI18N
+ java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N
+ jButtonTest.setText(bundle.getString("Button.Test")); // NOI18N
+ jButtonTest.setActionCommand(bundle.getString("Button.Test")); // NOI18N
+ jButtonTest.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jButtonTestjButtonTestConnectionActionPerformed(evt);
+ }
+ });
+
+ javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
+ jPanel2.setLayout(jPanel2Layout);
+ jPanel2Layout.setHorizontalGroup(
+ jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel2Layout.createSequentialGroup()
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel2Layout.createSequentialGroup()
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(jLabel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, 86, Short.MAX_VALUE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jtxtDbUser, javax.swing.GroupLayout.PREFERRED_SIZE, 177, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jtxtDbPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 177, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGap(26, 26, 26)
+ .addComponent(jButtonTest, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel2Layout.createSequentialGroup()
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+ .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel2Layout.createSequentialGroup()
+ .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 93, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jNewdbType, 0, 394, Short.MAX_VALUE))
+ .addGroup(jPanel2Layout.createSequentialGroup()
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(jLabel18, javax.swing.GroupLayout.DEFAULT_SIZE, 86, Short.MAX_VALUE)
+ .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
+ .addComponent(jtxtDbDriver, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 395, Short.MAX_VALUE)
+ .addComponent(jtxtDbDriverLib, javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jtxtDbURL))))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jbtnDbDriverLib, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
+ jPanel2Layout.setVerticalGroup(
+ jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel2Layout.createSequentialGroup()
+ .addGap(0, 0, 0)
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+ .addComponent(jbtnDbDriverLib, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGroup(jPanel2Layout.createSequentialGroup()
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jNewdbType, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jtxtDbDriverLib, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel18, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jtxtDbDriver, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jtxtDbURL, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel2Layout.createSequentialGroup()
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jtxtDbUser, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jtxtDbPassword, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
+ .addComponent(jButtonTest, javax.swing.GroupLayout.PREFERRED_SIZE, 40, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap())))
+ );
+
+ jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(null, bundle.getString("title.keep"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", 1, 11))); // NOI18N
+
+ jChkStockRecords.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jChkStockRecords.setText(bundle.getString("label.stockrecords")); // NOI18N
+
+ jchkFloorplans.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jchkFloorplans.setText(bundle.getString("label.floorplans")); // NOI18N
+
+ jTextArea1.setEditable(false);
+ jTextArea1.setColumns(20);
+ jTextArea1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jTextArea1.setRows(5);
+ jTextArea1.setText(" All products and their associated references, Users, Resources and Permissions will be \n retained in the new database.\n\n You may also retain details from the following");
+ jScrollPane1.setViewportView(jTextArea1);
+ jTextArea1.getAccessibleContext().setAccessibleParent(jTextArea1);
+
+ javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
+ jPanel3.setLayout(jPanel3Layout);
+ jPanel3Layout.setHorizontalGroup(
+ jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel3Layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jScrollPane1)
+ .addGroup(jPanel3Layout.createSequentialGroup()
+ .addComponent(jChkStockRecords, javax.swing.GroupLayout.PREFERRED_SIZE, 261, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(18, 18, 18)
+ .addComponent(jchkFloorplans, javax.swing.GroupLayout.PREFERRED_SIZE, 261, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(0, 8, Short.MAX_VALUE)))
+ .addContainerGap())
+ );
+ jPanel3Layout.setVerticalGroup(
+ jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jChkStockRecords)
+ .addComponent(jchkFloorplans))
+ .addContainerGap(18, Short.MAX_VALUE))
+ );
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ this.setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+ .addGap(0, 0, Short.MAX_VALUE)
+ .addComponent(jbtnMigrate, javax.swing.GroupLayout.PREFERRED_SIZE, 191, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(30, 30, 30)
+ .addComponent(jbtnExit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(jPanel3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(pb, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
+ .addContainerGap())
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(5, 5, 5)
+ .addComponent(pb, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jbtnMigrate, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jbtnExit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
+ }// //GEN-END:initComponents
+
+ private void replaceSequenceNumbers() {
+ pb.setString("Transferring sequences tables ");
+ ResultSet seqRS;
+
+ try {
+ seqRS = con.createStatement().executeQuery("SELECT * FROM PICKUP_NUMBER");
+ updateSequence(getNextValue(seqRS), "PICKUP_NUMBER");
+ } catch (SQLException ex) {
+ }
+ try {
+ seqRS = con.createStatement().executeQuery("SELECT * FROM TICKETSNUM");
+ updateSequence(getNextValue(seqRS), "TICKETSNUM");
+ } catch (SQLException ex) {
+ }
+ try {
+ seqRS = con.createStatement().executeQuery("SELECT * FROM TICKETSNUM_PAYMENT");
+ updateSequence(getNextValue(seqRS), "TICKETSNUM_PAYMENT");
+ } catch (SQLException ex) {
+ }
+ try {
+ seqRS = con.createStatement().executeQuery("SELECT * FROM TICKETSNUM_REFUND");
+ updateSequence(getNextValue(seqRS), "TICKETSNUM_REFUND");
+ } catch (SQLException ex) {
+ }
+ try {
+ seqRS = con.createStatement().executeQuery("SELECT * FROM TICKETSNUM_INVOICE");
+ updateSequence(getNextValue(seqRS), "TICKETSNUM_INVOICE");
+ } catch (SQLException ex) {
+ }
+ }
+
+ private void updateSequence(String nextValue, String table) throws SQLException {
+ if ("MySQL".equals(sdbmanager2)) {
+ con2.createStatement().executeUpdate("UPDATE " + table + " SET ID = " + nextValue);
+ } else if (("Apache Derby".equals(sdbmanager2))) {
+ con2.createStatement().executeUpdate("DROP TABLE " + table);
+ Integer nextInt = Integer.parseInt(nextValue);
+ nextInt++;
+ con2.createStatement().executeUpdate("CREATE TABLE " + table + " (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH " + nextInt.toString() + "))");
+ } else {
+ Integer nextInt = Integer.parseInt(nextValue);
+ nextInt++;
+ con2.createStatement().executeUpdate("ALTER SEQUENCE " + table + " RESTART WITH " + nextInt.toString());
+ }
+ }
+
+ private String getNextValue(ResultSet rs) {
+ try {
+ while (rs.next()) {
+ if (("PostgreSQL".equals(sdbmanager))) {
+ return rs.getString("LAST_VALUE");
+ } else {;
+ return rs.getString("ID");
+ }
+ }
+ } catch (SQLException ex) {
+ }
+ return "1";
+ }
+
+ private void performAction() {
+ if (getSeconddbDetails()) {
+ if (createDB()) {
+ DatabaseMetaData md;
+ ResultSet rsTables = null;
+ Statement stmtTables;
+ try {
+ md = con.getMetaData();
+ switch (sdbmanager) {
+ case "MySQL":
+ rsTables = md.getTables(null, null, "%", null);
+ break;
+ case "PostgreSQL":
+ stmtTables = con.createStatement();
+ rsTables = stmtTables.executeQuery("SELECT * FROM information_schema.tables WHERE table_type = 'BASE TABLE' AND table_schema = 'public' ORDER BY table_type, table_name");
+ break;
+ default:
+ stmtTables = con.createStatement();
+ rsTables = stmtTables.executeQuery("SELECT * FROM sys.systables WHERE tabletype='T' ORDER BY tablename");
+ }
+ while (rsTables.next()) {
+ String tableName;
+ switch (sdbmanager) {
+ case "MySQL":
+ tableName = rsTables.getString(3).toUpperCase();
+ break;
+ case "PostgreSQL":
+ tableName = rsTables.getString("table_name").toUpperCase();
+ break;
+ default:
+ tableName = rsTables.getString("tablename").toUpperCase();
+ }
+
+ // if (!tableName.equalsIgnoreCase("ticketsnum") && !tableName.equalsIgnoreCase("pickup_number")
+ // && !tableName.equalsIgnoreCase("ticketsnum_invoice") && !tableName.equalsIgnoreCase("ticketsnum_payment")
+ // && !tableName.equalsIgnoreCase("ticketsnum_refund")) {
+ if (tableList.contains(tableName)) {
+
+ pb.setString("Transferring data from table " + tableName);
+ String SQL = " SELECT * FROM " + tableName;
+ Statement dataStmt = con.createStatement();
+ ResultSet dataRS = dataStmt.executeQuery(SQL);
+ ResultSetMetaData rsmd = dataRS.getMetaData();
+ PreparedStatement pstmt;
+
+ while (dataRS.next()) {
+ StringBuilder SQLInsert = new StringBuilder();
+ StringBuilder SQLSubString = new StringBuilder();
+ SQLSubString.append("values (");
+ SQLInsert.append("INSERT INTO ");
+ SQLInsert.append(tableName);
+ SQLInsert.append(" (");
+
+ for (int j = 1; j <= rsmd.getColumnCount(); j++) {
+ if (dataRS.getString(rsmd.getColumnName(j)) != null) {
+ SQLInsert.append(rsmd.getColumnName(j));
+ SQLInsert.append(", ");
+ SQLSubString.append("?, ");
+ }
+ }
+
+ SQLInsert.setLength(SQLInsert.length() - 2);
+ SQLInsert.append(") ");
+ SQLSubString.setLength(SQLSubString.length() - 2);
+ SQLSubString.append(") ");
+ SQLInsert.append(SQLSubString);
+
+ pstmt = con2.prepareStatement(SQLInsert.toString());
+ int i = 1;
+ for (int j = 1; j <= rsmd.getColumnCount(); j++) {
+
+ if (dataRS.getString(rsmd.getColumnName(j)) != null) {
+ switch (rsmd.getColumnType(j)) {
+ case 12: //varchar
+ pstmt.setString(i, dataRS.getString(rsmd.getColumnName(j)));
+ break;
+ case 8: //double
+ pstmt.setDouble(i, dataRS.getDouble(rsmd.getColumnName(j)));
+ break;
+ case 16: //boolean
+ case -7:
+ pstmt.setBoolean(i, dataRS.getBoolean(rsmd.getColumnName(j)));
+ break;
+ case 2004: //blob
+ case -2:
+ case -4:
+ pstmt.setBytes(i, dataRS.getBytes(rsmd.getColumnName(j)));
+ break;
+ case 4:
+ case 5://integer
+ pstmt.setInt(i, dataRS.getInt(rsmd.getColumnName(j)));
+ break;
+ case 93: //timestamp
+ pstmt.setTimestamp(i, dataRS.getTimestamp(rsmd.getColumnName(j)));
+ break;
+ case 2:
+ pstmt.setBigDecimal(i, dataRS.getBigDecimal(rsmd.getColumnName(j)));
+ break;
+ }
+ i++;
+ }
+ }
+ pstmt.executeUpdate();
+ }
+ }
+ }
+ } catch (SQLException ex) {
+ Logger.getLogger(JPanelCleandb.class.getName()).log(Level.SEVERE, null, ex);
+ }
+
+ if (!jChkStockRecords.isSelected()) {
+ try {
+ con2.createStatement().executeUpdate("UPDATE STOCKCURRENT SET UNITS = 0.0");
+ } catch (SQLException ex) {
+ }
+ }
+
+ //replaceSequenceNumbers();
+ try {
+ con2.createStatement().executeUpdate("DELETE FROM DATABASECHANGELOG WHERE ID='New Database'");
+ } catch (SQLException ex) {
+
+ }
+
+ try {
+ con2.createStatement().executeUpdate("DELETE FROM DATABASECHANGELOG WHERE ID='Good FKs'");
+ } catch (SQLException ex) {
+ }
+
+ try {
+ con2.createStatement().executeUpdate("DELETE FROM DATABASECHANGELOG WHERE ID='derby10.10.20'");
+ } catch (SQLException ex) {
+ }
+
+ try {
+ con2.createStatement().executeUpdate("DELETE FROM DATABASECHANGELOG WHERE ID='Insert into tables required indexes for migration (New Database)'");
+ } catch (SQLException ex) {
+ }
+
+ try {
+ con2.createStatement().executeUpdate("DELETE FROM DATABASECHANGELOG WHERE ID='Create Foreign Keys in tables part of migration (New Database)'");
+ } catch (SQLException ex) {
+ }
+
+ try {
+ con2.createStatement().executeUpdate("DELETE FROM DATABASECHANGELOG WHERE ID='Create Primary keys (new db - migrate function)'");
+ } catch (SQLException ex) {
+ }
+
+ try {
+ ClassLoader cloader = new URLClassLoader(new URL[]{new File(AppConfig.getInstance().getProperty("db.driverlib")).toURI().toURL()});
+ DriverManager.registerDriver(new DriverWrapper((Driver) Class.forName(AppConfig.getInstance().getProperty("db.driver"), true, cloader).newInstance()));
+ Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(DriverManager.getConnection(db_url2, db_user2, db_password2)));
+ pb.setString("Adding System Defaults ");
+ changelog = "uk/chromis/pos/liquibase/common/adddefaults.xml";
+ liquibase = new Liquibase(changelog, new ClassLoaderResourceAccessor(), database);
+ liquibase.update("implement");
+ pb.setString("Adding Primary Keys ");
+ changelog = "uk/chromis/pos/liquibase/common/primarykeys.xml";
+ liquibase = new Liquibase(changelog, new ClassLoaderResourceAccessor(), database);
+ liquibase.update("implement");
+ pb.setString("Creating Indexes and Foreign Keys ");
+ changelog = "uk/chromis/pos/liquibase/common/addindexes.xml";
+ liquibase = new Liquibase(changelog, new ClassLoaderResourceAccessor(), database);
+ liquibase.update("implement");
+ } catch (DatabaseException ex) {
+ Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (LiquibaseException ex) {
+ Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (MalformedURLException | SQLException | ClassNotFoundException | InstantiationException | IllegalAccessException ex) {
+ Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
+ }
+
+ pb.setString("Clean Database Creation Complete ... ");
+ pb.setIndeterminate(false);
+
+ AppConfig.getInstance().setProperty("db.engine", sdbmanager2);
+ AppConfig.getInstance().setProperty("db.driverlib", jtxtDbDriverLib.getText());
+ AppConfig.getInstance().setProperty("db.driver", jtxtDbDriver.getText());
+ AppConfig.getInstance().setProperty("db.URL", jtxtDbURL.getText());
+ AppConfig.getInstance().setProperty("db.user", jtxtDbUser.getText());
+ AltEncrypter cypher = new AltEncrypter("cypherkey" + jtxtDbUser.getText());
+ AppConfig.getInstance().setProperty("db.password", "crypt:" + cypher.encrypt(new String(jtxtDbPassword.getPassword())));
+ dirty.setDirty(false);
+
+ for (PanelConfig c : m_panelconfig) {
+ c.saveProperties();
+ }
+
+ try {
+ AppConfig.getInstance().save();
+ JOptionPane.showMessageDialog(this, AppLocal.getIntString("message.restartchanges"), AppLocal.getIntString("message.title"), JOptionPane.INFORMATION_MESSAGE);
+ jbtnMigrate.setEnabled(false);
+ } catch (IOException ex) {
+ Logger.getLogger(JPanelCleandb.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ } else {
+ pb.setString("");
+ pb.setIndeterminate(false);
+ JOptionPane.showMessageDialog(this, "Database already exists", "Database Found", JOptionPane.INFORMATION_MESSAGE);
+ }
+ }
+ }
+
+ private Boolean createDB() {
+ // check if the database already exists
+ Statement chkStmt;
+ try {
+ chkStmt = con2.createStatement();
+ ResultSet chkRS = chkStmt.executeQuery("SELECT * FROM APPLICATIONS");
+ chkRS.close();
+ chkStmt.close();
+ return false;
+ } catch (SQLException ex) {
+ }
+
+ pb.setString("Creating blank database ..... ");
+ if ((!"MySQL".equals(sdbmanager2)) && (!"PostgreSQL".equals(sdbmanager2)) && (!"Apache Derby".equals(sdbmanager2))) {
+ return (false);
+ }
+
+ DatabaseMetaData md;
+ ResultSet rsTables = null;
+ Statement stmtTables;
+ try {
+ md = con.getMetaData();
+ switch (sdbmanager) {
+ case "MySQL":
+ rsTables = md.getTables(null, null, "%", null);
+ break;
+ case "PostgreSQL":
+ stmtTables = con.createStatement();
+ rsTables = stmtTables.executeQuery("SELECT * FROM information_schema.tables WHERE table_type = 'BASE TABLE' AND table_schema = 'public' ORDER BY table_type, table_name");
+ break;
+ default:
+ stmtTables = con.createStatement();
+ rsTables = stmtTables.executeQuery("SELECT * FROM sys.systables WHERE tabletype='T' ORDER BY tablename");
+ }
+
+ while (rsTables.next()) {
+ switch (sdbmanager) {
+ case "MySQL":
+ if (!rsTables.getString(3).equalsIgnoreCase("ticketsnum") && !rsTables.getString(3).equalsIgnoreCase("pickup_number")
+ && !rsTables.getString(3).equalsIgnoreCase("ticketsnum_invoice") && !rsTables.getString(3).equalsIgnoreCase("ticketsnum_payment")
+ && !rsTables.getString(3).equalsIgnoreCase("ticketsnum_refund")) {
+ createTable(rsTables.getString(3));
+ }
+ break;
+ case "PostgreSQL":
+ if (!rsTables.getString("table_name").equalsIgnoreCase("ticketsnum") && !rsTables.getString("table_name").equalsIgnoreCase("pickup_number")
+ && !rsTables.getString("table_name").equalsIgnoreCase("ticketsnum_invoice") && !rsTables.getString("table_name").equalsIgnoreCase("ticketsnum_payment")
+ && !rsTables.getString("table_name").equalsIgnoreCase("ticketsnum_refund")) {
+ createTable(rsTables.getString("table_name").toLowerCase());
+ }
+ break;
+ default:
+ if (!rsTables.getString("tablename").equalsIgnoreCase("ticketsnum") && !rsTables.getString("tablename").equalsIgnoreCase("pickup_number")
+ && !rsTables.getString("tablename").equalsIgnoreCase("ticketsnum_invoice") && !rsTables.getString("tablename").equalsIgnoreCase("ticketsnum_payment")
+ && !rsTables.getString("tablename").equalsIgnoreCase("ticketsnum_refund")) {
+ createTable(rsTables.getString("tablename").toUpperCase());
+
+ }
+ }
+ }
+ } catch (SQLException ex) {
+ Logger.getLogger(JPanelCleandb.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ try {
+ ClassLoader cloader = new URLClassLoader(new URL[]{new File(AppConfig.getInstance().getProperty("db.driverlib")).toURI().toURL()});
+ DriverManager.registerDriver(new DriverWrapper((Driver) Class.forName(AppConfig.getInstance().getProperty("db.driver"), true, cloader).newInstance()));
+ changelog = "uk/chromis/pos/liquibase/common/sequences.xml";
+ Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(DriverManager.getConnection(db_url2, db_user2, db_password2)));
+ liquibase = new Liquibase(changelog, new ClassLoaderResourceAccessor(), database);
+ liquibase.update("implement");
+
+ } catch (DatabaseException ex) {
+ Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
+
+ } catch (LiquibaseException ex) {
+ Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
+
+ } catch (MalformedURLException | SQLException | ClassNotFoundException | InstantiationException | IllegalAccessException ex) {
+ Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
+ }
+
+ try {
+ stmt = con2.createStatement();
+ stmt.executeUpdate("DELETE FROM DATABASECHANGELOG");
+ stmt.executeUpdate("DELETE FROM DATABASECHANGELOGLOCK");
+ } catch (SQLException ex) {
+
+ }
+ return (true);
+ }
+
+ private void createTable(String table) {
+ try {
+ String SQL = " SELECT * FROM " + table;
+ Statement dataStmt = con.createStatement();
+ ResultSet dataRS = dataStmt.executeQuery(SQL);
+ ResultSetMetaData rsmd = dataRS.getMetaData();
+
+ DatabaseMetaData mdColumns = con.getMetaData();
+ ResultSet rsColumns = mdColumns.getColumns(null, null, table, null);
+ StringBuilder sql = new StringBuilder();
+ sql.append("CREATE TABLE ");
+ sql.append(table.toUpperCase());
+ sql.append(" (\n");
+ //System.out.println("************************************************************");
+ //System.out.println(table);
+ //System.out.println("************************************************************");
+
+ while (rsColumns.next()) {
+ sql.append(rsColumns.getString("COLUMN_NAME"));
+ switch (rsColumns.getInt("DATA_TYPE")) {
+ case 12:
+ sql.append(" varchar(");
+ sql.append(rsColumns.getInt("COLUMN_SIZE"));
+ sql.append(")");
+ break;
+ case 8:
+ sql.append((sdbmanager2.equals("MySQL")) ? " DOUBLE" : " DOUBLE PRECISION");
+ break;
+ case -2:
+ case 2004:
+ case -4:
+ if (sdbmanager2.equals("MySQL")) {
+ sql.append(" mediumblob");
+ break;
+ } else if (sdbmanager2.equals("Apache Derby")) {
+ sql.append(" blob");
+ break;
+ }
+ sql.append(" bytea");
+ break;
+ case 16:
+ case -7:
+ sql.append((sdbmanager2.equals("MySQL")) ? " bit(1)" : " boolean");
+ break;
+ case 93:
+ sql.append((sdbmanager2.equals("MySQL")) ? " datetime" : " timestamp");
+ break;
+ case 4:
+ case 5:
+ sql.append(" integer");
+ break;
+ case 2:
+ sql.append(" numeric(");
+ for (int k = 1; k <= rsmd.getColumnCount(); k++) {
+ if (rsmd.getColumnName(k).equalsIgnoreCase(rsColumns.getString("COLUMN_NAME"))) {
+ sql.append(rsmd.getPrecision(k));
+ sql.append(",");
+ sql.append(rsmd.getScale(k));
+ sql.append(")");
+ }
+ }
+ break;
+ }
+ if (rsColumns.getString("IS_NULLABLE").equalsIgnoreCase("no")) {
+ if (rsColumns.getString("COLUMN_DEF") == null) {
+ sql.append(" not null");
+ } else {
+ sql.append(" default");
+ switch (rsColumns.getInt("DATA_TYPE")) {
+ case 4:
+ case 5:
+ sql.append(" ");
+ sql.append(rsColumns.getString("COLUMN_DEF"));
+ sql.append(" not null");
+ break;
+ case 8:
+ sql.append(" ");
+ sql.append(rsColumns.getString("COLUMN_DEF"));
+ sql.append(" not null");
+ break;
+ case 12:
+ sql.append(" '");
+ sql.append(rsColumns.getString("COLUMN_DEF").replaceAll("::character varying", "").replaceAll("'", ""));
+ sql.append("'");
+ sql.append(" not null");
+ break;
+ case 93:
+ if (rsColumns.getString("COLUMN_DEF").equalsIgnoreCase("CURRENT_TIMESTAMP") || rsColumns.getString("COLUMN_DEF").equalsIgnoreCase("now()")) {
+ sql.append(" ");
+ sql.append("CURRENT_TIMESTAMP");
+ break;
+ } else {
+ sql.append(" '");
+ sql.append(rsColumns.getString("COLUMN_DEF").replaceAll("::timestamp without time zone", "").replaceAll("'", "").replaceAll("TIMESTAMP", "").replace("(", "").replace(")", ""));
+ sql.append("'");
+ sql.append(" not null");
+ break;
+ }
+ case 16:
+ case -7:
+ if (sdbmanager2.equals("MySQL")) {
+ if (rsColumns.getString("COLUMN_DEF").equalsIgnoreCase("true")) {
+ sql.append(" b'1'");
+ sql.append(" not null");
+ break;
+ } else if (rsColumns.getString("COLUMN_DEF").equalsIgnoreCase("false")) {
+ sql.append(" b'0'");
+ sql.append(" not null");
+ break;
+ }
+ }
+ if (rsColumns.getString("COLUMN_DEF").contains("B'1'") || rsColumns.getString("COLUMN_DEF").contains("b'1'")) {
+ sql.append(" true");
+ sql.append(" not null");
+ break;
+ } else if (rsColumns.getString("COLUMN_DEF").contains("B'0'") || rsColumns.getString("COLUMN_DEF").contains("b'0'")) {
+ sql.append(" false");
+ sql.append(" not null");
+ break;
+ }
+ sql.append(" ");
+ sql.append(rsColumns.getString("COLUMN_DEF"));
+ sql.append(" not null");
+ break;
+ case 2:
+ sql.append(" ");
+ sql.append(rsColumns.getString("COLUMN_DEF"));
+ sql.append(" not null");
+ break;
+ default:
+ sql.append(" ");
+ sql.append(rsColumns.getString("COLUMN_DEF"));
+ sql.append(" not null");
+ break;
+ }
+ }
+
+ }
+ sql.append(",\n");
+
+ // String name = rsColumns.getString("COLUMN_NAME");
+ // String type = rsColumns.getString("TYPE_NAME");
+ // int size = rsColumns.getInt("COLUMN_SIZE");
+ // String dvalue = rsColumns.getString("COLUMN_DEF");
+ // int dType = rsColumns.getInt("DATA_TYPE");
+ //System.out.println("Column name: [" + name + "]; type: [" + type
+ // + "]; typeint: [" + dType + "]; size: [" + size + "]" + "; defaultvalue:[" + dvalue + "];");
+ }
+ sql.setLength(sql.length() - 2);
+ sql.append("\n)");
+ if (sdbmanager2.equals("MySQL")) {
+ sql.append(" ENGINE = InnoDB DEFAULT CHARSET=utf8 ");
+ }
+ //System.out.println("--------------------------------------------------------------");
+ //System.out.println(sql.toString());
+ Statement stmt2;
+ stmt2 = con2.createStatement();
+ stmt2.executeUpdate(sql.toString());
+
+ } catch (SQLException ex) {
+ Logger.getLogger(JPanelCleandb.class.getName()).log(Level.SEVERE, null, ex);
+ try {
+ con2.close();
+ con.close();
+
+ } catch (SQLException ex1) {
+ Logger.getLogger(JPanelCleandb.class.getName()).log(Level.SEVERE, null, ex1);
+
+ }
+
+ }
+ }
+
+ private void jbtnMigrateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnMigrateActionPerformed
+
+ tableList.clear();
+ tableList.add("APPLICATIONS");
+ tableList.add("PRODUCTS");
+ tableList.add("CATEGORIES");
+ tableList.add("ATTRIBUTE");
+ tableList.add("ATTRIBUTEINSTANCE");
+ tableList.add("ATTRIBUTESET");
+ tableList.add("ATTRIBUTESETINSTANCE");
+ tableList.add("ATTRIBUTEUSE");
+ tableList.add("ATTRIBUTEVALUE");
+ tableList.add("PRODUCTS_COM");
+ tableList.add("PRODUCTS_KIT");
+ tableList.add("TAXCATEGORIES");
+ tableList.add("TAXCUSTCATEGORIES");
+ tableList.add("TAXES");
+ tableList.add("SITEGUID");
+ tableList.add("DBPERMISSIONS");
+ tableList.add("ROLES");
+ tableList.add("PEOPLE");
+ tableList.add("RESOURCES");
+ tableList.add("STOCKCURRENT");
+ tableList.add("LOCATIONS");
+
+ if (jchkFloorplans.isSelected()) {
+ tableList.add("PLACES");
+ tableList.add("FLOORS");
+ }
+
+ Thread workThread = new Thread() {
+ public void run() {
+ performAction();
+ }
+ };
+ workThread.start();
+
+ pb.setIndeterminate(true);
+ pb.setStringPainted(true);
+
+ }//GEN-LAST:event_jbtnMigrateActionPerformed
+
+ private void jbtnExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnExitActionPerformed
+ deactivate();
+ System.exit(0);
+ }//GEN-LAST:event_jbtnExitActionPerformed
+
+ private void jButtonTestjButtonTestConnectionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonTestjButtonTestConnectionActionPerformed
+ try {
+ String driverlib = jtxtDbDriverLib.getText();
+ String driver = jtxtDbDriver.getText();
+ String url = jtxtDbURL.getText();
+ String user = jtxtDbUser.getText();
+ String password = new String(jtxtDbPassword.getPassword());
+
+ ClassLoader cloader = new URLClassLoader(new URL[]{new File(driverlib).toURI().toURL()});
+ DriverManager.registerDriver(new DriverWrapper((Driver) Class.forName(driver, true, cloader).newInstance()));
+
+ Session session = new Session(url, user, password);
+ Connection connection = session.getConnection();
+ boolean isValid = (connection == null) ? false : connection.isValid(1000);
+
+ if (isValid) {
+ JOptionPane.showMessageDialog(this, AppLocal.getIntString("message.databaseconnectsuccess"), "Connection Test", JOptionPane.INFORMATION_MESSAGE);
+ } else {
+ JMessageDialog.showMessage(this, new MessageInf(MessageInf.SGN_WARNING, "Connection Error"));
+ }
+ } catch (InstantiationException | IllegalAccessException | MalformedURLException | ClassNotFoundException e) {
+ JMessageDialog.showMessage(this, new MessageInf(MessageInf.SGN_WARNING, AppLocal.getIntString("message.databasedrivererror"), e));
+ } catch (SQLException e) {
+ JMessageDialog.showMessage(this, new MessageInf(MessageInf.SGN_WARNING, AppLocal.getIntString("message.databaseconnectionerror"), e));
+ } catch (HeadlessException e) {
+ JMessageDialog.showMessage(this, new MessageInf(MessageInf.SGN_WARNING, "Unknown exception", e));
+ }
+ }//GEN-LAST:event_jButtonTestjButtonTestConnectionActionPerformed
+
+ private void jNewdbTypeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jNewdbTypeActionPerformed
+ if ("MySQL".equals(jNewdbType.getSelectedItem())) {
+ jtxtDbDriverLib.setText(System.getProperty("user.dir") + "/lib/mysql-connector-java-5.1.26-bin.jar");
+ jtxtDbDriver.setText("com.mysql.jdbc.Driver");
+ jtxtDbURL.setText("jdbc:mysql://localhost:3306/chromispos");
+ //jtxtDbURL.setText("jdbc:mysql://192.168.254.75:3306/ghost");
+ //jtxtDbUser.setText("eposuser");
+ //jtxtDbPassword.setText("epos");
+ } else if ("PostgreSQL".equals(jNewdbType.getSelectedItem())) {
+ jtxtDbDriverLib.setText(System.getProperty("user.dir") + "/lib/postgresql-9.2-1003.jdbc4.jar");
+ jtxtDbDriver.setText("org.postgresql.Driver");
+ jtxtDbURL.setText("jdbc:postgresql://localhost:5432/chromispos");
+ } else if ("Apache Derby Embedded".equals(jNewdbType.getSelectedItem())) {
+ jtxtDbDriverLib.setText(System.getProperty("user.dir") + "/lib/derby-10.10.2.0.jar");
+ jtxtDbDriver.setText("org.apache.derby.jdbc.EmbeddedDriver");
+ jtxtDbURL.setText("jdbc:derby:" + new File(new File(System.getProperty("user.home")), AppLocal.APP_ID + "-database").getAbsolutePath() + ";create=true");
+ jtxtDbUser.setText("");
+ jtxtDbPassword.setText("");
+ }
+ }//GEN-LAST:event_jNewdbTypeActionPerformed
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton jButtonTest;
+ private javax.swing.JCheckBox jChkStockRecords;
+ private javax.swing.JLabel jLabel1;
+ private javax.swing.JLabel jLabel18;
+ private javax.swing.JLabel jLabel2;
+ private javax.swing.JLabel jLabel3;
+ private javax.swing.JLabel jLabel4;
+ private javax.swing.JLabel jLabel5;
+ private javax.swing.JComboBox jNewdbType;
+ private javax.swing.JPanel jPanel1;
+ private javax.swing.JPanel jPanel2;
+ private javax.swing.JPanel jPanel3;
+ private javax.swing.JScrollPane jScrollPane1;
+ private javax.swing.JTextArea jTextArea1;
+ private javax.swing.JButton jbtnDbDriverLib;
+ private javax.swing.JButton jbtnExit;
+ private javax.swing.JButton jbtnMigrate;
+ private javax.swing.JCheckBox jchkFloorplans;
+ private javax.swing.JTextField jtxtDbDriver;
+ private javax.swing.JTextField jtxtDbDriverLib;
+ private javax.swing.JPasswordField jtxtDbPassword;
+ private javax.swing.JTextField jtxtDbURL;
+ private javax.swing.JTextField jtxtDbUser;
+ private javax.swing.JProgressBar pb;
+ // End of variables declaration//GEN-END:variables
+}
diff --git a/src-pos/uk/chromis/pos/comm/CommStream.java b/src-pos/uk/chromis/pos/comm/CommStream.java
index 6cfee92d..d63f8e0f 100644
--- a/src-pos/uk/chromis/pos/comm/CommStream.java
+++ b/src-pos/uk/chromis/pos/comm/CommStream.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/config/JFrmConfig.java b/src-pos/uk/chromis/pos/config/JFrmConfig.java
index 31bbdc54..45671050 100644
--- a/src-pos/uk/chromis/pos/config/JFrmConfig.java
+++ b/src-pos/uk/chromis/pos/config/JFrmConfig.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -77,7 +77,7 @@ public void windowClosing(WindowEvent evt) {
}
}
@Override
- public void windowClosed(WindowEvent evt) {
+ public void windowClosed(WindowEvent evt) {
System.exit(0);
}
}
@@ -103,13 +103,10 @@ private void initComponents() {
public static void main(final String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
- public void run() {
-
- // config = AppConfig.getInstance().getDefaultConfig();
- // config.load();
+ public void run() {
+
// Set the look and feel.
- // Set the look and feel.
try {
Object laf = Class.forName(AppConfig.getInstance().getProperty("swing.defaultlaf")).newInstance();
diff --git a/src-pos/uk/chromis/pos/config/JPanelConfigDatabase.form b/src-pos/uk/chromis/pos/config/JPanelConfigDatabase.form
index f0b3384a..97bb5c91 100644
--- a/src-pos/uk/chromis/pos/config/JPanelConfigDatabase.form
+++ b/src-pos/uk/chromis/pos/config/JPanelConfigDatabase.form
@@ -188,6 +188,9 @@
+
+
+
diff --git a/src-pos/uk/chromis/pos/config/JPanelConfigDatabase.java b/src-pos/uk/chromis/pos/config/JPanelConfigDatabase.java
index 3c7f1bb1..2d875302 100644
--- a/src-pos/uk/chromis/pos/config/JPanelConfigDatabase.java
+++ b/src-pos/uk/chromis/pos/config/JPanelConfigDatabase.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -63,15 +63,9 @@ public JPanelConfigDatabase() {
jcboDBDriver.addItem("Apache Derby Embedded");
- jcboDBDriver.addItem("Apache Derby Client/Server");
- jcboDBDriver.addItem("HSQLDB");
jcboDBDriver.addItem("MySQL");
- jcboDBDriver.addItem("Oracle 11g Express");
jcboDBDriver.addItem("PostgreSQL");
-
-
-
-
+
}
/**
@@ -185,6 +179,8 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jtxtDbDriverLib.setPreferredSize(new java.awt.Dimension(450, 25));
jbtnDbDriverLib.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/fileopen.png"))); // NOI18N
+ java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N
+ jbtnDbDriverLib.setToolTipText(bundle.getString("tiptext.openfolder")); // NOI18N
jbtnDbDriverLib.setMaximumSize(new java.awt.Dimension(64, 32));
jbtnDbDriverLib.setMinimumSize(new java.awt.Dimension(64, 32));
jbtnDbDriverLib.setPreferredSize(new java.awt.Dimension(64, 40));
@@ -217,7 +213,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jButtonTest.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jButtonTest.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/database.png"))); // NOI18N
- java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N
jButtonTest.setText(bundle.getString("Button.Test")); // NOI18N
jButtonTest.setActionCommand(bundle.getString("Button.Test")); // NOI18N
jButtonTest.addActionListener(new java.awt.event.ActionListener() {
@@ -355,28 +350,11 @@ private void jcboDBDriverActionPerformed(java.awt.event.ActionEvent evt) {//GEN-
jtxtDbUser.setText("");
jtxtDbPassword.setText("");
- } else if ("Apache Derby Client/Server".equals(jcboDBDriver.getSelectedItem())) {
- jtxtDbDriverLib.setText(new File(new File(dirname), "lib/derbyclient.jar").getAbsolutePath());
- jtxtDbDriver.setText("org.apache.derby.jdbc.ClientDriver");
- jtxtDbURL.setText("jdbc:derby://localhost:1527/chromispos");
-
- } else if ("HSQLDB".equals(jcboDBDriver.getSelectedItem())) {
- jtxtDbDriverLib.setText(new File(new File(dirname), "lib/hsqldb.jar").getAbsolutePath());
- jtxtDbDriver.setText("org.hsqldb.jdbcDriver");
- jtxtDbURL.setText("jdbc:hsqldb:file:" + new File(new File(System.getProperty("user.home")), AppLocal.APP_ID + "-db").getAbsolutePath() + ";shutdown=true");
- jtxtDbUser.setText("SA");
- jtxtDbPassword.setText("");
-
} else if ("MySQL".equals(jcboDBDriver.getSelectedItem())) {
jtxtDbDriverLib.setText(new File(new File(dirname), "lib/mysql-connector-java-5.1.26-bin.jar").getAbsolutePath());
jtxtDbDriver.setText("com.mysql.jdbc.Driver");
jtxtDbURL.setText("jdbc:mysql://localhost:3306/chromispos");
- } else if ("Oracle 11g Express".equals(jcboDBDriver.getSelectedItem())) {
- jtxtDbDriverLib.setText(new File(new File(dirname), "lib/ojdbc6.jar").getAbsolutePath());
- jtxtDbDriver.setText("oracle.jdbc.driver.OracleDriver");
- jtxtDbURL.setText("jdbc:oracle:thin://localhost:1521/chromispos");
-
} else if ("PostgreSQL".equals(jcboDBDriver.getSelectedItem())) {
jtxtDbDriverLib.setText(new File(new File(dirname), "lib/postgresql-9.2-1003.jdbc4.jar").getAbsolutePath());
jtxtDbDriver.setText("org.postgresql.Driver");
diff --git a/src-pos/uk/chromis/pos/config/JPanelConfigERP.java b/src-pos/uk/chromis/pos/config/JPanelConfigERP.java
index bb7a0ea0..b88b8cb6 100644
--- a/src-pos/uk/chromis/pos/config/JPanelConfigERP.java
+++ b/src-pos/uk/chromis/pos/config/JPanelConfigERP.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/config/JPanelConfigGeneral.form b/src-pos/uk/chromis/pos/config/JPanelConfigGeneral.form
index 7e5dc19f..cc9e6e68 100644
--- a/src-pos/uk/chromis/pos/config/JPanelConfigGeneral.form
+++ b/src-pos/uk/chromis/pos/config/JPanelConfigGeneral.form
@@ -1,6 +1,10 @@
-
-
-
-
@@ -419,6 +419,146 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/config/JPanelConfigGeneral.java b/src-pos/uk/chromis/pos/config/JPanelConfigGeneral.java
index 15086f82..c3b5a0c8 100644
--- a/src-pos/uk/chromis/pos/config/JPanelConfigGeneral.java
+++ b/src-pos/uk/chromis/pos/config/JPanelConfigGeneral.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -20,6 +20,7 @@
import java.awt.Component;
import java.util.Map;
+import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.LookAndFeel;
import javax.swing.SwingUtilities;
@@ -57,8 +58,12 @@ public JPanelConfigGeneral() {
jcboTicketsBag.addActionListener(dirty);
jchkHideInfo.addActionListener(dirty);
jtxtStartupText.getDocument().addDocumentListener(dirty);
-
- jtxtStartupLogo.getDocument().addDocumentListener(dirty);
+ jRed.addActionListener(dirty);
+ jBlue.addActionListener(dirty);
+ jGreen.addActionListener(dirty);
+ jBlack.addActionListener(dirty);
+ jOrange.addActionListener(dirty);
+ jRoyalBlue.addActionListener(dirty);
// Installed skins
LookAndFeelInfo[] lafs = UIManager.getInstalledLookAndFeels();
@@ -83,6 +88,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
});
jcboMachineScreenmode.addItem("window");
+ jcboMachineScreenmode.addItem("windowmaximised");
jcboMachineScreenmode.addItem("fullscreen");
jcboTicketsBag.addItem("simple");
@@ -135,6 +141,7 @@ public void loadProperties() {
jtxtStartupLogo.setText(AppConfig.getInstance().getProperty("start.logo"));
jtxtStartupText.setText(AppConfig.getInstance().getProperty("start.text"));
+ setIconColour();
dirty.setDirty(false);
}
@@ -165,6 +172,37 @@ private String comboValue(Object value) {
return value == null ? "" : value.toString();
}
+ private void setIconColour() {
+ if (AppConfig.getInstance().getProperty("icon.colour") != null) {
+ switch (AppConfig.getInstance().getProperty("icon.colour")) {
+ case "red":
+ jIconColour.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/fixedimages/reduser.png")));
+ jRed.setSelected(true);
+ break;
+ case "blue":
+ jIconColour.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/fixedimages/blueuser.png")));
+ jBlue.setSelected(true);
+ break;
+ case "green":
+ jIconColour.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/fixedimages/greenuser.png")));
+ jGreen.setSelected(true);
+ break;
+ case "orange":
+ jIconColour.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/fixedimages/orangeuser.png")));
+ jOrange.setSelected(true);
+ break;
+ case "black":
+ jIconColour.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/fixedimages/blackuser.png")));
+ jBlack.setSelected(true);
+ break;
+ case "royalblue":
+ jIconColour.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/fixedimages/rblueuser.png")));
+ jRoyalBlue.setSelected(true);
+ break;
+ }
+ }
+ }
+
private void changeLAF() {
final LAFInfo laf = (LAFInfo) jcboLAF.getSelectedItem();
@@ -224,6 +262,7 @@ public String toString() {
// //GEN-BEGIN:initComponents
private void initComponents() {
+ jColourGroup = new javax.swing.ButtonGroup();
jPanel11 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
@@ -242,6 +281,14 @@ private void initComponents() {
jbtnLogoText = new javax.swing.JButton();
jButton1 = new javax.swing.JButton();
jchkHideInfo = new eu.hansolo.custom.SteelCheckBox();
+ jPanel2 = new javax.swing.JPanel();
+ jRed = new javax.swing.JRadioButton();
+ jGreen = new javax.swing.JRadioButton();
+ jBlack = new javax.swing.JRadioButton();
+ jBlue = new javax.swing.JRadioButton();
+ jOrange = new javax.swing.JRadioButton();
+ jRoyalBlue = new javax.swing.JRadioButton();
+ jIconColour = new javax.swing.JLabel();
setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
setPreferredSize(new java.awt.Dimension(650, 450));
@@ -272,11 +319,6 @@ private void initComponents() {
jcboLAF.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
jcboLAF.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
jcboLAF.setPreferredSize(new java.awt.Dimension(200, 30));
- jcboLAF.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- jcboLAFActionPerformed(evt);
- }
- });
jcboMachineScreenmode.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
jcboMachineScreenmode.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
@@ -317,16 +359,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jtxtStartupText.setMaximumSize(new java.awt.Dimension(0, 25));
jtxtStartupText.setMinimumSize(new java.awt.Dimension(0, 0));
jtxtStartupText.setPreferredSize(new java.awt.Dimension(350, 30));
- jtxtStartupText.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- jtxtStartupTextActionPerformed(evt);
- }
- });
- jtxtStartupText.addFocusListener(new java.awt.event.FocusAdapter() {
- public void focusGained(java.awt.event.FocusEvent evt) {
- jtxtStartupTextjTetxtStartupTextFocusGained(evt);
- }
- });
jPanel1.add(jtxtStartupText);
jtxtStartupText.setBounds(110, 60, 350, 30);
@@ -357,12 +389,76 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jchkHideInfo.setText(bundle.getString("label.Infopanel")); // NOI18N
+ jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, bundle.getString("label.iconcolour"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 1, 12), new java.awt.Color(102, 102, 102))); // NOI18N
+ jPanel2.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
+
+ jColourGroup.add(jRed);
+ jRed.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jRed.setText("Red");
+ jRed.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jColourActionPerformed(evt);
+ }
+ });
+ jPanel2.add(jRed, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 20, 60, -1));
+
+ jColourGroup.add(jGreen);
+ jGreen.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jGreen.setText("Green");
+ jGreen.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jColourActionPerformed(evt);
+ }
+ });
+ jPanel2.add(jGreen, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 40, -1, -1));
+
+ jColourGroup.add(jBlack);
+ jBlack.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jBlack.setText("Black");
+ jBlack.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jColourActionPerformed(evt);
+ }
+ });
+ jPanel2.add(jBlack, new org.netbeans.lib.awtextra.AbsoluteConstraints(190, 20, -1, -1));
+
+ jColourGroup.add(jBlue);
+ jBlue.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jBlue.setText("Blue");
+ jBlue.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jColourActionPerformed(evt);
+ }
+ });
+ jPanel2.add(jBlue, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 60, -1, -1));
+
+ jColourGroup.add(jOrange);
+ jOrange.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jOrange.setText("Orange");
+ jOrange.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jColourActionPerformed(evt);
+ }
+ });
+ jPanel2.add(jOrange, new org.netbeans.lib.awtextra.AbsoluteConstraints(190, 40, -1, -1));
+
+ jColourGroup.add(jRoyalBlue);
+ jRoyalBlue.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jRoyalBlue.setText("Royal Blue");
+ jRoyalBlue.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jColourActionPerformed(evt);
+ }
+ });
+ jPanel2.add(jRoyalBlue, new org.netbeans.lib.awtextra.AbsoluteConstraints(190, 60, -1, -1));
+ jPanel2.add(jIconColour, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 20, 70, 60));
+
javax.swing.GroupLayout jPanel11Layout = new javax.swing.GroupLayout(jPanel11);
jPanel11.setLayout(jPanel11Layout);
jPanel11Layout.setHorizontalGroup(
jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel11Layout.createSequentialGroup()
- .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(jPanel11Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -383,10 +479,10 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jchkHideInfo, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(jcboTicketsBag, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
- .addGap(0, 293, Short.MAX_VALUE))
- .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 563, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGap(84, 84, 84))
+ .addComponent(jcboTicketsBag, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))))
+ .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 563, Short.MAX_VALUE)
+ .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addGap(84, 128, Short.MAX_VALUE))
);
jPanel11Layout.setVerticalGroup(
jPanel11Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -411,7 +507,9 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addComponent(jchkHideInfo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addContainerGap(227, Short.MAX_VALUE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 91, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap(130, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
@@ -430,37 +528,60 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
);
}// //GEN-END:initComponents
- private void jcboLAFActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcboLAFActionPerformed
-
- }//GEN-LAST:event_jcboLAFActionPerformed
-
- private void jtxtStartupTextActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jtxtStartupTextActionPerformed
-
- }//GEN-LAST:event_jtxtStartupTextActionPerformed
-
- private void jtxtStartupTextjTetxtStartupTextFocusGained(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_jtxtStartupTextjTetxtStartupTextFocusGained
-
- transferFocus();
-
- JOptionPane.showMessageDialog(jPanel1, "Changing default Startup Text content may violate the "
- + " Free Software Foundation's GNU General Public License GPL", "GNU GPL Warning", JOptionPane.WARNING_MESSAGE);
-
- }//GEN-LAST:event_jtxtStartupTextjTetxtStartupTextFocusGained
-
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
jtxtStartupText.setText("");
}//GEN-LAST:event_jButton1ActionPerformed
+ private void jColourActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jColourActionPerformed
+ // TODO add your handling code here:
+ String colour = evt.getActionCommand();
+ switch (colour) {
+ case "Red":
+ jIconColour.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/fixedimages/reduser.png")));
+ AppConfig.getInstance().setProperty("icon.colour", "red");
+ break;
+ case "Blue":
+ jIconColour.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/fixedimages/blueuser.png")));
+ AppConfig.getInstance().setProperty("icon.colour", "blue");
+ break;
+ case "Green":
+ jIconColour.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/fixedimages/greenuser.png")));
+ AppConfig.getInstance().setProperty("icon.colour", "green");
+ break;
+ case "Orange":
+ jIconColour.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/fixedimages/orangeuser.png")));
+ AppConfig.getInstance().setProperty("icon.colour", "orange");
+ break;
+ case "Black":
+ jIconColour.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/fixedimages/blackuser.png")));
+ AppConfig.getInstance().setProperty("icon.colour", "black");
+ break;
+ case "Royal Blue":
+ jIconColour.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/fixedimages/rblueuser.png")));
+ AppConfig.getInstance().setProperty("icon.colour", "royalblue");
+ break;
+ }
+ }//GEN-LAST:event_jColourActionPerformed
+
// Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JRadioButton jBlack;
+ private javax.swing.JRadioButton jBlue;
private javax.swing.JButton jButton1;
+ private javax.swing.ButtonGroup jColourGroup;
+ private javax.swing.JRadioButton jGreen;
+ private javax.swing.JLabel jIconColour;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel18;
private javax.swing.JLabel jLabel19;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
+ private javax.swing.JRadioButton jOrange;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel11;
+ private javax.swing.JPanel jPanel2;
+ private javax.swing.JRadioButton jRed;
+ private javax.swing.JRadioButton jRoyalBlue;
private javax.swing.JButton jbtnLogoName;
private javax.swing.JButton jbtnLogoText;
private javax.swing.JComboBox jcboLAF;
diff --git a/src-pos/uk/chromis/pos/config/JPanelConfigLocale.form b/src-pos/uk/chromis/pos/config/JPanelConfigLocale.form
index bff3139b..762aa00d 100644
--- a/src-pos/uk/chromis/pos/config/JPanelConfigLocale.form
+++ b/src-pos/uk/chromis/pos/config/JPanelConfigLocale.form
@@ -24,9 +24,9 @@
-
-
-
+
+
+
@@ -54,48 +54,64 @@
-
-
-
-
-
-
-
+
+
-
-
-
-
+
-
-
-
-
+
-
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
+
+
+
-
+
+
+
+
+
-
@@ -131,16 +147,22 @@
+
+
+
+
+
+
@@ -254,6 +276,9 @@
+
+
+
@@ -272,6 +297,9 @@
+
+
+
@@ -290,6 +318,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/config/JPanelConfigLocale.java b/src-pos/uk/chromis/pos/config/JPanelConfigLocale.java
index 5448139e..60f9e09c 100644
--- a/src-pos/uk/chromis/pos/config/JPanelConfigLocale.java
+++ b/src-pos/uk/chromis/pos/config/JPanelConfigLocale.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,34 +16,44 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.pos.config;
import java.awt.Component;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.LocalTime;
+import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
+import java.util.Date;
import java.util.List;
import java.util.Locale;
+import javax.swing.AbstractListModel;
+import javax.swing.ComboBoxModel;
+import uk.chromis.data.gui.ComboBoxValModel;
import uk.chromis.data.user.DirtyManager;
+import uk.chromis.format.Formats;
import uk.chromis.pos.forms.AppConfig;
import uk.chromis.pos.forms.AppLocal;
/**
*
- * @author adrianromero
+ * @author adrianromero
*/
public class JPanelConfigLocale extends javax.swing.JPanel implements PanelConfig {
-
+
private DirtyManager dirty = new DirtyManager();
-
+
private final static String DEFAULT_VALUE = "(Default)";
- /** Creates new form JPanelConfigLocale */
+ /**
+ * Creates new form JPanelConfigLocale
+ */
public JPanelConfigLocale() {
-
+
initComponents();
-
+
jcboLocale.addActionListener(dirty);
jcboInteger.addActionListener(dirty);
jcboDouble.addActionListener(dirty);
@@ -52,42 +62,56 @@ public JPanelConfigLocale() {
jcboDate.addActionListener(dirty);
jcboTime.addActionListener(dirty);
jcboDatetime.addActionListener(dirty);
-
+
List availablelocales = new ArrayList();
availablelocales.addAll(Arrays.asList(Locale.getAvailableLocales())); // Available java locales
addLocale(availablelocales, new Locale("eu", "ES", "")); // Basque
addLocale(availablelocales, new Locale("gl", "ES", "")); // Gallegan
-
+
Collections.sort(availablelocales, new LocaleComparator());
-
- jcboLocale.addItem(new LocaleInfo (null));
+
+ jcboLocale.addItem(new LocaleInfo(null));
for (Locale l : availablelocales) {
jcboLocale.addItem(new LocaleInfo(l));
}
-
+
jcboInteger.addItem(DEFAULT_VALUE);
jcboInteger.addItem("#0");
jcboInteger.addItem("#,##0");
-
+
jcboDouble.addItem(DEFAULT_VALUE);
jcboDouble.addItem("#0.0");
jcboDouble.addItem("#,##0.#");
-
+
jcboCurrency.addItem(DEFAULT_VALUE);
jcboCurrency.addItem("\u00A4 #0.00");
jcboCurrency.addItem("'$' #,##0.00");
-
+
jcboPercent.addItem(DEFAULT_VALUE);
jcboPercent.addItem("#,##0.##%");
-
- jcboDate.addItem(DEFAULT_VALUE);
-
- jcboTime.addItem(DEFAULT_VALUE);
-
- jcboDatetime.addItem(DEFAULT_VALUE);
-
-
-
+
+ String[] dateStrings = {"dd.MM.yy", "dd.MM.yyyy", "MM.dd.yy", "MM.dd.yyyy", "EEE, MMM d, yy", "EEE, MMM d, yyyy",
+ "EEE, MMMM d, yy", "EEE, MMMM d, yyyy", "EEEE, MMMM d, yy", "EEEE, MMMM d, yyyy"};
+ ComboBoxValModel dateListModel;
+
+ dateListModel = new ComboBoxValModel(new ArrayList<>(Arrays.asList(dateStrings)));
+ jcboDate.setModel(dateListModel);
+
+ String[] timeStrings = {"h:mm", "h:mm:ss", "h:mm a", "h:mm:ss a", "H:mm", "H:mm:ss", "H:mm a", "H:mm:ss a"};
+ ComboBoxValModel timeListModel;
+
+ timeListModel = new ComboBoxValModel(new ArrayList<>(Arrays.asList(timeStrings)));
+ jcboTime.setModel(timeListModel);
+
+ String[] timeDateStrings = {"dd.MM.yy, H:mm", "dd.MM.yy, H:mm", "MM.dd.yy, H:mm", "MM.dd.yy, H:mm",
+ "dd.MM.yyyy, H:mm", "dd.MM.yyyy, H:mm", "MM.dd.yyyy, H:mm", "MM.dd.yyyy, H:mm",
+ "EEE, MMMM d yyyy, H:mm", "EEEE, MMMM d yyyy, H:mm"
+ };
+ ComboBoxValModel timeDateListModel;
+
+ timeDateListModel = new ComboBoxValModel(new ArrayList<>(Arrays.asList(timeDateStrings)));
+ jcboDatetime.setModel(timeDateListModel);
+
}
private void addLocale(List ll, Locale l) {
@@ -95,7 +119,32 @@ private void addLocale(List ll, Locale l) {
ll.add(l);
}
}
-
+
+ class MyComboBoxModel extends AbstractListModel implements ComboBoxModel {
+
+ String[] ComputerComps = {"Monitor", "Key Board", "Mouse", "Joy Stick", "Modem", "CD ROM",
+ "RAM Chip", "Diskette"};
+
+ String selection = null;
+
+ public Object getElementAt(int index) {
+ return ComputerComps[index];
+ }
+
+ public int getSize() {
+ return ComputerComps.length;
+ }
+
+ public void setSelectedItem(Object anItem) {
+ selection = (String) anItem; // to select and register an
+ } // item from the pull-down list
+
+ // Methods implemented from the interface ComboBoxModel
+ public Object getSelectedItem() {
+ return selection; // to add the selection to the combo box
+ }
+ }
+
/**
*
* @return
@@ -103,7 +152,7 @@ private void addLocale(List ll, Locale l) {
public boolean hasChanged() {
return dirty.isDirty();
}
-
+
/**
*
* @return
@@ -111,30 +160,30 @@ public boolean hasChanged() {
public Component getConfigComponent() {
return this;
}
-
+
/**
*
* @param config
*/
public void loadProperties() {
-
+
String slang = AppConfig.getInstance().getProperty("user.language");
String scountry = AppConfig.getInstance().getProperty("user.country");
String svariant = AppConfig.getInstance().getProperty("user.variant");
-
- if (slang != null && !slang.equals("") && scountry != null && svariant != null) {
+
+ if (slang != null && !slang.equals("") && scountry != null && svariant != null) {
Locale currentlocale = new Locale(slang, scountry, svariant);
- for (int i = 0 ; i < jcboLocale.getItemCount(); i++) {
+ for (int i = 0; i < jcboLocale.getItemCount(); i++) {
LocaleInfo l = (LocaleInfo) jcboLocale.getItemAt(i);
if (currentlocale.equals(l.getLocale())) {
jcboLocale.setSelectedIndex(i);
break;
}
- }
+ }
} else {
jcboLocale.setSelectedIndex(0);
}
-
+
jcboInteger.setSelectedItem(writeWithDefault(AppConfig.getInstance().getProperty("format.integer")));
jcboDouble.setSelectedItem(writeWithDefault(AppConfig.getInstance().getProperty("format.double")));
jcboCurrency.setSelectedItem(writeWithDefault(AppConfig.getInstance().getProperty("format.currency")));
@@ -142,16 +191,16 @@ public void loadProperties() {
jcboDate.setSelectedItem(writeWithDefault(AppConfig.getInstance().getProperty("format.date")));
jcboTime.setSelectedItem(writeWithDefault(AppConfig.getInstance().getProperty("format.time")));
jcboDatetime.setSelectedItem(writeWithDefault(AppConfig.getInstance().getProperty("format.datetime")));
-
+
dirty.setDirty(false);
}
-
+
/**
*
* @param config
*/
public void saveProperties() {
-
+
Locale l = ((LocaleInfo) jcboLocale.getSelectedItem()).getLocale();
if (l == null) {
AppConfig.getInstance().setProperty("user.language", "");
@@ -162,7 +211,7 @@ public void saveProperties() {
AppConfig.getInstance().setProperty("user.country", l.getCountry());
AppConfig.getInstance().setProperty("user.variant", l.getVariant());
}
-
+
AppConfig.getInstance().setProperty("format.integer", readWithDefault(jcboInteger.getSelectedItem()));
AppConfig.getInstance().setProperty("format.double", readWithDefault(jcboDouble.getSelectedItem()));
AppConfig.getInstance().setProperty("format.currency", readWithDefault(jcboCurrency.getSelectedItem()));
@@ -170,10 +219,10 @@ public void saveProperties() {
AppConfig.getInstance().setProperty("format.date", readWithDefault(jcboDate.getSelectedItem()));
AppConfig.getInstance().setProperty("format.time", readWithDefault(jcboTime.getSelectedItem()));
AppConfig.getInstance().setProperty("format.datetime", readWithDefault(jcboDatetime.getSelectedItem()));
-
+
dirty.setDirty(false);
}
-
+
private String readWithDefault(Object value) {
if (DEFAULT_VALUE.equals(value)) {
return "";
@@ -181,7 +230,7 @@ private String readWithDefault(Object value) {
return value.toString();
}
}
-
+
private Object writeWithDefault(String value) {
if (value == null || value.equals("") || value.equals(DEFAULT_VALUE)) {
return DEFAULT_VALUE;
@@ -189,28 +238,31 @@ private Object writeWithDefault(String value) {
return value.toString();
}
}
-
+
private static class LocaleInfo {
+
private Locale locale;
-
+
public LocaleInfo(Locale locale) {
this.locale = locale;
}
+
public Locale getLocale() {
return locale;
}
+
@Override
public String toString() {
- return locale == null
- ? "(System default)"
+ return locale == null
+ ? "(System default)"
: locale.getDisplayName();
}
}
-
- /** This method is called from within the constructor to
- * initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is
- * always regenerated by the Form Editor.
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
*/
// //GEN-BEGIN:initComponents
private void initComponents() {
@@ -232,6 +284,12 @@ private void initComponents() {
jcboTime = new javax.swing.JComboBox();
jLabel8 = new javax.swing.JLabel();
jcboDatetime = new javax.swing.JComboBox();
+ jtxtDate = new javax.swing.JTextField();
+ jtxtTime = new javax.swing.JTextField();
+ jtxtDateTime = new javax.swing.JTextField();
+ jLabel9 = new javax.swing.JLabel();
+ jLabel10 = new javax.swing.JLabel();
+ jLabel11 = new javax.swing.JLabel();
setMinimumSize(new java.awt.Dimension(0, 0));
setPreferredSize(new java.awt.Dimension(650, 450));
@@ -272,18 +330,62 @@ private void initComponents() {
jcboDate.setEditable(true);
jcboDate.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+ jcboDate.addItemListener(new java.awt.event.ItemListener() {
+ public void itemStateChanged(java.awt.event.ItemEvent evt) {
+ jcboDateItemStateChanged(evt);
+ }
+ });
jLabel7.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel7.setText(AppLocal.getIntString("label.time")); // NOI18N
jcboTime.setEditable(true);
jcboTime.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+ jcboTime.addItemListener(new java.awt.event.ItemListener() {
+ public void itemStateChanged(java.awt.event.ItemEvent evt) {
+ jcboTimeItemStateChanged(evt);
+ }
+ });
jLabel8.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel8.setText(AppLocal.getIntString("label.datetime")); // NOI18N
jcboDatetime.setEditable(true);
jcboDatetime.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+ jcboDatetime.addItemListener(new java.awt.event.ItemListener() {
+ public void itemStateChanged(java.awt.event.ItemEvent evt) {
+ jcboDatetimeItemStateChanged(evt);
+ }
+ });
+
+ jtxtDate.setEditable(false);
+ jtxtDate.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+ jtxtDate.setPreferredSize(new java.awt.Dimension(6, 25));
+
+ jtxtTime.setEditable(false);
+ jtxtTime.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+ jtxtTime.setMinimumSize(new java.awt.Dimension(6, 25));
+ jtxtTime.setPreferredSize(new java.awt.Dimension(6, 25));
+
+ jtxtDateTime.setEditable(false);
+ jtxtDateTime.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+ jtxtDateTime.setMinimumSize(new java.awt.Dimension(6, 25));
+ jtxtDateTime.setPreferredSize(new java.awt.Dimension(59, 25));
+
+ jLabel9.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+ jLabel9.setText("eg");
+ jLabel9.setMinimumSize(new java.awt.Dimension(34, 25));
+ jLabel9.setPreferredSize(new java.awt.Dimension(34, 25));
+
+ jLabel10.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+ jLabel10.setText("eg");
+ jLabel10.setMinimumSize(new java.awt.Dimension(34, 25));
+ jLabel10.setPreferredSize(new java.awt.Dimension(34, 25));
+
+ jLabel11.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+ jLabel11.setText("eg");
+ jLabel11.setMinimumSize(new java.awt.Dimension(34, 25));
+ jLabel11.setPreferredSize(new java.awt.Dimension(34, 25));
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
@@ -293,38 +395,52 @@ private void initComponents() {
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
- .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jcboLocale, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGroup(jPanel1Layout.createSequentialGroup()
- .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jcboInteger, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGroup(jPanel1Layout.createSequentialGroup()
- .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jcboTime, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jcboDouble, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGroup(jPanel1Layout.createSequentialGroup()
- .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jcboCurrency, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(jtxtTime, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createSequentialGroup()
- .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jcboPercent, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jcboLocale, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jcboInteger, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jcboDouble, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jcboCurrency, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jcboPercent, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addGap(0, 0, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jcboDate, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGroup(jPanel1Layout.createSequentialGroup()
- .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jcboDate, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jcboTime, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(jtxtDate, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jcboDatetime, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)))
- .addContainerGap())
+ .addComponent(jcboDatetime, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jLabel11, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jtxtDateTime, javax.swing.GroupLayout.DEFAULT_SIZE, 251, Short.MAX_VALUE))))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -352,15 +468,21 @@ private void initComponents() {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jcboDate, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(jcboDate, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jtxtDate, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jcboTime, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(jcboTime, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jtxtTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jcboDatetime, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(jcboDatetime, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jtxtDateTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel11, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(147, Short.MAX_VALUE))
);
@@ -369,8 +491,8 @@ private void initComponents() {
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
- .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addContainerGap(50, Short.MAX_VALUE))
+ .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 620, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(0, 30, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -380,10 +502,33 @@ private void initComponents() {
.addContainerGap(48, Short.MAX_VALUE))
);
}// //GEN-END:initComponents
-
-
+
+ private void jcboDateItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jcboDateItemStateChanged
+ if (jcboDate.getSelectedItem().toString().equals("")) {
+ Formats.setDatePattern(jcboDate.getSelectedItem().toString());
+ }
+ jtxtDate.setText(Formats.DATE.formatValue(new Date()));
+ }//GEN-LAST:event_jcboDateItemStateChanged
+
+ private void jcboTimeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jcboTimeItemStateChanged
+ if (jcboTime.getSelectedItem().toString().equals("")) {
+ Formats.setTimePattern(jcboTime.getSelectedItem().toString());
+ }
+ jtxtTime.setText(Formats.TIME.formatValue(new Date()));
+ }//GEN-LAST:event_jcboTimeItemStateChanged
+
+ private void jcboDatetimeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jcboDatetimeItemStateChanged
+ if (jcboDatetime.getSelectedItem().toString().equals("")) {
+ Formats.setDateTimePattern(jcboDatetime.getSelectedItem().toString());
+ }
+ jtxtDateTime.setText(Formats.TIMESTAMP.formatValue(new Date()));
+ }//GEN-LAST:event_jcboDatetimeItemStateChanged
+
+
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel jLabel1;
+ private javax.swing.JLabel jLabel10;
+ private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
@@ -391,6 +536,7 @@ private void initComponents() {
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
+ private javax.swing.JLabel jLabel9;
private javax.swing.JPanel jPanel1;
private javax.swing.JComboBox jcboCurrency;
private javax.swing.JComboBox jcboDate;
@@ -400,6 +546,9 @@ private void initComponents() {
private javax.swing.JComboBox jcboLocale;
private javax.swing.JComboBox jcboPercent;
private javax.swing.JComboBox jcboTime;
+ private javax.swing.JTextField jtxtDate;
+ private javax.swing.JTextField jtxtDateTime;
+ private javax.swing.JTextField jtxtTime;
// End of variables declaration//GEN-END:variables
-
+
}
diff --git a/src-pos/uk/chromis/pos/config/JPanelConfigPayment.java b/src-pos/uk/chromis/pos/config/JPanelConfigPayment.java
index 43ad41de..dac1ca83 100644
--- a/src-pos/uk/chromis/pos/config/JPanelConfigPayment.java
+++ b/src-pos/uk/chromis/pos/config/JPanelConfigPayment.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/config/JPanelConfigPeripheral.form b/src-pos/uk/chromis/pos/config/JPanelConfigPeripheral.form
index ca163ff2..7a4df5fe 100644
--- a/src-pos/uk/chromis/pos/config/JPanelConfigPeripheral.form
+++ b/src-pos/uk/chromis/pos/config/JPanelConfigPeripheral.form
@@ -55,7 +55,7 @@
-
+
@@ -113,16 +113,16 @@
-
+
-
+
-
+
@@ -214,7 +214,7 @@
-
+
@@ -526,7 +526,23 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -547,7 +563,7 @@
-
+
@@ -630,7 +646,7 @@
-
+
@@ -712,13 +728,13 @@
-
+
-
+
-
+
@@ -728,9 +744,9 @@
-
+
-
+
@@ -738,7 +754,7 @@
-
+
@@ -764,7 +780,7 @@
-
+
@@ -914,7 +930,7 @@
-
+
@@ -1110,7 +1126,7 @@
-
+
@@ -1304,9 +1320,9 @@
-
+
-
+
@@ -1316,7 +1332,7 @@
-
+
@@ -1352,7 +1368,7 @@
-
+
@@ -1500,9 +1516,9 @@
-
+
-
+
@@ -1512,7 +1528,7 @@
-
+
@@ -1548,7 +1564,7 @@
-
+
@@ -1696,9 +1712,9 @@
-
+
-
+
@@ -1708,7 +1724,7 @@
-
+
@@ -1744,7 +1760,7 @@
-
+
@@ -1888,10 +1904,10 @@
-
+
-
+
@@ -1900,7 +1916,7 @@
-
+
@@ -1908,7 +1924,7 @@
-
+
@@ -1966,10 +1982,10 @@
-
+
-
-
+
+
@@ -1978,7 +1994,7 @@
-
+
@@ -1986,7 +2002,7 @@
-
+
diff --git a/src-pos/uk/chromis/pos/config/JPanelConfigPeripheral.java b/src-pos/uk/chromis/pos/config/JPanelConfigPeripheral.java
index bac2f48a..0f01b6d7 100644
--- a/src-pos/uk/chromis/pos/config/JPanelConfigPeripheral.java
+++ b/src-pos/uk/chromis/pos/config/JPanelConfigPeripheral.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -59,6 +59,7 @@ public JPanelConfigPeripheral() {
jcboConnDisplay.addActionListener(dirty);
jcboSerialDisplay.addActionListener(dirty);
m_jtxtJPOSName.getDocument().addDocumentListener(dirty);
+ jCustomerScreen.addActionListener(dirty);
// Printer 1
jcboMachinePrinter1.addActionListener(dirty);
@@ -152,7 +153,7 @@ public JPanelConfigPeripheral() {
jcboMachinePrinter2.addItem("printer");
jcboMachinePrinter2.addItem("epson");
jcboMachinePrinter2.addItem("tmu220");
- jcboMachinePrinter2.addItem("star");
+ jcboMachinePrinter2.addItem("star");
jcboMachinePrinter2.addItem("ithaca");
jcboMachinePrinter2.addItem("surepos");
jcboMachinePrinter2.addItem("plain");
@@ -233,7 +234,7 @@ public JPanelConfigPeripheral() {
// Display
jcboMachineDisplay.addItem("Not defined");
- jcboMachineDisplay.addItem("screen");
+ jcboMachineDisplay.addItem("dual screen");
jcboMachineDisplay.addItem("window");
jcboMachineDisplay.addItem("javapos");
jcboMachineDisplay.addItem("epson");
@@ -242,6 +243,8 @@ public JPanelConfigPeripheral() {
jcboConnDisplay.addItem("serial");
jcboConnDisplay.addItem("file");
+ jcboConnDisplay.addItem("raw");
+ jcboConnDisplay.addItem("usb");
jcboSerialDisplay.addItem("COM1");
jcboSerialDisplay.addItem("COM2");
@@ -267,6 +270,7 @@ public JPanelConfigPeripheral() {
jcboMachineScale.addItem("Not defined");
jcboMachineScale.addItem("screen");
jcboMachineScale.addItem("casiopd1");
+ jcboMachineScale.addItem("caspdii");
jcboMachineScale.addItem("dialog1");
jcboMachineScale.addItem("samsungesp");
jcboMachineScale.addItem("Adam Equipment");
@@ -347,7 +351,6 @@ public Component getConfigComponent() {
@Override
public void loadProperties() {
-
StringParser p = new StringParser(AppConfig.getInstance().getProperty("machine.printer"));
String sparam = unifySerialInterface(p.nextToken(':'));
@@ -513,17 +516,21 @@ public void loadProperties() {
jcboMachineDisplay.setSelectedItem(sparam);
m_jtxtJPOSName.setText(p.nextToken(','));
break;
+ case "Not defined":
+ jCustomerScreen.setVisible(false);
+ break;
default:
jcboMachineDisplay.setSelectedItem(sparam);
jcboConnDisplay.setSelectedItem(unifySerialInterface(p.nextToken(',')));
jcboSerialDisplay.setSelectedItem(p.nextToken(','));
+ jCustomerScreen.setSelected(AppConfig.getInstance().getBoolean("machine.customerdisplay"));
break;
}
p = new StringParser(AppConfig.getInstance().getProperty("machine.scale"));
sparam = p.nextToken(':');
jcboMachineScale.setSelectedItem(sparam);
- if ("casiopd1".equals(sparam) || "Adam Equipment".equals(sparam) || "dialog1".equals(sparam) || "samsungesp".equals(sparam)) {
+ if ("casiopd1".equals(sparam) || "Adam Equipment".equals(sparam) || "dialog1".equals(sparam) || "samsungesp".equals(sparam) || "caspdii".equals(sparam)) {
jcboSerialScale.setSelectedItem(p.nextToken(','));
}
@@ -673,6 +680,7 @@ public void saveProperties() {
}
String sMachineDisplay = comboValue(jcboMachineDisplay.getSelectedItem());
+ AppConfig.getInstance().setBoolean("machine.customerdisplay", false);
switch (sMachineDisplay) {
case "epson":
case "ld200":
@@ -682,6 +690,12 @@ public void saveProperties() {
case "javapos":
AppConfig.getInstance().setProperty("machine.display", sMachineDisplay + ":" + m_jtxtJPOSName.getText());
break;
+ case "screen":
+ case "window":
+ case "dual screen":
+ AppConfig.getInstance().setProperty("machine.display", sMachineDisplay);
+ AppConfig.getInstance().setBoolean("machine.customerdisplay", jCustomerScreen.isSelected());
+ break;
default:
AppConfig.getInstance().setProperty("machine.display", sMachineDisplay);
break;
@@ -690,7 +704,8 @@ public void saveProperties() {
String sMachineScale = comboValue(jcboMachineScale.getSelectedItem());
if ("casiopd1".equals(sMachineScale) || "Adam Equipment".equals(sMachineScale)
|| "dialog1".equals(sMachineScale)
- || "samsungesp".equals(sMachineScale)) {
+ || "dialog1".equals(sMachineScale)
+ || "caspdii".equals(sMachineScale)) {
AppConfig.getInstance().setProperty("machine.scale", sMachineScale + ":" + comboValue(jcboSerialScale.getSelectedItem()));
} else {
AppConfig.getInstance().setProperty("machine.scale", sMachineScale);
@@ -782,6 +797,7 @@ private void initComponents() {
cboPrinters = new javax.swing.JComboBox();
m_jDisplayParams = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
+ jCustomerScreen = new eu.hansolo.custom.SteelCheckBox();
jPanel1 = new javax.swing.JPanel();
jlblConnDisplay = new javax.swing.JLabel();
jcboConnDisplay = new javax.swing.JComboBox();
@@ -793,9 +809,9 @@ private void initComponents() {
m_jPrinterParams1 = new javax.swing.JPanel();
jPanel5 = new javax.swing.JPanel();
jPanel6 = new javax.swing.JPanel();
- jlblConnPrinter = new javax.swing.JLabel();
+ jlblConnPrinter1 = new javax.swing.JLabel();
jcboConnPrinter1 = new javax.swing.JComboBox();
- jlblPrinterPort = new javax.swing.JLabel();
+ jlblPrinterPort1 = new javax.swing.JLabel();
jcboSerialPrinter1 = new javax.swing.JComboBox();
jPanel4 = new javax.swing.JPanel();
jLabel21 = new javax.swing.JLabel();
@@ -831,7 +847,7 @@ private void initComponents() {
jPanel15 = new javax.swing.JPanel();
jlblConnPrinter4 = new javax.swing.JLabel();
jcboConnPrinter4 = new javax.swing.JComboBox();
- jlblPrinterPort6 = new javax.swing.JLabel();
+ jlblPrinterPort4 = new javax.swing.JLabel();
jcboSerialPrinter4 = new javax.swing.JComboBox();
jPanel18 = new javax.swing.JPanel();
m_jtxtJPOSPrinter4 = new javax.swing.JTextField();
@@ -843,7 +859,7 @@ private void initComponents() {
jPanel21 = new javax.swing.JPanel();
jlblConnPrinter5 = new javax.swing.JLabel();
jcboConnPrinter5 = new javax.swing.JComboBox();
- jlblPrinterPort7 = new javax.swing.JLabel();
+ jlblPrinterPort5 = new javax.swing.JLabel();
jcboSerialPrinter5 = new javax.swing.JComboBox();
jPanel22 = new javax.swing.JPanel();
m_jtxtJPOSPrinter5 = new javax.swing.JTextField();
@@ -855,7 +871,7 @@ private void initComponents() {
jPanel25 = new javax.swing.JPanel();
jlblConnPrinter6 = new javax.swing.JLabel();
jcboConnPrinter6 = new javax.swing.JComboBox();
- jlblPrinterPort8 = new javax.swing.JLabel();
+ jlblPrinterPort6 = new javax.swing.JLabel();
jcboSerialPrinter6 = new javax.swing.JComboBox();
jPanel26 = new javax.swing.JPanel();
m_jtxtJPOSPrinter6 = new javax.swing.JTextField();
@@ -865,12 +881,12 @@ private void initComponents() {
m_jScaleParams = new javax.swing.JPanel();
jPanel16 = new javax.swing.JPanel();
jPanel17 = new javax.swing.JPanel();
- jlblPrinterPort4 = new javax.swing.JLabel();
+ jlblScalePort = new javax.swing.JLabel();
jcboSerialScale = new javax.swing.JComboBox();
m_jScannerParams = new javax.swing.JPanel();
jPanel24 = new javax.swing.JPanel();
jPanel19 = new javax.swing.JPanel();
- jlblPrinterPort5 = new javax.swing.JLabel();
+ jlblScannerPort = new javax.swing.JLabel();
jcboSerialScanner = new javax.swing.JComboBox();
setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
@@ -1005,6 +1021,13 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
m_jDisplayParams.setPreferredSize(new java.awt.Dimension(200, 25));
m_jDisplayParams.setLayout(new java.awt.CardLayout());
+
+ jPanel2.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
+
+ java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N
+ jCustomerScreen.setText(bundle.getString("label.customerscreen")); // NOI18N
+ jPanel2.add(jCustomerScreen, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 0, 250, 30));
+
m_jDisplayParams.add(jPanel2, "empty");
jlblConnDisplay.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
@@ -1035,7 +1058,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addComponent(jlblDisplayPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jcboSerialDisplay, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addContainerGap(54, Short.MAX_VALUE))
+ .addContainerGap(62, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -1071,7 +1094,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addComponent(jLabel20, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(m_jtxtJPOSName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addContainerGap(204, Short.MAX_VALUE))
+ .addContainerGap(212, Short.MAX_VALUE))
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -1090,9 +1113,9 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel5.setPreferredSize(new java.awt.Dimension(10, 25));
m_jPrinterParams1.add(jPanel5, "empty");
- jlblConnPrinter.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
- jlblConnPrinter.setText(AppLocal.getIntString("label.machinedisplayconn")); // NOI18N
- jlblConnPrinter.setPreferredSize(new java.awt.Dimension(50, 25));
+ jlblConnPrinter1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jlblConnPrinter1.setText(AppLocal.getIntString("label.machinedisplayconn")); // NOI18N
+ jlblConnPrinter1.setPreferredSize(new java.awt.Dimension(50, 25));
jcboConnPrinter1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jcboConnPrinter1.setPreferredSize(new java.awt.Dimension(100, 23));
@@ -1102,9 +1125,9 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
}
});
- jlblPrinterPort.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
- jlblPrinterPort.setText(AppLocal.getIntString("label.machineprinterport")); // NOI18N
- jlblPrinterPort.setPreferredSize(new java.awt.Dimension(50, 25));
+ jlblPrinterPort1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jlblPrinterPort1.setText(AppLocal.getIntString("label.machineprinterport")); // NOI18N
+ jlblPrinterPort1.setPreferredSize(new java.awt.Dimension(50, 25));
jcboSerialPrinter1.setEditable(true);
jcboSerialPrinter1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
@@ -1116,13 +1139,13 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel6Layout.createSequentialGroup()
.addContainerGap()
- .addComponent(jlblConnPrinter, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jlblConnPrinter1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jcboConnPrinter1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(jlblPrinterPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jlblPrinterPort1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jcboSerialPrinter1, 0, 146, Short.MAX_VALUE)
+ .addComponent(jcboSerialPrinter1, 0, 158, Short.MAX_VALUE)
.addContainerGap())
);
jPanel6Layout.setVerticalGroup(
@@ -1130,9 +1153,9 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addGroup(jPanel6Layout.createSequentialGroup()
.addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jcboConnPrinter1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jlblPrinterPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jlblPrinterPort1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jcboSerialPrinter1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jlblConnPrinter, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(jlblConnPrinter1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, 0))
);
@@ -1216,7 +1239,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jlblPrinterPort2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jcboSerialPrinter2, 0, 146, Short.MAX_VALUE)
+ .addComponent(jcboSerialPrinter2, 0, 158, Short.MAX_VALUE)
.addContainerGap())
);
jPanel8Layout.setVerticalGroup(
@@ -1310,7 +1333,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jlblPrinterPort3, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jcboSerialPrinter3, 0, 146, Short.MAX_VALUE)
+ .addComponent(jcboSerialPrinter3, 0, 158, Short.MAX_VALUE)
.addContainerGap())
);
jPanel10Layout.setVerticalGroup(
@@ -1384,9 +1407,9 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
}
});
- jlblPrinterPort6.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
- jlblPrinterPort6.setText(AppLocal.getIntString("label.machineprinterport")); // NOI18N
- jlblPrinterPort6.setPreferredSize(new java.awt.Dimension(50, 25));
+ jlblPrinterPort4.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jlblPrinterPort4.setText(AppLocal.getIntString("label.machineprinterport")); // NOI18N
+ jlblPrinterPort4.setPreferredSize(new java.awt.Dimension(50, 25));
jcboSerialPrinter4.setEditable(true);
jcboSerialPrinter4.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
@@ -1402,9 +1425,9 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jcboConnPrinter4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(jlblPrinterPort6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jlblPrinterPort4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jcboSerialPrinter4, 0, 146, Short.MAX_VALUE)
+ .addComponent(jcboSerialPrinter4, 0, 158, Short.MAX_VALUE)
.addContainerGap())
);
jPanel15Layout.setVerticalGroup(
@@ -1412,7 +1435,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addGroup(jPanel15Layout.createSequentialGroup()
.addGroup(jPanel15Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jcboConnPrinter4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jlblPrinterPort6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jlblPrinterPort4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jcboSerialPrinter4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jlblConnPrinter4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, 0))
@@ -1478,9 +1501,9 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
}
});
- jlblPrinterPort7.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
- jlblPrinterPort7.setText(AppLocal.getIntString("label.machineprinterport")); // NOI18N
- jlblPrinterPort7.setPreferredSize(new java.awt.Dimension(50, 25));
+ jlblPrinterPort5.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jlblPrinterPort5.setText(AppLocal.getIntString("label.machineprinterport")); // NOI18N
+ jlblPrinterPort5.setPreferredSize(new java.awt.Dimension(50, 25));
jcboSerialPrinter5.setEditable(true);
jcboSerialPrinter5.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
@@ -1496,9 +1519,9 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jcboConnPrinter5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(jlblPrinterPort7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jlblPrinterPort5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jcboSerialPrinter5, 0, 146, Short.MAX_VALUE)
+ .addComponent(jcboSerialPrinter5, 0, 158, Short.MAX_VALUE)
.addContainerGap())
);
jPanel21Layout.setVerticalGroup(
@@ -1506,7 +1529,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addGroup(jPanel21Layout.createSequentialGroup()
.addGroup(jPanel21Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jcboConnPrinter5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jlblPrinterPort7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jlblPrinterPort5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jcboSerialPrinter5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jlblConnPrinter5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, 0))
@@ -1572,9 +1595,9 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
}
});
- jlblPrinterPort8.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
- jlblPrinterPort8.setText(AppLocal.getIntString("label.machineprinterport")); // NOI18N
- jlblPrinterPort8.setPreferredSize(new java.awt.Dimension(50, 25));
+ jlblPrinterPort6.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jlblPrinterPort6.setText(AppLocal.getIntString("label.machineprinterport")); // NOI18N
+ jlblPrinterPort6.setPreferredSize(new java.awt.Dimension(50, 25));
jcboSerialPrinter6.setEditable(true);
jcboSerialPrinter6.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
@@ -1590,9 +1613,9 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jcboConnPrinter6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(jlblPrinterPort8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jlblPrinterPort6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jcboSerialPrinter6, 0, 146, Short.MAX_VALUE)
+ .addComponent(jcboSerialPrinter6, 0, 158, Short.MAX_VALUE)
.addContainerGap())
);
jPanel25Layout.setVerticalGroup(
@@ -1600,7 +1623,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addGroup(jPanel25Layout.createSequentialGroup()
.addGroup(jPanel25Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jcboConnPrinter6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jlblPrinterPort8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jlblPrinterPort6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jcboSerialPrinter6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jlblConnPrinter6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, 0))
@@ -1654,9 +1677,9 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
m_jScaleParams.setLayout(new java.awt.CardLayout());
m_jScaleParams.add(jPanel16, "empty");
- jlblPrinterPort4.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
- jlblPrinterPort4.setText(AppLocal.getIntString("label.machineprinterport")); // NOI18N
- jlblPrinterPort4.setPreferredSize(new java.awt.Dimension(50, 25));
+ jlblScalePort.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jlblScalePort.setText(AppLocal.getIntString("label.machineprinterport")); // NOI18N
+ jlblScalePort.setPreferredSize(new java.awt.Dimension(50, 25));
jcboSerialScale.setEditable(true);
jcboSerialScale.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
@@ -1668,17 +1691,17 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel17Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel17Layout.createSequentialGroup()
.addContainerGap()
- .addComponent(jlblPrinterPort4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jlblScalePort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jcboSerialScale, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addContainerGap(224, Short.MAX_VALUE))
+ .addContainerGap(232, Short.MAX_VALUE))
);
jPanel17Layout.setVerticalGroup(
jPanel17Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel17Layout.createSequentialGroup()
.addGroup(jPanel17Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jcboSerialScale, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jlblPrinterPort4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(jlblScalePort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, 0))
);
@@ -1688,9 +1711,9 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
m_jScannerParams.setLayout(new java.awt.CardLayout());
m_jScannerParams.add(jPanel24, "empty");
- jlblPrinterPort5.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
- jlblPrinterPort5.setText(AppLocal.getIntString("label.machineprinterport")); // NOI18N
- jlblPrinterPort5.setPreferredSize(new java.awt.Dimension(50, 25));
+ jlblScannerPort.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jlblScannerPort.setText(AppLocal.getIntString("label.machineprinterport")); // NOI18N
+ jlblScannerPort.setPreferredSize(new java.awt.Dimension(50, 25));
jcboSerialScanner.setEditable(true);
jcboSerialScanner.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
@@ -1702,17 +1725,17 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel19Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel19Layout.createSequentialGroup()
.addContainerGap()
- .addComponent(jlblPrinterPort5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jlblScannerPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(jcboSerialScanner, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addContainerGap(234, Short.MAX_VALUE))
+ .addComponent(jcboSerialScanner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap(232, Short.MAX_VALUE))
);
jPanel19Layout.setVerticalGroup(
jPanel19Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel19Layout.createSequentialGroup()
.addGroup(jPanel19Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jcboSerialScanner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jlblPrinterPort5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(jlblScannerPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 0, 0))
);
@@ -1730,7 +1753,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jcboMachinePrinter2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(m_jPrinterParams2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addComponent(m_jPrinterParams2, javax.swing.GroupLayout.DEFAULT_SIZE, 402, Short.MAX_VALUE))
.addGroup(jPanel13Layout.createSequentialGroup()
.addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
@@ -1777,12 +1800,12 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel13Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel13Layout.createSequentialGroup()
.addComponent(jcboMachineDisplay, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(m_jDisplayParams, javax.swing.GroupLayout.DEFAULT_SIZE, 394, Short.MAX_VALUE))
+ .addComponent(m_jDisplayParams, javax.swing.GroupLayout.DEFAULT_SIZE, 402, Short.MAX_VALUE))
.addGroup(jPanel13Layout.createSequentialGroup()
.addComponent(jcboMachinePrinter1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
@@ -1851,7 +1874,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addComponent(jLabel14, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(cboPrinters, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addComponent(m_jScannerParams, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addContainerGap(74, Short.MAX_VALUE))
+ .addContainerGap(174, Short.MAX_VALUE))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
@@ -1863,7 +1886,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
- .addComponent(jPanel13, javax.swing.GroupLayout.DEFAULT_SIZE, 389, Short.MAX_VALUE)
+ .addComponent(jPanel13, javax.swing.GroupLayout.DEFAULT_SIZE, 489, Short.MAX_VALUE)
.addContainerGap())
);
}// //GEN-END:initComponents
@@ -1969,8 +1992,9 @@ private void jcboMachineScannerActionPerformed(java.awt.event.ActionEvent evt) {
private void jcboMachineScaleActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcboMachineScaleActionPerformed
CardLayout cl = (CardLayout) (m_jScaleParams.getLayout());
- if ("casiopd1".equals(jcboMachineScale.getSelectedItem())
+ if ("casiopd1".equals(jcboMachineScale.getSelectedItem())
|| "dialog1".equals(jcboMachineScale.getSelectedItem())
+ || "caspdii".equals(jcboMachineScale.getSelectedItem())
|| "Adam Equipment".equals(jcboMachineScale.getSelectedItem())
|| "samsungesp".equals(jcboMachineScale.getSelectedItem())) {
cl.show(m_jScaleParams, "comm");
@@ -1986,7 +2010,14 @@ private void jcboMachineDisplayActionPerformed(java.awt.event.ActionEvent evt) {
cl.show(m_jDisplayParams, "comm");
} else if ("javapos".equals(jcboMachineDisplay.getSelectedItem())) {
cl.show(m_jDisplayParams, "javapos");
+ } else if ("Not defined".equals(jcboMachineDisplay.getSelectedItem())) {
+ jCustomerScreen.setVisible(false);
+
+ } else if ("dual screen".equals(jcboMachineDisplay.getSelectedItem())) {
+ cl.show(m_jDisplayParams, "empty");
+ jCustomerScreen.setSelected(true);
} else {
+ jCustomerScreen.setVisible(true);
cl.show(m_jDisplayParams, "empty");
}
}//GEN-LAST:event_jcboMachineDisplayActionPerformed
@@ -1995,8 +2026,10 @@ private void jcboMachineDisplayActionPerformed(java.awt.event.ActionEvent evt) {
private void jcboConnPrinter2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcboConnPrinter2ActionPerformed
jcboSerialPrinter2.removeAllItems();
if (("raw".equals(jcboConnPrinter2.getSelectedItem())) || ("usb".equals(jcboConnPrinter2.getSelectedItem()))) {
+ jlblPrinterPort2.setText("Printer");
addRegisteredPrinters(jcboSerialPrinter2);
} else {
+ jlblPrinterPort2.setText("Port");
buildPrinterList(jcboSerialPrinter2);
}
jcboSerialPrinter2.setSelectedItem(null);
@@ -2005,8 +2038,10 @@ private void jcboConnPrinter2ActionPerformed(java.awt.event.ActionEvent evt) {//
private void jcboConnPrinter1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcboConnPrinter1ActionPerformed
jcboSerialPrinter1.removeAllItems();
if (("raw".equals(jcboConnPrinter1.getSelectedItem())) || ("usb".equals(jcboConnPrinter1.getSelectedItem()))) {
+ jlblPrinterPort1.setText("Printer");
addRegisteredPrinters(jcboSerialPrinter1);
} else {
+ jlblPrinterPort1.setText("Port");
buildPrinterList(jcboSerialPrinter1);
}
jcboSerialPrinter1.setSelectedItem(null);
@@ -2015,8 +2050,10 @@ private void jcboConnPrinter1ActionPerformed(java.awt.event.ActionEvent evt) {//
private void jcboConnPrinter3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcboConnPrinter3ActionPerformed
jcboSerialPrinter3.removeAllItems();
if (("raw".equals(jcboConnPrinter3.getSelectedItem())) || ("usb".equals(jcboConnPrinter3.getSelectedItem()))) {
+ jlblPrinterPort3.setText("Printer");
addRegisteredPrinters(jcboSerialPrinter3);
} else {
+ jlblPrinterPort3.setText("Port");
buildPrinterList(jcboSerialPrinter3);
}
jcboSerialPrinter3.setSelectedItem(null);
@@ -2025,28 +2062,33 @@ private void jcboConnPrinter3ActionPerformed(java.awt.event.ActionEvent evt) {//
private void jcboConnPrinter4ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcboConnPrinter4ActionPerformed
jcboSerialPrinter4.removeAllItems();
if (("raw".equals(jcboConnPrinter4.getSelectedItem())) || ("usb".equals(jcboConnPrinter4.getSelectedItem()))) {
+ jlblPrinterPort4.setText("Printer");
addRegisteredPrinters(jcboSerialPrinter4);
} else {
+ jlblPrinterPort4.setText("Port");
buildPrinterList(jcboSerialPrinter4);
+ jcboSerialPrinter4.setSelectedItem(null);
}
- jcboSerialPrinter4.setSelectedItem(null);
}//GEN-LAST:event_jcboConnPrinter4ActionPerformed
private void jcboConnPrinter5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcboConnPrinter5ActionPerformed
jcboSerialPrinter5.removeAllItems();
if (("raw".equals(jcboConnPrinter5.getSelectedItem())) || ("usb".equals(jcboConnPrinter5.getSelectedItem()))) {
+ jlblPrinterPort5.setText("Printer");
addRegisteredPrinters(jcboSerialPrinter5);
} else {
+ jlblPrinterPort5.setText("Port");
buildPrinterList(jcboSerialPrinter5);
}
- jcboSerialPrinter5.setSelectedItem(null);
}//GEN-LAST:event_jcboConnPrinter5ActionPerformed
private void jcboConnPrinter6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcboConnPrinter6ActionPerformed
jcboSerialPrinter6.removeAllItems();
if (("raw".equals(jcboConnPrinter6.getSelectedItem())) || ("usb".equals(jcboConnPrinter6.getSelectedItem()))) {
+ jlblPrinterPort6.setText("Printer");
addRegisteredPrinters(jcboSerialPrinter6);
} else {
+ jlblPrinterPort6.setText("Port");
buildPrinterList(jcboSerialPrinter6);
}
jcboSerialPrinter6.setSelectedItem(null);
@@ -2054,6 +2096,7 @@ private void jcboConnPrinter6ActionPerformed(java.awt.event.ActionEvent evt) {//
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JComboBox cboPrinters;
+ private eu.hansolo.custom.SteelCheckBox jCustomerScreen;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel11;
private javax.swing.JLabel jLabel12;
@@ -2129,21 +2172,21 @@ private void jcboConnPrinter6ActionPerformed(java.awt.event.ActionEvent evt) {//
private javax.swing.JComboBox jcboSerialScale;
private javax.swing.JComboBox jcboSerialScanner;
private javax.swing.JLabel jlblConnDisplay;
- private javax.swing.JLabel jlblConnPrinter;
+ private javax.swing.JLabel jlblConnPrinter1;
private javax.swing.JLabel jlblConnPrinter2;
private javax.swing.JLabel jlblConnPrinter3;
private javax.swing.JLabel jlblConnPrinter4;
private javax.swing.JLabel jlblConnPrinter5;
private javax.swing.JLabel jlblConnPrinter6;
private javax.swing.JLabel jlblDisplayPort;
- private javax.swing.JLabel jlblPrinterPort;
+ private javax.swing.JLabel jlblPrinterPort1;
private javax.swing.JLabel jlblPrinterPort2;
private javax.swing.JLabel jlblPrinterPort3;
private javax.swing.JLabel jlblPrinterPort4;
private javax.swing.JLabel jlblPrinterPort5;
private javax.swing.JLabel jlblPrinterPort6;
- private javax.swing.JLabel jlblPrinterPort7;
- private javax.swing.JLabel jlblPrinterPort8;
+ private javax.swing.JLabel jlblScalePort;
+ private javax.swing.JLabel jlblScannerPort;
private javax.swing.JPanel m_jDisplayParams;
private javax.swing.JPanel m_jPrinterParams1;
private javax.swing.JPanel m_jPrinterParams2;
diff --git a/src-pos/uk/chromis/pos/config/JPanelConfigRestaurant.form b/src-pos/uk/chromis/pos/config/JPanelConfigRestaurant.form
new file mode 100644
index 00000000..5c2fd9ba
--- /dev/null
+++ b/src-pos/uk/chromis/pos/config/JPanelConfigRestaurant.form
@@ -0,0 +1,324 @@
+
+
+
diff --git a/src-pos/uk/chromis/pos/config/JPanelConfigRestaurant.java b/src-pos/uk/chromis/pos/config/JPanelConfigRestaurant.java
new file mode 100644
index 00000000..1770d689
--- /dev/null
+++ b/src-pos/uk/chromis/pos/config/JPanelConfigRestaurant.java
@@ -0,0 +1,255 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016
+// http://www.chromis.co.uk
+//
+// This file is part of Chromis POS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+package uk.chromis.pos.config;
+
+import java.awt.Component;
+import uk.chromis.data.user.DirtyManager;
+import uk.chromis.pos.forms.AppConfig;
+
+/**
+ *
+ *
+ */
+public class JPanelConfigRestaurant extends javax.swing.JPanel implements PanelConfig {
+
+ private DirtyManager dirty = new DirtyManager();
+
+ public JPanelConfigRestaurant() {
+ initComponents();
+
+ jchkShowCustomerDetails.addActionListener(dirty);
+ jchkShowWaiterDetails.addActionListener(dirty);
+ jCustomerColour.addActionListener(dirty);
+ jWaiterColour.addActionListener(dirty);
+ jTableNameColour.addActionListener(dirty);
+ jAutoRefresh.addActionListener(dirty);
+ jTableDesign.addActionListener(dirty);
+ }
+
+ /**
+ *
+ * @return
+ */
+ @Override
+ public boolean hasChanged() {
+ return dirty.isDirty();
+ }
+
+ /**
+ *
+ * @return
+ */
+ @Override
+ public Component getConfigComponent() {
+ return this;
+ }
+
+ /**
+ *
+ * @param config
+ */
+ @Override
+ public void loadProperties() {
+
+ jchkShowCustomerDetails.setSelected(AppConfig.getInstance().getBoolean("table.showcustomerdetails"));
+ jchkShowWaiterDetails.setSelected(AppConfig.getInstance().getBoolean("table.showwaiterdetails"));
+ jTableButtons.setSelected(AppConfig.getInstance().getBoolean("table.transparentbuttons"));
+ jAutoRefresh.setSelected(AppConfig.getInstance().getBoolean("tables.autorefresh"));
+ jTableDesign.setSelected(AppConfig.getInstance().getBoolean("tables.redesign"));
+
+// hide some values until the code has been implmented
+ if (AppConfig.getInstance().getProperty("table.customercolour") == null) {
+ jCustomerColour.setSelectedItem("blue");
+ } else {
+ jCustomerColour.setSelectedItem(AppConfig.getInstance().getProperty("table.customercolour"));
+ }
+ if (AppConfig.getInstance().getProperty("table.waitercolour") == null) {
+ jWaiterColour.setSelectedItem("red");
+ } else {
+ jWaiterColour.setSelectedItem(AppConfig.getInstance().getProperty("table.waitercolour"));
+ }
+ if (AppConfig.getInstance().getProperty("table.tablecolour") == null) {
+ jTableNameColour.setSelectedItem("black");
+ } else {
+ jTableNameColour.setSelectedItem((AppConfig.getInstance().getProperty("table.tablecolour")));
+ }
+
+ dirty.setDirty(false);
+ }
+
+ /**
+ *
+ * @param config
+ */
+ @Override
+ public void saveProperties() {
+
+ AppConfig.getInstance().setBoolean("table.showcustomerdetails", jchkShowCustomerDetails.isSelected());
+ AppConfig.getInstance().setBoolean("table.showwaiterdetails", jchkShowWaiterDetails.isSelected());
+ AppConfig.getInstance().setProperty("table.customercolour", jCustomerColour.getSelectedItem().toString());
+ AppConfig.getInstance().setProperty("table.waitercolour", jWaiterColour.getSelectedItem().toString());
+ AppConfig.getInstance().setProperty("table.tablecolour", jTableNameColour.getSelectedItem().toString());
+ AppConfig.getInstance().setBoolean("table.transparentbuttons", jTableButtons.isSelected());
+ AppConfig.getInstance().setBoolean("tables.autorefresh", jAutoRefresh.isSelected());
+ AppConfig.getInstance().setBoolean("tables.redesign", jTableDesign.isSelected());
+
+ dirty.setDirty(false);
+ }
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
+ */
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ jPanel3 = new javax.swing.JPanel();
+ jLabelCustomerTextColour = new javax.swing.JLabel();
+ jCustomerColour = new javax.swing.JComboBox();
+ jLabelServerTextColour = new javax.swing.JLabel();
+ jWaiterColour = new javax.swing.JComboBox();
+ jLabelTableNameTextColour = new javax.swing.JLabel();
+ jTableNameColour = new javax.swing.JComboBox();
+ jPanel1 = new javax.swing.JPanel();
+ jchkShowCustomerDetails = new eu.hansolo.custom.SteelCheckBox();
+ jchkShowWaiterDetails = new eu.hansolo.custom.SteelCheckBox();
+ jTableButtons = new eu.hansolo.custom.SteelCheckBox();
+ jTableDesign = new eu.hansolo.custom.SteelCheckBox();
+ jAutoRefresh = new eu.hansolo.custom.SteelCheckBox();
+
+ setMinimumSize(new java.awt.Dimension(700, 500));
+ setPreferredSize(new java.awt.Dimension(700, 650));
+
+ java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N
+ jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), bundle.getString("label.tabledisplayoptions"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 1, 12), new java.awt.Color(102, 102, 102))); // NOI18N
+ jPanel3.setLayout(null);
+
+ jLabelCustomerTextColour.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabelCustomerTextColour.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
+ jLabelCustomerTextColour.setText(bundle.getString("label.textcolourcustomer")); // NOI18N
+ jLabelCustomerTextColour.setMaximumSize(new java.awt.Dimension(0, 25));
+ jLabelCustomerTextColour.setMinimumSize(new java.awt.Dimension(0, 0));
+ jLabelCustomerTextColour.setPreferredSize(new java.awt.Dimension(0, 25));
+ jPanel3.add(jLabelCustomerTextColour);
+ jLabelCustomerTextColour.setBounds(240, 20, 130, 25);
+
+ jCustomerColour.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+ jCustomerColour.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "black", "blue", "grey", "green", "orange", "red", "white", "yellow" }));
+ jCustomerColour.setMaximumSize(new java.awt.Dimension(0, 25));
+ jCustomerColour.setMinimumSize(new java.awt.Dimension(0, 0));
+ jCustomerColour.setPreferredSize(new java.awt.Dimension(0, 25));
+ jCustomerColour.setSelectedItem("blue");
+ jPanel3.add(jCustomerColour);
+ jCustomerColour.setBounds(380, 20, 200, 30);
+
+ jLabelServerTextColour.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabelServerTextColour.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
+ jLabelServerTextColour.setText(bundle.getString("label.textcolourwaiter")); // NOI18N
+ jLabelServerTextColour.setMaximumSize(new java.awt.Dimension(0, 25));
+ jLabelServerTextColour.setMinimumSize(new java.awt.Dimension(0, 0));
+ jLabelServerTextColour.setPreferredSize(new java.awt.Dimension(0, 25));
+ jPanel3.add(jLabelServerTextColour);
+ jLabelServerTextColour.setBounds(240, 60, 130, 25);
+
+ jWaiterColour.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+ jWaiterColour.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "black", "blue", "grey", "green", "orange", "red", "white", "yellow" }));
+ jWaiterColour.setMaximumSize(new java.awt.Dimension(0, 25));
+ jWaiterColour.setMinimumSize(new java.awt.Dimension(0, 0));
+ jWaiterColour.setPreferredSize(new java.awt.Dimension(0, 25));
+ jPanel3.add(jWaiterColour);
+ jWaiterColour.setBounds(380, 60, 200, 30);
+
+ jLabelTableNameTextColour.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabelTableNameTextColour.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
+ jLabelTableNameTextColour.setText(bundle.getString("label.textclourtablename")); // NOI18N
+ jLabelTableNameTextColour.setMaximumSize(new java.awt.Dimension(0, 25));
+ jLabelTableNameTextColour.setMinimumSize(new java.awt.Dimension(0, 0));
+ jLabelTableNameTextColour.setPreferredSize(new java.awt.Dimension(0, 25));
+ jPanel3.add(jLabelTableNameTextColour);
+ jLabelTableNameTextColour.setBounds(230, 100, 140, 30);
+
+ jTableNameColour.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+ jTableNameColour.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "black", "blue", "grey", "green", "orange", "red", "white", "yellow" }));
+ jTableNameColour.setMaximumSize(new java.awt.Dimension(0, 25));
+ jTableNameColour.setMinimumSize(new java.awt.Dimension(0, 0));
+ jTableNameColour.setPreferredSize(new java.awt.Dimension(0, 25));
+ jPanel3.add(jTableNameColour);
+ jTableNameColour.setBounds(380, 100, 200, 30);
+
+ jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
+
+ jchkShowCustomerDetails.setText(bundle.getString("label.tableshowcustomerdetails")); // NOI18N
+ jPanel1.add(jchkShowCustomerDetails, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 220, -1));
+
+ jchkShowWaiterDetails.setText(bundle.getString("label.tableshowwaiterdetails")); // NOI18N
+ jPanel1.add(jchkShowWaiterDetails, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 40, 220, -1));
+
+ jTableButtons.setBorder(null);
+ jTableButtons.setText(bundle.getString("label.tablebuttons")); // NOI18N
+ jTableButtons.setUi(null);
+ jPanel1.add(jTableButtons, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 110, 220, -1));
+
+ jPanel3.add(jPanel1);
+ jPanel1.setBounds(10, 20, 220, 140);
+
+ jTableDesign.setText(bundle.getString("label.enabletablepositions")); // NOI18N
+ jPanel3.add(jTableDesign);
+ jTableDesign.setBounds(10, 190, 230, 30);
+
+ jAutoRefresh.setText(bundle.getString("label.autorefresh")); // NOI18N
+ jPanel3.add(jAutoRefresh);
+ jAutoRefresh.setBounds(10, 160, 210, 30);
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ this.setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, 680, Short.MAX_VALUE)
+ .addContainerGap())
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, 302, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap(337, Short.MAX_VALUE))
+ );
+ }// //GEN-END:initComponents
+
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private eu.hansolo.custom.SteelCheckBox jAutoRefresh;
+ private javax.swing.JComboBox jCustomerColour;
+ private javax.swing.JLabel jLabelCustomerTextColour;
+ private javax.swing.JLabel jLabelServerTextColour;
+ private javax.swing.JLabel jLabelTableNameTextColour;
+ private javax.swing.JPanel jPanel1;
+ private javax.swing.JPanel jPanel3;
+ private eu.hansolo.custom.SteelCheckBox jTableButtons;
+ private eu.hansolo.custom.SteelCheckBox jTableDesign;
+ private javax.swing.JComboBox jTableNameColour;
+ private javax.swing.JComboBox jWaiterColour;
+ private eu.hansolo.custom.SteelCheckBox jchkShowCustomerDetails;
+ private eu.hansolo.custom.SteelCheckBox jchkShowWaiterDetails;
+ // End of variables declaration//GEN-END:variables
+
+}
diff --git a/src-pos/uk/chromis/pos/config/JPanelConfigSystem.form b/src-pos/uk/chromis/pos/config/JPanelConfigSystem.form
index a2ecb459..474b9a1b 100644
--- a/src-pos/uk/chromis/pos/config/JPanelConfigSystem.form
+++ b/src-pos/uk/chromis/pos/config/JPanelConfigSystem.form
@@ -26,20 +26,15 @@
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
@@ -48,10 +43,8 @@
-
-
-
-
+
+
@@ -261,263 +254,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -549,7 +285,7 @@
-
+
@@ -564,14 +300,14 @@
-
+
-
+
@@ -716,27 +452,79 @@
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/src-pos/uk/chromis/pos/config/JPanelConfigSystem.java b/src-pos/uk/chromis/pos/config/JPanelConfigSystem.java
index f0e6dfdb..481b5b3a 100644
--- a/src-pos/uk/chromis/pos/config/JPanelConfigSystem.java
+++ b/src-pos/uk/chromis/pos/config/JPanelConfigSystem.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -45,6 +45,7 @@ public JPanelConfigSystem() {
initComponents();
jAutoLogoffTime.setText("100");
+ jMaxChange.setText("50");
jAutoLogoffTime.getDocument().addDocumentListener(dirty);
jAutoLogoffAfterKitchen.addActionListener(dirty);
@@ -55,11 +56,6 @@ public JPanelConfigSystem() {
jAutoLogoffToTables.addActionListener(dirty);
jMarineOpt.addActionListener(dirty);
jchkTextOverlay.addActionListener(dirty);
- jchkShowCustomerDetails.addActionListener(dirty);
- jchkShowWaiterDetails.addActionListener(dirty);
- jCustomerColour.addActionListener(dirty);
- jWaiterColour.addActionListener(dirty);
- jTableNameColour.addActionListener(dirty);
jMoveAMountBoxToTop.addActionListener(dirty);
jCheckPrice00.addActionListener(dirty);
jMoveAMountBoxToTop.addActionListener(dirty);
@@ -69,9 +65,12 @@ public JPanelConfigSystem() {
jChangeSalesScreen.addActionListener(dirty);
jConsolidate.addActionListener(dirty);
jDisableDefaultProduct.addActionListener(dirty);
- jCustomerScreen.addActionListener(dirty);
jTaxIncluded.addActionListener(dirty);
jCategoiesBynumber.addActionListener(dirty);
+ jMaxChange.getDocument().addDocumentListener(dirty);
+ jMaxChangeEnable.addActionListener(dirty);
+ JlongNames.addActionListener(dirty);
+ JCustomSounds.addActionListener(dirty);
}
/**
@@ -105,6 +104,11 @@ public void loadProperties() {
AppConfig.getInstance().setProperty("till.autologofftimerperiod", "100");
}
+ String changeCheck = (AppConfig.getInstance().getProperty("till.changelimit"));
+ if (changeCheck == null) {
+ AppConfig.getInstance().setProperty("till.changelimit", "50");
+ }
+
jEnableAutoLogoff.setSelected(AppConfig.getInstance().getBoolean("till.enableautologoff"));
jInactivityTimer.setSelected(AppConfig.getInstance().getBoolean("till.autologoffinactivitytimer"));
jAutoLogoffTime.setText(AppConfig.getInstance().getProperty("till.autologofftimerperiod"));
@@ -113,39 +117,25 @@ public void loadProperties() {
jAutoLogoffAfterKitchen.setSelected(AppConfig.getInstance().getBoolean("till.autologoffafterkitchen"));
jAutoLogoffAfterPrint.setSelected(AppConfig.getInstance().getBoolean("till.autologoffafterprint"));
jMarineOpt.setSelected(AppConfig.getInstance().getBoolean("till.marineoption"));
- jchkShowCustomerDetails.setSelected(AppConfig.getInstance().getBoolean("table.showcustomerdetails"));
- jchkShowWaiterDetails.setSelected(AppConfig.getInstance().getBoolean("table.showwaiterdetails"));
jchkTextOverlay.setSelected(AppConfig.getInstance().getBoolean("payments.textoverlay"));
jMoveAMountBoxToTop.setSelected(AppConfig.getInstance().getBoolean("till.taxincluded"));
jCheckPrice00.setSelected(AppConfig.getInstance().getBoolean("till.pricewith00"));
jMoveAMountBoxToTop.setSelected(AppConfig.getInstance().getBoolean("till.amountattop"));
jCloseCashbtn.setSelected(AppConfig.getInstance().getBoolean("screen.600800"));
- jTableButtons.setSelected(AppConfig.getInstance().getBoolean("table.transparentbuttons"));
jUpdatedbprice.setSelected(AppConfig.getInstance().getBoolean("db.productupdate"));
jChangeSalesScreen.setSelected(AppConfig.getInstance().getBoolean("sales.newscreen"));
jConsolidate.setSelected(AppConfig.getInstance().getBoolean("display.consolidated"));
jDisableDefaultProduct.setSelected(AppConfig.getInstance().getBoolean("product.hidedefaultproductedit"));
- jCustomerScreen.setSelected(AppConfig.getInstance().getBoolean("machine.customerdisplay"));
jTaxIncluded.setSelected(AppConfig.getInstance().getBoolean("till.taxincluded"));
jCategoiesBynumber.setSelected(AppConfig.getInstance().getBoolean("till.categoriesbynumberorder"));
+ jMaxChange.setText(AppConfig.getInstance().getProperty("till.changelimit"));
+ jMaxChangeEnable.setSelected(AppConfig.getInstance().getBoolean("till.enablechangelimit"));
+ JlongNames.setSelected(AppConfig.getInstance().getBoolean("display.longnames"));
+ JCustomSounds.setSelected(AppConfig.getInstance().getBoolean("till.customsounds"));
-// hide some values until the code has been implmented
- if (AppConfig.getInstance().getProperty("table.customercolour") == null) {
- jCustomerColour.setSelectedItem("blue");
- } else {
- jCustomerColour.setSelectedItem(AppConfig.getInstance().getProperty("table.customercolour"));
- }
- if (AppConfig.getInstance().getProperty("table.waitercolour") == null) {
- jWaiterColour.setSelectedItem("red");
- } else {
- jWaiterColour.setSelectedItem(AppConfig.getInstance().getProperty("table.waitercolour"));
- }
- if (AppConfig.getInstance().getProperty("table.tablecolour") == null) {
- jTableNameColour.setSelectedItem("black");
- } else {
- jTableNameColour.setSelectedItem((AppConfig.getInstance().getProperty("table.tablecolour")));
- }
+ jMaxChangeEnableActionPerformed(null);
+// hide some values until the code has been implmented
jAutoLogoffAfterPrint.setVisible(false);
if (jEnableAutoLogoff.isSelected()) {
jAutoLogoffToTables.setEnabled(true);
@@ -190,25 +180,22 @@ public void saveProperties() {
AppConfig.getInstance().setBoolean("till.autologoffafterkitchen", jAutoLogoffAfterKitchen.isSelected());
AppConfig.getInstance().setBoolean("till.autologoffafterprint", jAutoLogoffAfterPrint.isSelected());
AppConfig.getInstance().setBoolean("till.marineoption", jMarineOpt.isSelected());
- AppConfig.getInstance().setBoolean("table.showcustomerdetails", jchkShowCustomerDetails.isSelected());
- AppConfig.getInstance().setBoolean("table.showwaiterdetails", jchkShowWaiterDetails.isSelected());
AppConfig.getInstance().setBoolean("payments.textoverlay", jchkTextOverlay.isSelected());
- AppConfig.getInstance().setProperty("table.customercolour", jCustomerColour.getSelectedItem().toString());
- AppConfig.getInstance().setProperty("table.waitercolour", jWaiterColour.getSelectedItem().toString());
- AppConfig.getInstance().setProperty("table.tablecolour", jTableNameColour.getSelectedItem().toString());
AppConfig.getInstance().setBoolean("till.taxincluded", jMoveAMountBoxToTop.isSelected());
AppConfig.getInstance().setBoolean("till.pricewith00", jCheckPrice00.isSelected());
AppConfig.getInstance().setBoolean("till.amountattop", jMoveAMountBoxToTop.isSelected());
AppConfig.getInstance().setBoolean("screen.600800", jCloseCashbtn.isSelected());
- AppConfig.getInstance().setBoolean("table.transparentbuttons", jTableButtons.isSelected());
AppConfig.getInstance().setProperty("dbtable.retaindays", jTableRetain.getValue().toString());
AppConfig.getInstance().setBoolean("db.productupdate", jUpdatedbprice.isSelected());
AppConfig.getInstance().setBoolean("sales.newscreen", jChangeSalesScreen.isSelected());
AppConfig.getInstance().setBoolean("display.consolidated", jConsolidate.isSelected());
AppConfig.getInstance().setBoolean("product.hidedefaultproductedit", jDisableDefaultProduct.isSelected());
- AppConfig.getInstance().setBoolean("machine.customerdisplay", jCustomerScreen.isSelected());
AppConfig.getInstance().setBoolean("till.taxincluded", jTaxIncluded.isSelected());
AppConfig.getInstance().setBoolean("till.categoriesbynumberorder", jCategoiesBynumber.isSelected());
+ AppConfig.getInstance().setProperty("till.changelimit", jMaxChange.getText());
+ AppConfig.getInstance().setBoolean("till.enablechangelimit", jMaxChangeEnable.isSelected());
+ AppConfig.getInstance().setBoolean("display.longnames", JlongNames.isSelected());
+ AppConfig.getInstance().setBoolean("till.customsounds", JCustomSounds.isSelected());
dirty.setDirty(false);
}
@@ -234,17 +221,6 @@ private void initComponents() {
jAutoLogoffTime = new javax.swing.JTextField();
jLabelTimedMessage = new javax.swing.JLabel();
jInactivityTimer = new eu.hansolo.custom.SteelCheckBox();
- jPanel3 = new javax.swing.JPanel();
- jLabelCustomerTextColour = new javax.swing.JLabel();
- jCustomerColour = new javax.swing.JComboBox();
- jLabelServerTextColour = new javax.swing.JLabel();
- jWaiterColour = new javax.swing.JComboBox();
- jLabelTableNameTextColour = new javax.swing.JLabel();
- jTableNameColour = new javax.swing.JComboBox();
- jPanel1 = new javax.swing.JPanel();
- jchkShowCustomerDetails = new eu.hansolo.custom.SteelCheckBox();
- jchkShowWaiterDetails = new eu.hansolo.custom.SteelCheckBox();
- jTableButtons = new eu.hansolo.custom.SteelCheckBox();
jPanel4 = new javax.swing.JPanel();
jTableRetain = new javax.swing.JSpinner();
jLabel4 = new javax.swing.JLabel();
@@ -259,8 +235,12 @@ private void initComponents() {
jCheckPrice00 = new eu.hansolo.custom.SteelCheckBox();
jChangeSalesScreen = new eu.hansolo.custom.SteelCheckBox();
jMoveAMountBoxToTop = new eu.hansolo.custom.SteelCheckBox();
- jCustomerScreen = new eu.hansolo.custom.SteelCheckBox();
jCategoiesBynumber = new eu.hansolo.custom.SteelCheckBox();
+ JlongNames = new eu.hansolo.custom.SteelCheckBox();
+ jMaxChangeEnable = new eu.hansolo.custom.SteelCheckBox();
+ jMaxChange = new javax.swing.JTextField();
+ jLabelMaxChange = new javax.swing.JLabel();
+ JCustomSounds = new eu.hansolo.custom.SteelCheckBox();
jLabelInactiveTime = new javax.swing.JLabel();
setMinimumSize(new java.awt.Dimension(700, 500));
@@ -334,82 +314,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel2.add(jPanel9);
jPanel9.setBounds(10, 50, 580, 30);
- jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), bundle.getString("label.tabledisplayoptions"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 1, 12), new java.awt.Color(102, 102, 102))); // NOI18N
- jPanel3.setLayout(null);
-
- jLabelCustomerTextColour.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
- jLabelCustomerTextColour.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
- jLabelCustomerTextColour.setText(bundle.getString("label.textcolourcustomer")); // NOI18N
- jLabelCustomerTextColour.setMaximumSize(new java.awt.Dimension(0, 25));
- jLabelCustomerTextColour.setMinimumSize(new java.awt.Dimension(0, 0));
- jLabelCustomerTextColour.setPreferredSize(new java.awt.Dimension(0, 25));
- jPanel3.add(jLabelCustomerTextColour);
- jLabelCustomerTextColour.setBounds(240, 20, 130, 25);
-
- jCustomerColour.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
- jCustomerColour.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "black", "blue", "grey", "green", "orange", "red", "white", "yellow" }));
- jCustomerColour.setMaximumSize(new java.awt.Dimension(0, 25));
- jCustomerColour.setMinimumSize(new java.awt.Dimension(0, 0));
- jCustomerColour.setPreferredSize(new java.awt.Dimension(0, 25));
- jCustomerColour.setSelectedItem("blue");
- jPanel3.add(jCustomerColour);
- jCustomerColour.setBounds(380, 20, 200, 30);
-
- jLabelServerTextColour.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
- jLabelServerTextColour.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
- jLabelServerTextColour.setText(bundle.getString("label.textcolourwaiter")); // NOI18N
- jLabelServerTextColour.setMaximumSize(new java.awt.Dimension(0, 25));
- jLabelServerTextColour.setMinimumSize(new java.awt.Dimension(0, 0));
- jLabelServerTextColour.setPreferredSize(new java.awt.Dimension(0, 25));
- jPanel3.add(jLabelServerTextColour);
- jLabelServerTextColour.setBounds(240, 60, 130, 25);
-
- jWaiterColour.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
- jWaiterColour.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "black", "blue", "grey", "green", "orange", "red", "white", "yellow" }));
- jWaiterColour.setMaximumSize(new java.awt.Dimension(0, 25));
- jWaiterColour.setMinimumSize(new java.awt.Dimension(0, 0));
- jWaiterColour.setPreferredSize(new java.awt.Dimension(0, 25));
- jPanel3.add(jWaiterColour);
- jWaiterColour.setBounds(380, 60, 200, 30);
-
- jLabelTableNameTextColour.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
- jLabelTableNameTextColour.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
- jLabelTableNameTextColour.setText(bundle.getString("label.textclourtablename")); // NOI18N
- jLabelTableNameTextColour.setMaximumSize(new java.awt.Dimension(0, 25));
- jLabelTableNameTextColour.setMinimumSize(new java.awt.Dimension(0, 0));
- jLabelTableNameTextColour.setPreferredSize(new java.awt.Dimension(0, 25));
- jPanel3.add(jLabelTableNameTextColour);
- jLabelTableNameTextColour.setBounds(230, 100, 140, 30);
-
- jTableNameColour.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
- jTableNameColour.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "black", "blue", "grey", "green", "orange", "red", "white", "yellow" }));
- jTableNameColour.setMaximumSize(new java.awt.Dimension(0, 25));
- jTableNameColour.setMinimumSize(new java.awt.Dimension(0, 0));
- jTableNameColour.setPreferredSize(new java.awt.Dimension(0, 25));
- jPanel3.add(jTableNameColour);
- jTableNameColour.setBounds(380, 100, 200, 30);
-
- jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
-
- jchkShowCustomerDetails.setText(bundle.getString("label.tableshowcustomerdetails")); // NOI18N
- jPanel1.add(jchkShowCustomerDetails, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 220, -1));
-
- jchkShowWaiterDetails.setText(bundle.getString("label.tableshowwaiterdetails")); // NOI18N
- jPanel1.add(jchkShowWaiterDetails, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 40, 220, -1));
-
- jTableButtons.setBorder(null);
- jTableButtons.setText(bundle.getString("label.tablebuttons")); // NOI18N
- jTableButtons.setUi(null);
- jTableButtons.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- jTableButtonsActionPerformed(evt);
- }
- });
- jPanel1.add(jTableButtons, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 110, 220, -1));
-
- jPanel3.add(jPanel1);
- jPanel1.setBounds(10, 20, 220, 140);
-
jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), bundle.getString("label.general"), javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 1, 12), new java.awt.Color(102, 102, 102))); // NOI18N
jPanel4.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
@@ -419,11 +323,11 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) {
jTableRetainStateChanged(evt);
}
});
- jPanel4.add(jTableRetain, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 160, 50, 40));
+ jPanel4.add(jTableRetain, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 270, 50, 40));
jLabel4.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel4.setText(bundle.getString("label.cleardrawertable")); // NOI18N
- jPanel4.add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 170, 370, -1));
+ jPanel4.add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(80, 280, 370, -1));
jPanel5.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
@@ -464,13 +368,31 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) {
jMoveAMountBoxToTop.setText(bundle.getString("label.inputamount")); // NOI18N
jPanel5.add(jMoveAMountBoxToTop, new org.netbeans.lib.awtextra.AbsoluteConstraints(200, 60, 199, -1));
- jCustomerScreen.setText(bundle.getString("label.customerscreen")); // NOI18N
- jPanel5.add(jCustomerScreen, new org.netbeans.lib.awtextra.AbsoluteConstraints(200, 90, 190, -1));
-
jCategoiesBynumber.setText(bundle.getString("label.categoryorder")); // NOI18N
- jPanel5.add(jCategoiesBynumber, new org.netbeans.lib.awtextra.AbsoluteConstraints(410, 90, 170, -1));
+ jPanel5.add(jCategoiesBynumber, new org.netbeans.lib.awtextra.AbsoluteConstraints(200, 90, 170, -1));
- jPanel4.add(jPanel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 20, 580, -1));
+ JlongNames.setText(bundle.getString("label.allowlongnames")); // NOI18N
+ jPanel5.add(JlongNames, new org.netbeans.lib.awtextra.AbsoluteConstraints(410, 90, 250, -1));
+
+ jMaxChangeEnable.setText(bundle.getString("message.enablechange")); // NOI18N
+ jMaxChangeEnable.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jMaxChangeEnableActionPerformed(evt);
+ }
+ });
+ jPanel5.add(jMaxChangeEnable, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 150, 160, -1));
+
+ jMaxChange.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jMaxChange.setText("50.00");
+ jPanel5.add(jMaxChange, new org.netbeans.lib.awtextra.AbsoluteConstraints(200, 150, 60, 30));
+
+ jLabelMaxChange.setText(bundle.getString("label.maxchange")); // NOI18N
+ jPanel5.add(jLabelMaxChange, new org.netbeans.lib.awtextra.AbsoluteConstraints(270, 150, 130, 30));
+
+ JCustomSounds.setText(bundle.getString("label.customerrorsounds")); // NOI18N
+ jPanel5.add(JCustomSounds, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 120, 190, -1));
+
+ jPanel4.add(jPanel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 20, 670, 240));
jLabelInactiveTime.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabelInactiveTime.setText(bundle.getString("label.autolofftime")); // NOI18N
@@ -484,26 +406,21 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) {
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addGap(10, 10, 10)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 600, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, 600, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, 600, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGroup(layout.createSequentialGroup()
.addGap(28, 28, 28)
- .addComponent(jLabelInactiveTime, javax.swing.GroupLayout.PREFERRED_SIZE, 170, javax.swing.GroupLayout.PREFERRED_SIZE)))
- .addContainerGap(90, Short.MAX_VALUE))
+ .addComponent(jLabelInactiveTime, javax.swing.GroupLayout.PREFERRED_SIZE, 170, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(0, 492, Short.MAX_VALUE))
+ .addComponent(jPanel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jPanel4, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, 148, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, 166, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, 212, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(18, 18, 18)
+ .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, 327, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(75, 75, 75)
.addComponent(jLabelInactiveTime, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(69, Short.MAX_VALUE))
);
@@ -531,10 +448,6 @@ private void jEnableAutoLogoffActionPerformed(java.awt.event.ActionEvent evt) {/
}
}//GEN-LAST:event_jEnableAutoLogoffActionPerformed
- private void jTableButtonsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jTableButtonsActionPerformed
- // TODO add your handling code here:
- }//GEN-LAST:event_jTableButtonsActionPerformed
-
private void jInactivityTimerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jInactivityTimerActionPerformed
Integer delay = 100;
try {
@@ -547,6 +460,16 @@ private void jInactivityTimerActionPerformed(java.awt.event.ActionEvent evt) {//
}
}//GEN-LAST:event_jInactivityTimerActionPerformed
+ private void jMaxChangeEnableActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jMaxChangeEnableActionPerformed
+ if (jMaxChangeEnable.isSelected()) {
+ jMaxChange.setVisible(true);
+ jLabelMaxChange.setVisible(true);
+ } else {
+ jMaxChange.setVisible(false);
+ jLabelMaxChange.setVisible(false);
+ }
+ }//GEN-LAST:event_jMaxChangeEnableActionPerformed
+
private void jTableRetainStateChanged(javax.swing.event.ChangeEvent evt) {
// TODO add your handling code here:
retain = "";
@@ -561,6 +484,8 @@ private void jTableRetainStateChanged(javax.swing.event.ChangeEvent evt) {
// Variables declaration - do not modify//GEN-BEGIN:variables
+ private eu.hansolo.custom.SteelCheckBox JCustomSounds;
+ private eu.hansolo.custom.SteelCheckBox JlongNames;
private eu.hansolo.custom.SteelCheckBox jAutoLogoffAfterKitchen;
private eu.hansolo.custom.SteelCheckBox jAutoLogoffAfterPrint;
private javax.swing.JTextField jAutoLogoffTime;
@@ -571,36 +496,27 @@ private void jTableRetainStateChanged(javax.swing.event.ChangeEvent evt) {
private eu.hansolo.custom.SteelCheckBox jCheckPrice00;
private eu.hansolo.custom.SteelCheckBox jCloseCashbtn;
private eu.hansolo.custom.SteelCheckBox jConsolidate;
- private javax.swing.JComboBox jCustomerColour;
- private eu.hansolo.custom.SteelCheckBox jCustomerScreen;
private eu.hansolo.custom.SteelCheckBox jDisableDefaultProduct;
private eu.hansolo.custom.SteelCheckBox jEnableAutoLogoff;
private eu.hansolo.custom.SteelCheckBox jInactivityTimer;
private javax.swing.JLabel jLabel4;
- private javax.swing.JLabel jLabelCustomerTextColour;
private javax.swing.JLabel jLabelInactiveTime;
- private javax.swing.JLabel jLabelServerTextColour;
- private javax.swing.JLabel jLabelTableNameTextColour;
+ private javax.swing.JLabel jLabelMaxChange;
private javax.swing.JLabel jLabelTimedMessage;
private eu.hansolo.custom.SteelCheckBox jMarineOpt;
+ private javax.swing.JTextField jMaxChange;
+ private eu.hansolo.custom.SteelCheckBox jMaxChangeEnable;
private eu.hansolo.custom.SteelCheckBox jMoveAMountBoxToTop;
- private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
- private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JPanel jPanel7;
private javax.swing.JPanel jPanel8;
private javax.swing.JPanel jPanel9;
- private eu.hansolo.custom.SteelCheckBox jTableButtons;
- private javax.swing.JComboBox jTableNameColour;
private javax.swing.JSpinner jTableRetain;
private eu.hansolo.custom.SteelCheckBox jTaxIncluded;
private eu.hansolo.custom.SteelCheckBox jUpdatedbprice;
- private javax.swing.JComboBox jWaiterColour;
- private eu.hansolo.custom.SteelCheckBox jchkShowCustomerDetails;
- private eu.hansolo.custom.SteelCheckBox jchkShowWaiterDetails;
private eu.hansolo.custom.SteelCheckBox jchkTextOverlay;
// End of variables declaration//GEN-END:variables
diff --git a/src-pos/uk/chromis/pos/config/JPanelConfiguration.form b/src-pos/uk/chromis/pos/config/JPanelConfiguration.form
index aa4c833c..addd8fba 100644
--- a/src-pos/uk/chromis/pos/config/JPanelConfiguration.form
+++ b/src-pos/uk/chromis/pos/config/JPanelConfiguration.form
@@ -29,12 +29,12 @@
-
-
-
-
-
+
+
+
+
+
@@ -42,7 +42,10 @@
-
+
+
+
+
@@ -192,6 +195,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -204,9 +226,7 @@
-
-
-
+
@@ -216,7 +236,6 @@
-
@@ -245,28 +264,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -291,5 +288,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/config/JPanelConfiguration.java b/src-pos/uk/chromis/pos/config/JPanelConfiguration.java
index 3cf0ab26..360fd854 100644
--- a/src-pos/uk/chromis/pos/config/JPanelConfiguration.java
+++ b/src-pos/uk/chromis/pos/config/JPanelConfiguration.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -18,7 +18,6 @@
// along with Chromis POS. If not, see .
package uk.chromis.pos.config;
-import java.awt.Dimension;
import uk.chromis.basic.BasicException;
import uk.chromis.data.gui.JMessageDialog;
import uk.chromis.data.gui.MessageInf;
@@ -36,7 +35,6 @@ public class JPanelConfiguration extends JPanel implements JPanelView {
private List m_panelconfig;
-
/**
* Creates new form JPanelConfiguration
*
@@ -64,8 +62,8 @@ public JPanelConfiguration() {
PanelConfig panel;
panel = new JPanelConfigDatabase();
- m_panelconfig.add(panel);
- jPanelDatabase.add(panel.getConfigComponent());
+ m_panelconfig.add(panel);
+ jPanelDatabase.add(panel.getConfigComponent());
panel = new JPanelConfigGeneral();
m_panelconfig.add(panel);
@@ -91,6 +89,10 @@ public JPanelConfiguration() {
m_panelconfig.add(panel);
jPanelTicketSetup.add(panel.getConfigComponent());
+ panel = new JPanelConfigRestaurant();
+ m_panelconfig.add(panel);
+ jPanelRestaurantSetup.add(panel.getConfigComponent());
+
}
private void restoreProperties() {
@@ -189,10 +191,11 @@ private void initComponents() {
jPanelPeripheral = new javax.swing.JPanel();
jPanelSystem = new javax.swing.JPanel();
jPanelTicketSetup = new javax.swing.JPanel();
+ jPanelRestaurantSetup = new javax.swing.JPanel();
jPanel1 = new javax.swing.JPanel();
jbtnRestore = new javax.swing.JButton();
- jbtnExit = new javax.swing.JButton();
jbtnSave = new javax.swing.JButton();
+ jbtnExit = new javax.swing.JButton();
setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
setMinimumSize(new java.awt.Dimension(780, 700));
@@ -236,6 +239,11 @@ private void initComponents() {
jPanelTicketSetup.setLayout(new javax.swing.BoxLayout(jPanelTicketSetup, javax.swing.BoxLayout.LINE_AXIS));
jTabbedPane1.addTab("Ticket Setup", jPanelTicketSetup);
+ jPanelRestaurantSetup.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jPanelRestaurantSetup.setPreferredSize(new java.awt.Dimension(0, 500));
+ jPanelRestaurantSetup.setLayout(new javax.swing.BoxLayout(jPanelRestaurantSetup, javax.swing.BoxLayout.LINE_AXIS));
+ jTabbedPane1.addTab("Restaurant Setup", jPanelRestaurantSetup);
+
jbtnRestore.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jbtnRestore.setText(AppLocal.getIntString("Button.Factory")); // NOI18N
jbtnRestore.setMaximumSize(new java.awt.Dimension(103, 33));
@@ -247,17 +255,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
}
});
- jbtnExit.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
- jbtnExit.setText(AppLocal.getIntString("Button.Exit")); // NOI18N
- jbtnExit.setMaximumSize(new java.awt.Dimension(70, 33));
- jbtnExit.setMinimumSize(new java.awt.Dimension(70, 33));
- jbtnExit.setPreferredSize(new java.awt.Dimension(80, 33));
- jbtnExit.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- jbtnExitActionPerformed(evt);
- }
- });
-
jbtnSave.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jbtnSave.setText(AppLocal.getIntString("Button.Save")); // NOI18N
jbtnSave.setMaximumSize(new java.awt.Dimension(70, 33));
@@ -276,9 +273,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jbtnRestore, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(230, 230, 230)
- .addComponent(jbtnExit, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 250, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jbtnSave, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
@@ -286,27 +281,40 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jbtnRestore, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jbtnExit, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jbtnSave, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE))
);
+ jbtnExit.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jbtnExit.setText(AppLocal.getIntString("Button.Exit")); // NOI18N
+ jbtnExit.setMaximumSize(new java.awt.Dimension(70, 33));
+ jbtnExit.setMinimumSize(new java.awt.Dimension(70, 33));
+ jbtnExit.setPreferredSize(new java.awt.Dimension(80, 33));
+ jbtnExit.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jbtnExitActionPerformed(evt);
+ }
+ });
+
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
- .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- .addContainerGap(37, Short.MAX_VALUE))
+ .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jbtnExit, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 780, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 645, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+ .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jbtnExit, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
}// //GEN-END:initComponents
@@ -338,6 +346,7 @@ private void jbtnExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRS
private javax.swing.JPanel jPanelLocale;
private javax.swing.JPanel jPanelPayment;
private javax.swing.JPanel jPanelPeripheral;
+ private javax.swing.JPanel jPanelRestaurantSetup;
private javax.swing.JPanel jPanelSystem;
private javax.swing.JPanel jPanelTicketSetup;
private javax.swing.JTabbedPane jTabbedPane1;
@@ -347,3 +356,4 @@ private void jbtnExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRS
// End of variables declaration//GEN-END:variables
}
+
diff --git a/src-pos/uk/chromis/pos/config/JPanelTicketSetup.form b/src-pos/uk/chromis/pos/config/JPanelTicketSetup.form
index 7d64cedc..f4b62f28 100644
--- a/src-pos/uk/chromis/pos/config/JPanelTicketSetup.form
+++ b/src-pos/uk/chromis/pos/config/JPanelTicketSetup.form
@@ -23,7 +23,7 @@
-
+
@@ -165,9 +165,6 @@
-
-
-
@@ -235,14 +232,12 @@
-
+
-
-
-
+
@@ -253,22 +248,19 @@
-
-
-
-
+
-
+
-
+
@@ -282,16 +274,18 @@
-
+
-
+
-
+
+
+
@@ -304,72 +298,96 @@
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
diff --git a/src-pos/uk/chromis/pos/config/JPanelTicketSetup.java b/src-pos/uk/chromis/pos/config/JPanelTicketSetup.java
index 0943dcca..06e03d8d 100644
--- a/src-pos/uk/chromis/pos/config/JPanelTicketSetup.java
+++ b/src-pos/uk/chromis/pos/config/JPanelTicketSetup.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -50,6 +50,9 @@ public JPanelTicketSetup() {
jchkSCOnOff.addActionListener(dirty);
jchkSCRestaurant.addActionListener(dirty);
jTextSCRate.getDocument().addDocumentListener(dirty);
+ jLayawayId.addActionListener(dirty);
+ jCreateOnOrderOnly.addActionListener(dirty);
+ jLayawayPopup.addActionListener(dirty);
}
@@ -92,7 +95,7 @@ public void loadProperties() {
jPickupSize.setModel(new SpinnerNumberModel(Integer.parseInt(pickupSize), 1, 20, 1));
}
- jTextReceiptPrefix.setText(AppConfig.getInstance().getProperty("till.receiptprefix"));
+ jTextReceiptPrefix.setText(AppConfig.getInstance().getProperty("till.receiptprefix"));
receipt = "";
x = 1;
while (x < (Integer) jReceiptSize.getValue()) {
@@ -105,24 +108,20 @@ public void loadProperties() {
m_jReceiptPrintOff.setSelected(AppConfig.getInstance().getBoolean("till.receiptprintoff"));
String SCCheck = (AppConfig.getInstance().getProperty("till.SCRate"));
- if (SCCheck == null) {
- AppConfig.getInstance().setProperty("till.SCRate", "0");
+ if (SCCheck == null || SCCheck.equals("")) {
+ AppConfig.getInstance().setProperty("till.SCRate", "10");
+ jTextSCRate.setText("10");
+ } else {
+ jTextSCRate.setText(AppConfig.getInstance().getProperty("till.SCRate").toString());
}
- jTextSCRate.setText(AppConfig.getInstance().getProperty("till.SCRate").toString());
+ // jTextSCRate.setText(AppConfig.getInstance().getProperty("till.SCRate").toString());
+
jchkSCOnOff.setSelected(AppConfig.getInstance().getBoolean("till.SCOnOff"));
jchkSCRestaurant.setSelected(AppConfig.getInstance().getBoolean("till.SCRestaurant"));
-
- if (jchkSCOnOff.isSelected()) {
- jchkSCRestaurant.setVisible(true);
- jLabelSCRate.setVisible(true);
- jTextSCRate.setVisible(true);
- jLabelSCRatePerCent.setVisible(true);
- } else {
- jchkSCRestaurant.setVisible(false);
- jLabelSCRate.setVisible(false);
- jTextSCRate.setVisible(false);
- jLabelSCRatePerCent.setVisible(false);
- }
+ jLayawayId.setSelected(AppConfig.getInstance().getBoolean("till.usepickupforlayaway"));
+ jCreateOnOrderOnly.setSelected(AppConfig.getInstance().getBoolean("till.createorder"));
+ jLayawayPopup.setSelected(AppConfig.getInstance().getBoolean("till.layawaypopup"));
+ jchkSCOnOffActionPerformed(null);
dirty.setDirty(false);
}
@@ -133,15 +132,17 @@ public void loadProperties() {
*/
@Override
public void saveProperties() {
-
AppConfig.getInstance().setProperty("till.receiptprefix", jTextReceiptPrefix.getText());
AppConfig.getInstance().setProperty("till.receiptsize", jReceiptSize.getValue().toString());
AppConfig.getInstance().setProperty("till.pickupsize", jPickupSize.getValue().toString());
AppConfig.getInstance().setBoolean("till.receiptprintoff", m_jReceiptPrintOff.isSelected());
AppConfig.getInstance().setBoolean("till.SCOnOff", jchkSCOnOff.isSelected());
AppConfig.getInstance().setProperty("till.SCRate", jTextSCRate.getText());
- AppConfig.getInstance().setBoolean("till.SCRestaurant",jchkSCRestaurant.isSelected());
-
+ AppConfig.getInstance().setBoolean("till.SCRestaurant", jchkSCRestaurant.isSelected());
+ AppConfig.getInstance().setBoolean("till.usepickupforlayaway", jLayawayId.isSelected());
+ AppConfig.getInstance().setBoolean("till.createorder", jCreateOnOrderOnly.isSelected());
+ AppConfig.getInstance().setBoolean("till.layawaypopup", jLayawayPopup.isSelected());
+
dirty.setDirty(false);
}
@@ -165,12 +166,15 @@ private void initComponents() {
jPanel6 = new javax.swing.JPanel();
m_jReceiptPrintOff = new eu.hansolo.custom.SteelCheckBox();
jPanel5 = new javax.swing.JPanel();
- jchkSCOnOff = new javax.swing.JCheckBox();
- jchkSCRestaurant = new javax.swing.JCheckBox();
jTextSCRate = new javax.swing.JTextField();
jLabelSCRate = new javax.swing.JLabel();
jLabelSCRatePerCent = new javax.swing.JLabel();
- jLabel4 = new javax.swing.JLabel();
+ jchkSCOnOff = new eu.hansolo.custom.SteelCheckBox();
+ jchkSCRestaurant = new eu.hansolo.custom.SteelCheckBox();
+ jPanel2 = new javax.swing.JPanel();
+ jLayawayId = new eu.hansolo.custom.SteelCheckBox();
+ jCreateOnOrderOnly = new eu.hansolo.custom.SteelCheckBox();
+ jLayawayPopup = new eu.hansolo.custom.SteelCheckBox();
jTextField2.setText("jTextField2");
@@ -228,11 +232,6 @@ public void keyReleased(java.awt.event.KeyEvent evt) {
jPickupSize.setFont(new java.awt.Font("Arial", 0, 18)); // NOI18N
jPickupSize.setModel(new javax.swing.SpinnerNumberModel(0, 0, null, 1));
jPickupSize.setToolTipText("");
- jPickupSize.addChangeListener(new javax.swing.event.ChangeListener() {
- public void stateChanged(javax.swing.event.ChangeEvent evt) {
- jPickupSizeStateChanged(evt);
- }
- });
jPanel1.add(jPickupSize);
jPickupSize.setBounds(190, 70, 50, 40);
@@ -252,34 +251,13 @@ public void stateChanged(javax.swing.event.ChangeEvent evt) {
jPanel5.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jPanel5.setLayout(null);
- jchkSCOnOff.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
- jchkSCOnOff.setText(bundle.getString("label.SCOnOff")); // NOI18N
- jchkSCOnOff.setMaximumSize(new java.awt.Dimension(0, 25));
- jchkSCOnOff.setMinimumSize(new java.awt.Dimension(0, 0));
- jchkSCOnOff.setPreferredSize(new java.awt.Dimension(0, 25));
- jchkSCOnOff.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- jchkSCOnOffActionPerformed(evt);
- }
- });
- jPanel5.add(jchkSCOnOff);
- jchkSCOnOff.setBounds(10, 20, 190, 25);
-
- jchkSCRestaurant.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
- jchkSCRestaurant.setText(bundle.getString("label.SCRestaurant")); // NOI18N
- jchkSCRestaurant.setMaximumSize(new java.awt.Dimension(0, 25));
- jchkSCRestaurant.setMinimumSize(new java.awt.Dimension(0, 0));
- jchkSCRestaurant.setPreferredSize(new java.awt.Dimension(0, 25));
- jPanel5.add(jchkSCRestaurant);
- jchkSCRestaurant.setBounds(200, 20, 160, 25);
-
jTextSCRate.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
- jTextSCRate.setText("0");
+ jTextSCRate.setText("10");
jTextSCRate.setMaximumSize(new java.awt.Dimension(0, 25));
jTextSCRate.setMinimumSize(new java.awt.Dimension(0, 0));
jTextSCRate.setPreferredSize(new java.awt.Dimension(0, 25));
jPanel5.add(jTextSCRate);
- jTextSCRate.setBounds(170, 50, 50, 25);
+ jTextSCRate.setBounds(220, 50, 50, 30);
jLabelSCRate.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabelSCRate.setText(bundle.getString("label.SCRate")); // NOI18N
@@ -287,7 +265,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jLabelSCRate.setMinimumSize(new java.awt.Dimension(0, 0));
jLabelSCRate.setPreferredSize(new java.awt.Dimension(0, 25));
jPanel5.add(jLabelSCRate);
- jLabelSCRate.setBounds(10, 50, 150, 25);
+ jLabelSCRate.setBounds(50, 50, 150, 30);
jLabelSCRatePerCent.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabelSCRatePerCent.setText(bundle.getString("label.SCZero")); // NOI18N
@@ -295,17 +273,38 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jLabelSCRatePerCent.setMinimumSize(new java.awt.Dimension(0, 0));
jLabelSCRatePerCent.setPreferredSize(new java.awt.Dimension(0, 25));
jPanel5.add(jLabelSCRatePerCent);
- jLabelSCRatePerCent.setBounds(230, 50, 50, 25);
+ jLabelSCRatePerCent.setBounds(280, 50, 20, 30);
+
+ jchkSCOnOff.setText(bundle.getString("label.SCOnOff")); // NOI18N
+ jchkSCOnOff.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jchkSCOnOffActionPerformed(evt);
+ }
+ });
+ jPanel5.add(jchkSCOnOff);
+ jchkSCOnOff.setBounds(20, 20, 200, 30);
- jLabel4.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
- jLabel4.setForeground(new java.awt.Color(102, 102, 102));
- jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
- jLabel4.setText("Service Charge function in development");
- jPanel5.add(jLabel4);
- jLabel4.setBounds(380, 10, 290, 70);
+ jchkSCRestaurant.setText(bundle.getString("label.SCRestaurant")); // NOI18N
+ jPanel5.add(jchkSCRestaurant);
+ jchkSCRestaurant.setBounds(320, 50, 180, 30);
add(jPanel5);
jPanel5.setBounds(10, 190, 730, 90);
+
+ jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Layaway details", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial", 1, 12), new java.awt.Color(102, 102, 102))); // NOI18N
+ jPanel2.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
+
+ jLayawayId.setText(bundle.getString("label.layaway")); // NOI18N
+ jPanel2.add(jLayawayId, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 20, 300, -1));
+
+ jCreateOnOrderOnly.setText(bundle.getString("label.createonorder")); // NOI18N
+ jPanel2.add(jCreateOnOrderOnly, new org.netbeans.lib.awtextra.AbsoluteConstraints(370, 20, 340, -1));
+
+ jLayawayPopup.setText(bundle.getString("label.layawaypopup")); // NOI18N
+ jPanel2.add(jLayawayPopup, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 50, 260, -1));
+
+ add(jPanel2);
+ jPanel2.setBounds(10, 290, 730, 110);
}// //GEN-END:initComponents
private void jTextReceiptPrefixKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_jTextReceiptPrefixKeyReleased
@@ -326,11 +325,8 @@ private void jReceiptSizeStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-
}//GEN-LAST:event_jReceiptSizeStateChanged
- private void jPickupSizeStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jPickupSizeStateChanged
-
- }//GEN-LAST:event_jPickupSizeStateChanged
-
private void jchkSCOnOffActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jchkSCOnOffActionPerformed
+
if (jchkSCOnOff.isSelected()) {
jchkSCRestaurant.setVisible(true);
jLabelSCRate.setVisible(true);
@@ -342,17 +338,21 @@ private void jchkSCOnOffActionPerformed(java.awt.event.ActionEvent evt) {//GEN-F
jTextSCRate.setVisible(false);
jLabelSCRatePerCent.setVisible(false);
}
+
}//GEN-LAST:event_jchkSCOnOffActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
+ private eu.hansolo.custom.SteelCheckBox jCreateOnOrderOnly;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
- private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabelSCRate;
private javax.swing.JLabel jLabelSCRatePerCent;
+ private eu.hansolo.custom.SteelCheckBox jLayawayId;
+ private eu.hansolo.custom.SteelCheckBox jLayawayPopup;
private javax.swing.JPanel jPanel1;
+ private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel5;
private javax.swing.JPanel jPanel6;
private javax.swing.JSpinner jPickupSize;
@@ -361,8 +361,8 @@ private void jchkSCOnOffActionPerformed(java.awt.event.ActionEvent evt) {//GEN-F
private javax.swing.JTextField jTextReceiptPrefix;
private javax.swing.JTextField jTextSCRate;
private javax.swing.JTextField jTicketExample;
- private javax.swing.JCheckBox jchkSCOnOff;
- private javax.swing.JCheckBox jchkSCRestaurant;
+ private eu.hansolo.custom.SteelCheckBox jchkSCOnOff;
+ private eu.hansolo.custom.SteelCheckBox jchkSCRestaurant;
private eu.hansolo.custom.SteelCheckBox m_jReceiptPrintOff;
// End of variables declaration//GEN-END:variables
diff --git a/src-pos/uk/chromis/pos/config/LocaleComparator.java b/src-pos/uk/chromis/pos/config/LocaleComparator.java
index 0089dc3a..0b9a072a 100644
--- a/src-pos/uk/chromis/pos/config/LocaleComparator.java
+++ b/src-pos/uk/chromis/pos/config/LocaleComparator.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/config/PanelConfig.java b/src-pos/uk/chromis/pos/config/PanelConfig.java
index 828198ca..f2c0e308 100644
--- a/src-pos/uk/chromis/pos/config/PanelConfig.java
+++ b/src-pos/uk/chromis/pos/config/PanelConfig.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/customers/CustomerInfo.java b/src-pos/uk/chromis/pos/customers/CustomerInfo.java
index 38394c33..e6df3806 100644
--- a/src-pos/uk/chromis/pos/customers/CustomerInfo.java
+++ b/src-pos/uk/chromis/pos/customers/CustomerInfo.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -22,45 +22,16 @@
import java.io.Serializable;
import uk.chromis.pos.util.StringUtils;
-/** @author adrianromero */
public class CustomerInfo implements Serializable {
private static final long serialVersionUID = 9083257536541L;
-
- /**
- * Customer unique ID
- */
protected String id;
-
- /**
- * Customer searchkey
- */
protected String searchkey;
-
- /**
- * Customer tax ID
- */
protected String taxid;
-
- /**
- *Customer Account Name
- */
protected String name;
-
- /**
- * Customer post/zip code
- */
protected String postal;
-
- /**
- * Customer Primary telephone
- */
protected String phone;
-
- /**
- * Customer Email
- */
protected String email;
/** Creates a new instance of UserInfoBasic
@@ -75,122 +46,62 @@ public CustomerInfo(String id) {
this.email = null;
}
- /**
- *
- * @return id string
- */
public String getId() {
return id;
}
- /**
- *
- * @return taxid string
- */
public String getTaxid() {
return taxid;
}
- /**
- *
- * @param taxid
- */
public void setTaxid(String taxid) {
this.taxid = taxid;
}
- /**
- *
- * @return searchkey string
- */
public String getSearchkey() {
return searchkey;
}
- /**
- *
- * @param searchkey
- */
public void setSearchkey(String searchkey) {
this.searchkey = searchkey;
}
- /**
- *
- * @return name string
- */
public String getName() {
return name;
}
- /**
- *
- * @param name
- */
public void setName(String name) {
this.name = name;
}
- /**
- *
- * @return postal/zip code string
- */
public String getPostal() {
return postal;
}
- /**
- *
- * @param postal
- */
public void setPostal(String postal) {
this.postal = postal;
}
- /**
- *
- * @return Primary Telephone string
- */
public String getPhone() {
return phone;
}
- /**
- *
- * @param phone
- */
public void setPhone(String phone) {
this.phone = phone;
}
- /**
- *
- * @return email string
- */
public String getEmail() {
return email;
}
- /**
- *
- * @param email
- */
public void setEmail(String email) {
this.email = email;
}
- /**
- *
- * @return
- */
public String printTaxid() {
return StringUtils.encodeXML(taxid);
}
- /**
- *
- * @return
- */
public String printName() {
return StringUtils.encodeXML(name);
}
diff --git a/src-pos/uk/chromis/pos/customers/CustomerInfoExt.java b/src-pos/uk/chromis/pos/customers/CustomerInfoExt.java
index b6317ab5..7c4f8669 100644
--- a/src-pos/uk/chromis/pos/customers/CustomerInfoExt.java
+++ b/src-pos/uk/chromis/pos/customers/CustomerInfoExt.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,20 +16,14 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.pos.customers;
import java.util.Date;
import uk.chromis.format.Formats;
import uk.chromis.pos.util.RoundUtils;
-/**
- *
- * @author adrianromero
- *
- */
public class CustomerInfoExt extends CustomerInfo {
-
+
protected String taxcustomerid;
protected String notes;
protected boolean visible;
@@ -50,9 +44,14 @@ public class CustomerInfoExt extends CustomerInfo {
protected String region;
protected String country;
protected String image;
-
- /** Creates a new instance of UserInfoBasic
- * @param id */
+ protected Date dob;
+ protected Double discount;
+
+ /**
+ * Creates a new instance of UserInfoBasic
+ *
+ * @param id
+ */
public CustomerInfoExt(String id) {
super(id);
}
@@ -64,68 +63,77 @@ public CustomerInfoExt(String id) {
public String getTaxCustCategoryID() {
return taxcustomerid;
}
+
public void setTaxCustomerID(String taxcustomerid) {
this.taxcustomerid = taxcustomerid;
}
-
- /**
- *
- * @return notes string
- */
+
public String getNotes() {
return notes;
}
+
public void setNotes(String notes) {
this.notes = notes;
}
- /**
- *
- * @return Is visible Y/N? boolean
- */
public boolean isVisible() {
return visible;
}
+
public void setVisible(boolean visible) {
this.visible = visible;
}
- /**
- *
- * @return customer's hashed member/loyalty card string
- */
public String getCard() {
return card;
}
+
public void setCard(String card) {
this.card = card;
}
- /**
- *
- * @return customer's maximum allowed debt value
- */
public Double getMaxdebt() {
return maxdebt;
}
+
public void setMaxdebt(Double maxdebt) {
this.maxdebt = maxdebt;
}
- public String printMaxDebt() {
+
+ public String printMaxDebt() {
return Formats.CURRENCY.formatValue(RoundUtils.getValue(getMaxdebt()));
}
-
- /**
- *
- * @return customer's last ticket transaction date
- */
+
+ public Date getDoB() {
+ return dob;
+ }
+
+ public void setDoB(Date dob) {
+ this.dob = dob;
+ }
+
+
+ public Double getDiscount() {
+ return discount;
+ }
+
+ public void setDiscount(Double discount) {
+ this.discount = discount;
+ }
+
+ public String printDiscount() {
+ return Formats.PERCENT.formatValue(RoundUtils.getValue(getDiscount()));
+ }
+
public Date getCurdate() {
return curdate;
}
+
public void setCurdate(Date curdate) {
this.curdate = curdate;
}
- public String printCurDate() {
+
+ public String printCurDate() {
return Formats.DATE.formatValue(getCurdate());
}
@@ -136,24 +144,25 @@ public String printCurDate() {
public Double getCurdebt() {
return curdebt;
}
+
public void setCurdebt(Double curdebt) {
this.curdebt = curdebt;
}
- public String printCurDebt() {
+
+ public String printCurDebt() {
return Formats.CURRENCY.formatValue(RoundUtils.getValue(getCurdebt()));
}
-
/**
*
* @param amount
* @param d
*/
public void updateCurDebt(Double amount, Date d) {
-
+
curdebt = curdebt == null ? amount : curdebt + amount;
- curdate = (new Date());
-
+ curdate = (new Date());
+
if (RoundUtils.compare(curdebt, 0.0) > 0) {
if (curdate == null) {
// new date
@@ -165,221 +174,116 @@ public void updateCurDebt(Double amount, Date d) {
} else { // < 0
curdate = null;
}
-
}
- /**
- *
- * @return customer's firstname string
- */
public String getFirstname() {
return firstname;
}
- /**
- *
- * @param firstname
- */
public void setFirstname(String firstname) {
this.firstname = firstname;
}
- /**
- *
- * @return customer's lastname string
- */
public String getLastname() {
return lastname;
}
- /**
- *
- * @param lastname
- */
public void setLastname(String lastname) {
this.lastname = lastname;
}
- /**
- *
- * @return customer's email string
- */
@Override
public String getEmail() {
return email;
}
- /**
- *
- * @param email
- */
@Override
public void setEmail(String email) {
this.email = email;
}
- /**
- *
- * @return customer's Primary telephone string
- */
@Override
public String getPhone() {
return phone;
}
- /**
- *
- * @param phone
- */
@Override
public void setPhone(String phone) {
this.phone = phone;
}
- /**
- *
- * @return customer's Secondary telephone string
- */
public String getPhone2() {
return phone2;
}
- /**
- *
- * @param phone2
- */
public void setPhone2(String phone2) {
this.phone2 = phone2;
}
- /**
- *
- * @return customer's fax number string
- */
public String getFax() {
return fax;
}
- /**
- *
- * @param fax
- */
public void setFax(String fax) {
this.fax = fax;
}
- /**
- *
- * @return customer's address line 1 string
- */
public String getAddress() {
return address;
}
- /**
- *
- * @param address
- */
public void setAddress(String address) {
this.address = address;
}
- /**
- *
- * @return customer's address line 2 string
- */
public String getAddress2() {
return address2;
}
- /**
- *
- * @param address2
- */
public void setAddress2(String address2) {
this.address2 = address2;
}
- /**
- *
- * @return customer's postal/zip code string
- */
@Override
public String getPostal() {
return postal;
}
- /**
- *
- * @param postal
- */
@Override
public void setPostal(String postal) {
this.postal = postal;
}
- /**
- *
- * @return customer's address city string
- */
public String getCity() {
return city;
}
- /**
- *
- * @param city
- */
public void setCity(String city) {
this.city = city;
}
- /**
- *
- * @return customer's address region/state/county string
- */
public String getRegion() {
return region;
}
- /**
- *
- * @param region
- */
public void setRegion(String region) {
this.region = region;
}
- /**
- *
- * @return customer's address country string
- */
public String getCountry() {
return country;
}
- /**
- *
- * @param country
- */
public void setCountry(String country) {
this.country = country;
}
- /**
- *
- * @return customer's photograph / image
- */
public String getImage() {
return image;
}
- /**
- *
- * @param image
- */
public void setImage(String image) {
this.image = image;
}
-
+
}
diff --git a/src-pos/uk/chromis/pos/customers/CustomerInfoGlobal.java b/src-pos/uk/chromis/pos/customers/CustomerInfoGlobal.java
index e3e0b155..513b0b59 100644
--- a/src-pos/uk/chromis/pos/customers/CustomerInfoGlobal.java
+++ b/src-pos/uk/chromis/pos/customers/CustomerInfoGlobal.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/customers/CustomerRenderer.java b/src-pos/uk/chromis/pos/customers/CustomerRenderer.java
index 44d2789d..95332e0f 100644
--- a/src-pos/uk/chromis/pos/customers/CustomerRenderer.java
+++ b/src-pos/uk/chromis/pos/customers/CustomerRenderer.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/customers/CustomerTransaction.java b/src-pos/uk/chromis/pos/customers/CustomerTransaction.java
index 4b4e8a0d..e66ad7dd 100644
--- a/src-pos/uk/chromis/pos/customers/CustomerTransaction.java
+++ b/src-pos/uk/chromis/pos/customers/CustomerTransaction.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/customers/CustomersPanel.java b/src-pos/uk/chromis/pos/customers/CustomersPanel.java
index 2b2ce13f..65fb624f 100644
--- a/src-pos/uk/chromis/pos/customers/CustomersPanel.java
+++ b/src-pos/uk/chromis/pos/customers/CustomersPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,7 +16,7 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
+//
package uk.chromis.pos.customers;
import javax.swing.ListCellRenderer;
@@ -29,6 +29,7 @@
import uk.chromis.data.user.ListProvider;
import uk.chromis.data.user.ListProviderCreator;
import uk.chromis.data.user.SaveProvider;
+import uk.chromis.pos.forms.AppConfig;
import uk.chromis.pos.forms.AppLocal;
import uk.chromis.pos.panels.JPanelTable;
@@ -37,37 +38,42 @@
* @author adrianromero
*/
public class CustomersPanel extends JPanelTable {
-
+
private TableDefinition tcustomers;
private CustomersView jeditor;
-
- /** Creates a new instance of CustomersPanel */
- public CustomersPanel() {
+
+ /**
+ * Creates a new instance of CustomersPanel
+ */
+ public CustomersPanel() {
CustomerInfoGlobal.getInstance().setEditableData(bd);
}
-
+
/**
*
*/
@Override
- protected void init() {
- DataLogicCustomers dlCustomers = (DataLogicCustomers) app.getBean("uk.chromis.pos.customers.DataLogicCustomers");
+ protected void init() {
+ DataLogicCustomers dlCustomers = (DataLogicCustomers) app.getBean("uk.chromis.pos.customers.DataLogicCustomers");
tcustomers = dlCustomers.getTableCustomers();
- jeditor = new CustomersView(app, dirty);
- AppLocal.LIST_BY_RIGHTS="";
-
+ jeditor = new CustomersView(app, dirty);
+ AppLocal.LIST_BY_RIGHTS = "";
+
+ if (AppConfig.getInstance().getBoolean("display.longnames")) {
+ setListWidth(300);
+ }
}
-
+
/**
*
* @throws BasicException
*/
@Override
- public void activate() throws BasicException {
- jeditor.activate();
+ public void activate() throws BasicException {
+ jeditor.activate();
super.activate();
}
-
+
/**
*
* @return
@@ -76,16 +82,16 @@ public void activate() throws BasicException {
public ListProvider getListProvider() {
return new ListProviderCreator(tcustomers);
}
-
+
/**
*
* @return
*/
@Override
public SaveProvider getSaveProvider() {
- return new SaveProvider(tcustomers, new int[] {0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23});
+ return new SaveProvider(tcustomers, new int[]{0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25});
}
-
+
/**
*
* @return
@@ -94,16 +100,16 @@ public SaveProvider getSaveProvider() {
public Vectorer getVectorer() {
return tcustomers.getVectorerBasic(new int[]{1, 2, 3, 4});
}
-
+
/**
*
* @return
*/
@Override
public ComparatorCreator getComparatorCreator() {
- return tcustomers.getComparatorCreator(new int[] {1, 2, 3, 4});
+ return tcustomers.getComparatorCreator(new int[]{1, 2, 3, 4});
}
-
+
/**
*
* @return
@@ -112,7 +118,7 @@ public ComparatorCreator getComparatorCreator() {
public ListCellRenderer getListCellRenderer() {
return new ListCellRendererBasic(tcustomers.getRenderStringBasic(new int[]{3}));
}
-
+
/**
*
* @return
@@ -129,5 +135,5 @@ public EditorRecord getEditor() {
@Override
public String getTitle() {
return AppLocal.getIntString("Menu.CustomersManagement");
- }
+ }
}
diff --git a/src-pos/uk/chromis/pos/customers/CustomersPanelNoTrans.java b/src-pos/uk/chromis/pos/customers/CustomersPanelNoTrans.java
new file mode 100644
index 00000000..e167064c
--- /dev/null
+++ b/src-pos/uk/chromis/pos/customers/CustomersPanelNoTrans.java
@@ -0,0 +1,132 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016
+// http://www.chromis.co.uk
+//
+// This file is part of Chromis POS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+package uk.chromis.pos.customers;
+
+import javax.swing.ListCellRenderer;
+import uk.chromis.basic.BasicException;
+import uk.chromis.data.gui.ListCellRendererBasic;
+import uk.chromis.data.loader.ComparatorCreator;
+import uk.chromis.data.loader.TableDefinition;
+import uk.chromis.data.loader.Vectorer;
+import uk.chromis.data.user.EditorRecord;
+import uk.chromis.data.user.ListProvider;
+import uk.chromis.data.user.ListProviderCreator;
+import uk.chromis.data.user.SaveProvider;
+import uk.chromis.pos.forms.AppLocal;
+import uk.chromis.pos.panels.JPanelTable;
+
+/**
+ *
+ * @author adrianromero
+ */
+public class CustomersPanelNoTrans extends JPanelTable {
+
+ private TableDefinition tcustomers;
+ private CustomersViewNoTrans jeditor;
+
+ /** Creates a new instance of CustomersPanel */
+ public CustomersPanelNoTrans() {
+ CustomerInfoGlobal.getInstance().setEditableData(bd);
+ }
+
+ /**
+ *
+ */
+ @Override
+ protected void init() {
+ DataLogicCustomers dlCustomers = (DataLogicCustomers) app.getBean("uk.chromis.pos.customers.DataLogicCustomers");
+ tcustomers = dlCustomers.getTableCustomers();
+ jeditor = new CustomersViewNoTrans(app, dirty);
+ AppLocal.LIST_BY_RIGHTS="";
+ }
+
+ /**
+ *
+ * @throws BasicException
+ */
+ @Override
+ public void activate() throws BasicException {
+ jeditor.activate();
+ super.activate();
+ }
+
+ /**
+ *
+ * @return
+ */
+ @Override
+ public ListProvider getListProvider() {
+ return new ListProviderCreator(tcustomers);
+ }
+
+ /**
+ *
+ * @return
+ */
+ @Override
+ public SaveProvider getSaveProvider() {
+ return new SaveProvider(tcustomers, new int[] {0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25});
+ }
+
+ /**
+ *
+ * @return
+ */
+ @Override
+ public Vectorer getVectorer() {
+ return tcustomers.getVectorerBasic(new int[]{1, 2, 3, 4});
+ }
+
+ /**
+ *
+ * @return
+ */
+ @Override
+ public ComparatorCreator getComparatorCreator() {
+ return tcustomers.getComparatorCreator(new int[] {1, 2, 3, 4});
+ }
+
+ /**
+ *
+ * @return
+ */
+ @Override
+ public ListCellRenderer getListCellRenderer() {
+ return new ListCellRendererBasic(tcustomers.getRenderStringBasic(new int[]{3}));
+ }
+
+ /**
+ *
+ * @return
+ */
+ @Override
+ public EditorRecord getEditor() {
+ return jeditor;
+ }
+
+ /**
+ *
+ * @return
+ */
+ @Override
+ public String getTitle() {
+ return AppLocal.getIntString("Menu.CustomersManagement");
+ }
+}
diff --git a/src-pos/uk/chromis/pos/customers/CustomersPayment.form b/src-pos/uk/chromis/pos/customers/CustomersPayment.form
index fa8cf8e6..33756715 100644
--- a/src-pos/uk/chromis/pos/customers/CustomersPayment.form
+++ b/src-pos/uk/chromis/pos/customers/CustomersPayment.form
@@ -39,7 +39,9 @@
-
+
+
+
@@ -56,7 +58,9 @@
-
+
+
+
@@ -81,7 +85,9 @@
-
+
+
+
@@ -224,6 +230,11 @@
+
+
+
+
+
@@ -258,6 +269,11 @@
+
+
+
+
+
@@ -267,7 +283,7 @@
-
+
@@ -414,6 +430,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/customers/CustomersPayment.java b/src-pos/uk/chromis/pos/customers/CustomersPayment.java
index 6d285df4..c92f5e7a 100644
--- a/src-pos/uk/chromis/pos/customers/CustomersPayment.java
+++ b/src-pos/uk/chromis/pos/customers/CustomersPayment.java
@@ -163,6 +163,7 @@ private void editCustomer(CustomerInfoExt customer) {
txtMaxdebt.setText(Formats.CURRENCY.formatValue(customer.getMaxdebt()));
txtCurdebt.setText(Formats.CURRENCY.formatValue(customer.getCurdebt()));
txtCurdate.setText(Formats.DATE.formatValue(customer.getCurdate()));
+ txtDiscount.setText(Formats.PERCENT.formatValue(customer.getDiscount()));
txtNotes.setEnabled(true);
@@ -186,7 +187,8 @@ private void resetCustomer() {
txtMaxdebt.setText(null);
txtCurdebt.setText(null);
txtCurdate.setText(null);
-
+ txtDiscount.setText(null);
+
txtNotes.setEnabled(false);
dirty.setDirty(false);
@@ -285,13 +287,16 @@ private void initComponents() {
txtNotes = new uk.chromis.editor.JEditorString();
txtTaxId = new javax.swing.JTextField();
jLabel7 = new javax.swing.JLabel();
+ txtDiscount = new javax.swing.JTextField();
+ jLabel4 = new javax.swing.JLabel();
setLayout(new java.awt.BorderLayout());
jPanel2.setLayout(new java.awt.BorderLayout());
btnCustomer.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/customer_sml.png"))); // NOI18N
- btnCustomer.setToolTipText("Customer Account");
+ java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N
+ btnCustomer.setToolTipText(bundle.getString("tiptext.customeraccount")); // NOI18N
btnCustomer.setFocusPainted(false);
btnCustomer.setFocusable(false);
btnCustomer.setMargin(new java.awt.Insets(8, 14, 8, 14));
@@ -304,7 +309,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel6.add(btnCustomer);
btnSave.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/filesave.png"))); // NOI18N
- btnSave.setToolTipText("Save");
+ btnSave.setToolTipText(bundle.getString("tiptext.save")); // NOI18N
btnSave.setFocusPainted(false);
btnSave.setFocusable(false);
btnSave.setMargin(new java.awt.Insets(8, 14, 8, 14));
@@ -320,7 +325,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
btnPay.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
btnPay.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/pay.png"))); // NOI18N
btnPay.setText(AppLocal.getIntString("button.pay")); // NOI18N
- btnPay.setToolTipText("Pay Account");
+ btnPay.setToolTipText(bundle.getString("tiptext.payaccount")); // NOI18N
btnPay.setFocusPainted(false);
btnPay.setFocusable(false);
btnPay.setMargin(new java.awt.Insets(8, 14, 8, 14));
@@ -436,6 +441,15 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jLabel7.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel7.setText(AppLocal.getIntString("label.taxid")); // NOI18N
+ txtDiscount.setEditable(false);
+ txtDiscount.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ txtDiscount.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
+ txtDiscount.setFocusable(false);
+ txtDiscount.setRequestFocusEnabled(false);
+
+ jLabel4.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel4.setText(AppLocal.getIntString("label.discount")); // NOI18N
+
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
@@ -470,7 +484,11 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(txtCurdate, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addComponent(txtCurdate, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(txtDiscount, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(81, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
@@ -497,6 +515,10 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtMaxdebt, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(txtDiscount, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtCurdebt, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
@@ -504,7 +526,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtCurdate, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addContainerGap(223, Short.MAX_VALUE))
+ .addContainerGap(192, Short.MAX_VALUE))
);
add(jPanel1, java.awt.BorderLayout.CENTER);
@@ -561,7 +583,7 @@ private void btnPayActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:
double total = 0.0;
for (PaymentInfo p : payments) {
- total += p.getTotal();
+ total += p.getPaid();
}
payments.add(new PaymentInfoTicket(-total, "debtpaid"));
@@ -628,6 +650,7 @@ private void btnSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST
private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
+ private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
@@ -642,9 +665,11 @@ private void btnSaveActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST
private javax.swing.JTextField txtCard;
private javax.swing.JTextField txtCurdate;
private javax.swing.JTextField txtCurdebt;
+ private javax.swing.JTextField txtDiscount;
private javax.swing.JTextField txtMaxdebt;
private javax.swing.JTextField txtName;
private uk.chromis.editor.JEditorString txtNotes;
private javax.swing.JTextField txtTaxId;
// End of variables declaration//GEN-END:variables
}
+
diff --git a/src-pos/uk/chromis/pos/customers/CustomersView.form b/src-pos/uk/chromis/pos/customers/CustomersView.form
index 1b726f36..70b9f47c 100644
--- a/src-pos/uk/chromis/pos/customers/CustomersView.form
+++ b/src-pos/uk/chromis/pos/customers/CustomersView.form
@@ -16,22 +16,25 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -40,41 +43,39 @@
+
-
-
-
-
-
+
+
+
-
-
+
+
-
-
-
-
+
-
-
-
+
+
-
+
+
+
+
-
+
-
+
-
+
@@ -96,47 +97,61 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
-
-
-
+
+
+
@@ -246,7 +261,9 @@
-
+
+
+
@@ -266,7 +283,9 @@
-
+
+
+
@@ -430,38 +449,61 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
+
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -479,9 +521,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -498,7 +554,7 @@
-
+
@@ -607,6 +663,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -822,7 +929,7 @@
-
+
@@ -958,7 +1065,7 @@
-
+
@@ -1002,31 +1109,38 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/customers/CustomersView.java b/src-pos/uk/chromis/pos/customers/CustomersView.java
index 90d001a5..0c266a39 100644
--- a/src-pos/uk/chromis/pos/customers/CustomersView.java
+++ b/src-pos/uk/chromis/pos/customers/CustomersView.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,21 +16,29 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.pos.customers;
import java.awt.Component;
import java.awt.image.BufferedImage;
+import java.text.ParseException;
import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.Period;
+import java.time.ZoneId;
+import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
import javax.swing.table.AbstractTableModel;
import uk.chromis.basic.BasicException;
+import uk.chromis.beans.JCalendarDialog;
import uk.chromis.data.gui.ComboBoxValModel;
+import uk.chromis.data.gui.MessageInf;
import uk.chromis.data.loader.SentenceList;
import uk.chromis.data.user.DirtyManager;
import uk.chromis.data.user.EditorRecord;
@@ -40,60 +48,76 @@
import uk.chromis.pos.forms.DataLogicSales;
import uk.chromis.pos.util.StringUtils;
-/**
- *
- * @author adrianromero
- */
public final class CustomersView extends javax.swing.JPanel implements EditorRecord {
private static final long serialVersionUID = 1L;
private Object m_oId;
-
+
private SentenceList m_sentcat;
private List customerTransactionList;
private TransactionTableModel transactionModel;
private ComboBoxValModel m_CategoryModel;
-
+
private DirtyManager m_Dirty;
private DataLogicSales dlSales;
-
- /** Creates new form CustomersView
+
+ /**
+ * Creates new form CustomersView
+ *
* @param app
- * @param dirty */
+ * @param dirty
+ */
public CustomersView(AppView app, DirtyManager dirty) {
try {
dlSales = (DataLogicSales) app.getBean("uk.chromis.pos.forms.DataLogicSales");
-
- initComponents();
-
- m_sentcat = dlSales.getTaxCustCategoriesList();
- m_CategoryModel = new ComboBoxValModel();
-
- m_Dirty = dirty;
- m_jTaxID.getDocument().addDocumentListener(dirty);
- m_jSearchkey.getDocument().addDocumentListener(dirty);
- m_jName.getDocument().addDocumentListener(dirty);
- m_jCategory.addActionListener(dirty);
- m_jNotes.getDocument().addDocumentListener(dirty);
- txtMaxdebt.getDocument().addDocumentListener(dirty);
- m_jVisible.addActionListener(dirty);
-
- txtFirstName.getDocument().addDocumentListener(dirty);
- txtLastName.getDocument().addDocumentListener(dirty);
- txtEmail.getDocument().addDocumentListener(dirty);
- txtPhone.getDocument().addDocumentListener(dirty);
- txtPhone2.getDocument().addDocumentListener(dirty);
- txtFax.getDocument().addDocumentListener(dirty);
- m_jImage.addPropertyChangeListener("image",dirty);
-
- txtAddress.getDocument().addDocumentListener(dirty);
- txtAddress2.getDocument().addDocumentListener(dirty);
- // txtAddress3.getDocument().addDocumentListener(dirty);
- txtPostal.getDocument().addDocumentListener(dirty);
- txtCity.getDocument().addDocumentListener(dirty);
- txtRegion.getDocument().addDocumentListener(dirty);
- txtCountry.getDocument().addDocumentListener(dirty);
-
+
+ initComponents();
+
+ m_sentcat = dlSales.getTaxCustCategoriesList();
+ m_CategoryModel = new ComboBoxValModel();
+
+ m_Dirty = dirty;
+ m_jTaxID.getDocument().addDocumentListener(dirty);
+ m_jSearchkey.getDocument().addDocumentListener(dirty);
+ m_jName.getDocument().addDocumentListener(dirty);
+ m_jCategory.addActionListener(dirty);
+ m_jNotes.getDocument().addDocumentListener(dirty);
+ txtMaxdebt.getDocument().addDocumentListener(dirty);
+ m_jVisible.addActionListener(dirty);
+
+ txtFirstName.getDocument().addDocumentListener(dirty);
+ txtLastName.getDocument().addDocumentListener(dirty);
+ txtEmail.getDocument().addDocumentListener(dirty);
+ txtPhone.getDocument().addDocumentListener(dirty);
+ txtPhone2.getDocument().addDocumentListener(dirty);
+ txtFax.getDocument().addDocumentListener(dirty);
+ m_jImage.addPropertyChangeListener("image", dirty);
+
+ txtAddress.getDocument().addDocumentListener(dirty);
+ txtAddress2.getDocument().addDocumentListener(dirty);
+ txtPostal.getDocument().addDocumentListener(dirty);
+ txtCity.getDocument().addDocumentListener(dirty);
+ txtRegion.getDocument().addDocumentListener(dirty);
+ txtCountry.getDocument().addDocumentListener(dirty);
+ m_jShowDoB.getDocument().addDocumentListener(dirty);
+ txtDiscount.getDocument().addDocumentListener(dirty);
+
+ j_mDOB.setVisible(false);
+
+ j_mDOB.getDocument().addDocumentListener(new DocumentListener() {
+ public void changedUpdate(DocumentEvent e) {
+ updateDoB();
+ }
+
+ public void removeUpdate(DocumentEvent e) {
+ updateDoB();
+ }
+
+ public void insertUpdate(DocumentEvent e) {
+ updateDoB();
+ }
+ });
+
init();
} catch (Exception ex) {
Logger.getLogger(CustomersView.class.getName()).log(Level.SEVERE, null, ex);
@@ -101,30 +125,32 @@ public CustomersView(AppView app, DirtyManager dirty) {
}
private void init() {
- writeValueEOF();
+ writeValueEOF();
}
-
+
/**
* Instantiate object
+ *
* @throws BasicException
*/
@SuppressWarnings("unchecked")
public void activate() throws BasicException {
-
+
List a = m_sentcat.list();
a.add(0, null); // The null item
m_CategoryModel = new ComboBoxValModel(a);
- m_jCategory.setModel(m_CategoryModel);
+ m_jCategory.setModel(m_CategoryModel);
+
//customerTransactionList = dlSales.getCustomersTransactionList();
}
-
+
/**
* Refresh object
*/
@Override
public void refresh() {
}
-
+
/**
* Write EOF
*/
@@ -136,13 +162,12 @@ public void writeValueEOF() {
m_jName.setText(null);
m_CategoryModel.setSelectedKey(null);
m_jNotes.setText(null);
-
txtMaxdebt.setText(null);
+ txtDiscount.setText(null);
txtCurdebt.setText(null);
txtCurdate.setText(null);
m_jVisible.setSelected(false);
jcard.setText(null);
-
txtFirstName.setText(null);
txtLastName.setText(null);
txtEmail.setText(null);
@@ -150,7 +175,6 @@ public void writeValueEOF() {
txtPhone2.setText(null);
txtFax.setText(null);
m_jImage.setImage(null);
-
txtAddress.setText(null);
txtAddress2.setText(null);
// txtAddress3.setText(null);
@@ -158,18 +182,19 @@ public void writeValueEOF() {
txtCity.setText(null);
txtRegion.setText(null);
txtCountry.setText(null);
-
+ j_mDOB.setText(null);
+
m_jTaxID.setEnabled(false);
m_jSearchkey.setEnabled(false);
m_jName.setEnabled(false);
m_jCategory.setEnabled(false);
m_jNotes.setEnabled(false);
txtMaxdebt.setEnabled(false);
+ txtDiscount.setEnabled(false);
txtCurdebt.setEnabled(false);
txtCurdate.setEnabled(false);
m_jVisible.setEnabled(false);
jcard.setEnabled(false);
-
txtFirstName.setEnabled(false);
txtLastName.setEnabled(false);
txtEmail.setEnabled(false);
@@ -177,7 +202,6 @@ public void writeValueEOF() {
txtPhone2.setEnabled(false);
txtFax.setEnabled(false);
m_jImage.setEnabled(false);
-
txtAddress.setEnabled(false);
txtAddress2.setEnabled(false);
// txtAddress3.setEnabled(false);
@@ -185,13 +209,11 @@ public void writeValueEOF() {
txtCity.setEnabled(false);
txtRegion.setEnabled(false);
txtCountry.setEnabled(false);
-
jButton2.setEnabled(false);
jButton3.setEnabled(false);
-
jTable1.setEnabled(false);
-
-
+ jTable1.setVisible(false);
+ j_mDOB.setEnabled(false);
}
/**
@@ -206,11 +228,11 @@ public void writeValueInsert() {
m_CategoryModel.setSelectedKey(null);
m_jNotes.setText(null);
txtMaxdebt.setText(null);
+ txtDiscount.setText(null);
txtCurdebt.setText(null);
- txtCurdate.setText(null);
+ txtCurdate.setText(null);
m_jVisible.setSelected(true);
jcard.setText(null);
-
txtFirstName.setText(null);
txtLastName.setText(null);
txtEmail.setText(null);
@@ -218,26 +240,25 @@ public void writeValueInsert() {
txtPhone2.setText(null);
txtFax.setText(null);
m_jImage.setImage(null);
-
txtAddress.setText(null);
txtAddress2.setText(null);
-// txtAddress3.setText(null);
txtPostal.setText(null);
txtCity.setText(null);
txtRegion.setText(null);
txtCountry.setText(null);
-
+ j_mDOB.setText(null);
+
m_jTaxID.setEnabled(true);
m_jSearchkey.setEnabled(true);
m_jName.setEnabled(true);
m_jCategory.setEnabled(true);
m_jNotes.setEnabled(true);
txtMaxdebt.setEnabled(true);
+ txtDiscount.setEnabled(true);
txtCurdebt.setEnabled(true);
txtCurdate.setEnabled(true);
m_jVisible.setEnabled(true);
jcard.setEnabled(true);
-
txtFirstName.setEnabled(true);
txtLastName.setEnabled(true);
txtEmail.setEnabled(true);
@@ -245,30 +266,27 @@ public void writeValueInsert() {
txtPhone2.setEnabled(true);
txtFax.setEnabled(true);
m_jImage.setEnabled(true);
-
txtAddress.setEnabled(true);
txtAddress2.setEnabled(true);
-// txtAddress3.setEnabled(true);
txtPostal.setEnabled(true);
txtCity.setEnabled(true);
txtRegion.setEnabled(true);
txtCountry.setEnabled(true);
-
jButton2.setEnabled(true);
jButton3.setEnabled(true);
-
jTable1.setEnabled(false);
-
-
+ jTable1.setVisible(false);
+ j_mDOB.setEnabled(false);
}
/**
* Delete from object
+ *
* @param value
*/
@Override
public void writeValueDelete(Object value) {
-
+ System.out.println("delete");
Object[] customer = (Object[]) value;
m_oId = customer[0];
m_jTaxID.setText((String) customer[1]);
@@ -278,37 +296,35 @@ public void writeValueDelete(Object value) {
m_jVisible.setSelected(((Boolean) customer[5]));
jcard.setText((String) customer[6]);
txtMaxdebt.setText(Formats.CURRENCY.formatValue(customer[7]));
- txtCurdate.setText(Formats.DATE.formatValue(customer[8]));
- txtCurdebt.setText(Formats.CURRENCY.formatValue(customer[9]));
-
+ txtCurdate.setText(Formats.DATE.formatValue(customer[8]));
+ txtCurdebt.setText(Formats.CURRENCY.formatValue(customer[9]));
txtFirstName.setText(Formats.STRING.formatValue(customer[10]));
txtLastName.setText(Formats.STRING.formatValue(customer[11]));
txtEmail.setText(Formats.STRING.formatValue(customer[12]));
txtPhone.setText(Formats.STRING.formatValue(customer[13]));
txtPhone2.setText(Formats.STRING.formatValue(customer[14]));
txtFax.setText(Formats.STRING.formatValue(customer[15]));
-
txtAddress.setText(Formats.STRING.formatValue(customer[16]));
txtAddress2.setText(Formats.STRING.formatValue(customer[17]));
txtPostal.setText(Formats.STRING.formatValue(customer[18]));
txtCity.setText(Formats.STRING.formatValue(customer[19]));
txtRegion.setText(Formats.STRING.formatValue(customer[20]));
- txtCountry.setText(Formats.STRING.formatValue(customer[21]));
-
+ txtCountry.setText(Formats.STRING.formatValue(customer[21]));
m_CategoryModel.setSelectedKey(customer[22]);
-// JG 3 Oct 2013 - Customer Image
m_jImage.setImage((BufferedImage) customer[23]);
-
+ j_mDOB.setText(Formats.DATE.formatValue(customer[24]));
+ txtDiscount.setText(Formats.PERCENT.formatValue(customer[25]));
+
m_jTaxID.setEnabled(false);
m_jSearchkey.setEnabled(false);
m_jName.setEnabled(false);
m_jNotes.setEnabled(false);
txtMaxdebt.setEnabled(false);
txtCurdebt.setEnabled(false);
+ txtDiscount.setEnabled(false);
txtCurdate.setEnabled(false);
m_jVisible.setEnabled(false);
- jcard.setEnabled(false);
-
+ jcard.setEnabled(false);
txtFirstName.setEnabled(false);
txtLastName.setEnabled(false);
txtEmail.setEnabled(false);
@@ -316,30 +332,26 @@ public void writeValueDelete(Object value) {
txtPhone2.setEnabled(false);
txtFax.setEnabled(false);
m_jImage.setEnabled(true);
-
+ j_mDOB.setEnabled(false);
txtAddress.setEnabled(false);
txtAddress2.setEnabled(false);
-// txtAddress3.setEnabled(false);
txtPostal.setEnabled(false);
txtCity.setEnabled(false);
txtRegion.setEnabled(false);
txtCountry.setEnabled(false);
-
m_jCategory.setEnabled(false);
-
jButton2.setEnabled(false);
jButton3.setEnabled(false);
-// JG 3 Oct 2013 - for Transaction List table
transactionModel = new TransactionTableModel(getTransactionOfName((String) customer[3]));
jTable1.setModel(transactionModel);
jTable1.setEnabled(false);
-
-
+
}
/**
* Edit object
+ *
* @param value
*/
@Override
@@ -349,42 +361,41 @@ public void writeValueEdit(Object value) {
m_jTaxID.setText((String) customer[1]);
m_jSearchkey.setText((String) customer[2]);
m_jName.setText((String) customer[3]);
+ String test = m_jName.getText();
m_jNotes.setText((String) customer[4]);
m_jVisible.setSelected(((Boolean) customer[5]));
jcard.setText((String) customer[6]);
txtMaxdebt.setText(Formats.CURRENCY.formatValue(customer[7]));
- txtCurdate.setText(Formats.DATE.formatValue(customer[8]));
- txtCurdebt.setText(Formats.CURRENCY.formatValue(customer[9]));
-
+ txtCurdate.setText(Formats.DATE.formatValue(customer[8]));
+ txtCurdebt.setText(Formats.CURRENCY.formatValue(customer[9]));
txtFirstName.setText(Formats.STRING.formatValue(customer[10]));
txtLastName.setText(Formats.STRING.formatValue(customer[11]));
txtEmail.setText(Formats.STRING.formatValue(customer[12]));
txtPhone.setText(Formats.STRING.formatValue(customer[13]));
txtPhone2.setText(Formats.STRING.formatValue(customer[14]));
txtFax.setText(Formats.STRING.formatValue(customer[15]));
-
txtAddress.setText(Formats.STRING.formatValue(customer[16]));
txtAddress2.setText(Formats.STRING.formatValue(customer[17]));
txtPostal.setText(Formats.STRING.formatValue(customer[18]));
txtCity.setText(Formats.STRING.formatValue(customer[19]));
txtRegion.setText(Formats.STRING.formatValue(customer[20]));
- txtCountry.setText(Formats.STRING.formatValue(customer[21]));
-
+ txtCountry.setText(Formats.STRING.formatValue(customer[21]));
m_CategoryModel.setSelectedKey(customer[22]);
-
-// JG 3 Oct 2013 - Customer image
m_jImage.setImage((BufferedImage) customer[23]);
+ j_mDOB.setText(Formats.DATE.formatValue(customer[24]));
+ txtDiscount.setText(Formats.PERCENT.formatValue(customer[25]));
+
m_jTaxID.setEnabled(true);
m_jSearchkey.setEnabled(true);
m_jName.setEnabled(true);
m_jNotes.setEnabled(true);
txtMaxdebt.setEnabled(true);
+ txtDiscount.setEnabled(true);
txtCurdebt.setEnabled(true);
txtCurdate.setEnabled(true);
m_jVisible.setEnabled(true);
jcard.setEnabled(true);
-
txtFirstName.setEnabled(true);
txtLastName.setEnabled(true);
txtEmail.setEnabled(true);
@@ -392,38 +403,37 @@ public void writeValueEdit(Object value) {
txtPhone2.setEnabled(true);
txtFax.setEnabled(true);
m_jImage.setEnabled(true);
-
txtAddress.setEnabled(true);
txtAddress2.setEnabled(true);
-// txtAddress3.setEnabled(true);
txtPostal.setEnabled(true);
txtCity.setEnabled(true);
txtRegion.setEnabled(true);
txtCountry.setEnabled(true);
-
+ j_mDOB.setEnabled(true);
m_jCategory.setEnabled(true);
-
jButton2.setEnabled(true);
jButton3.setEnabled(true);
-
transactionModel = new TransactionTableModel(getTransactionOfName((String) customer[3]));
jTable1.setModel(transactionModel);
jTable1.setEnabled(true);
+ jTable1.setVisible(true);
txtCurdate.repaint();
- txtCurdebt.repaint();
+ txtCurdebt.repaint();
+ updateDoB();
repaint();
- refresh();
+ refresh();
}
-
+
/**
* Create object
+ *
* @return
* @throws BasicException
*/
@Override
public Object createValue() throws BasicException {
- Object[] customer = new Object[25];
+ Object[] customer = new Object[26];
customer[0] = m_oId == null ? UUID.randomUUID().toString() : m_oId;
customer[1] = m_jTaxID.getText();
customer[2] = m_jSearchkey.getText();
@@ -434,37 +444,35 @@ public Object createValue() throws BasicException {
customer[7] = Formats.CURRENCY.parseValue(txtMaxdebt.getText(), 0.0);
customer[8] = Formats.TIMESTAMP.parseValue(txtCurdate.getText()); // not saved
customer[9] = Formats.CURRENCY.parseValue(txtCurdebt.getText()); // not saved
-
customer[10] = Formats.STRING.parseValue(txtFirstName.getText());
customer[11] = Formats.STRING.parseValue(txtLastName.getText());
customer[12] = Formats.STRING.parseValue(txtEmail.getText());
customer[13] = Formats.STRING.parseValue(txtPhone.getText());
customer[14] = Formats.STRING.parseValue(txtPhone2.getText());
customer[15] = Formats.STRING.parseValue(txtFax.getText());
-
customer[16] = Formats.STRING.parseValue(txtAddress.getText());
customer[17] = Formats.STRING.parseValue(txtAddress2.getText());
customer[18] = Formats.STRING.parseValue(txtPostal.getText());
customer[19] = Formats.STRING.parseValue(txtCity.getText());
customer[20] = Formats.STRING.parseValue(txtRegion.getText());
- customer[21] = Formats.STRING.parseValue(txtCountry.getText());
-
+ customer[21] = Formats.STRING.parseValue(txtCountry.getText());
customer[22] = m_CategoryModel.getSelectedKey();
-// JG 3 Oct 2013 - Customer image
- customer[23] = m_jImage.getImage();
-
+ customer[23] = m_jImage.getImage();
+ customer[24] = Formats.TIMESTAMP.parseValue(j_mDOB.getText());
+ customer[25] = Formats.PERCENT.parseValue(txtDiscount.getText());
+
return customer;
}
-
+
@Override
public Component getComponent() {
return this;
}
-
+
// JG 3 Oct 2013 - Customer Transaction List
private List getTransactionOfName(String name) {
- // List customerList = new ArrayList<>();
+ // List customerList = new ArrayList<>();
try {
customerTransactionList = dlSales.getCustomersTransactionList(name);
} catch (BasicException ex) {
@@ -474,9 +482,9 @@ private List getTransactionOfName(String name) {
txtCurdate.repaint();
txtCurdebt.repaint();
repaint();
- refresh();
+ refresh();
- return customerTransactionList;
+ return customerTransactionList;
}
class TransactionTableModel extends AbstractTableModel {
@@ -506,7 +514,7 @@ public Object getValueAt(int row, int column) {
switch (column) {
case 0:
- return customerTransaction.getTicketId();
+ return customerTransaction.getTicketId();
case 1:
Date transactionDate = customerTransaction.getTransactionDate();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
@@ -517,7 +525,7 @@ public Object getValueAt(int row, int column) {
case 3:
return customerTransaction.getUnit();
case 4:
- return Formats.CURRENCY.formatValue(customerTransaction.getTotal())+" ";
+ return Formats.CURRENCY.formatValue(customerTransaction.getTotal()) + " ";
default:
return "";
@@ -536,7 +544,6 @@ public String getColumnName(int col) {
//System.out.println(Tamount);
//txtTurnover.setText(Tamount.toString());
//
-
// public Object GetData(TransactionTableModel jTable1, int row, int column){
// txtTurnover.setText(jTable1.GetData(jTable1, row, 4).toString());
// Double amountT;
@@ -591,6 +598,12 @@ private void initComponents() {
txtPhone2 = new javax.swing.JTextField();
jLabel14 = new javax.swing.JLabel();
txtFax = new javax.swing.JTextField();
+ jLabel26 = new javax.swing.JLabel();
+ m_jShowDoB = new javax.swing.JTextField();
+ btnDoB = new javax.swing.JButton();
+ j_mDOB = new javax.swing.JTextField();
+ jAge = new javax.swing.JTextField();
+ jLabel11 = new javax.swing.JLabel();
jPanel2 = new javax.swing.JPanel();
jLabel13 = new javax.swing.JLabel();
txtAddress = new javax.swing.JTextField();
@@ -614,8 +627,9 @@ private void initComponents() {
m_jNotes = new javax.swing.JTextArea();
txtTurnover = new javax.swing.JTextField();
jLabel10 = new javax.swing.JLabel();
- jPanel6 = new javax.swing.JPanel();
m_jVisible = new eu.hansolo.custom.SteelCheckBox();
+ jLabel12 = new javax.swing.JLabel();
+ txtDiscount = new javax.swing.JTextField();
jLabel7.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel7.setText(AppLocal.getIntString("label.taxid")); // NOI18N
@@ -648,7 +662,8 @@ private void initComponents() {
jcard.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/encrypted.png"))); // NOI18N
- jButton2.setToolTipText("Create Key");
+ java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N
+ jButton2.setToolTipText(bundle.getString("tiptext.createkey")); // NOI18N
jButton2.setMaximumSize(new java.awt.Dimension(64, 32));
jButton2.setMinimumSize(new java.awt.Dimension(64, 32));
jButton2.setPreferredSize(new java.awt.Dimension(64, 32));
@@ -659,7 +674,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
});
jButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/fileclose.png"))); // NOI18N
- jButton3.setToolTipText("Clear Key");
+ jButton3.setToolTipText(bundle.getString("tiptext.clearkey")); // NOI18N
jButton3.setMaximumSize(new java.awt.Dimension(64, 32));
jButton3.setMinimumSize(new java.awt.Dimension(64, 32));
jButton3.setPreferredSize(new java.awt.Dimension(64, 32));
@@ -745,6 +760,27 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
txtFax.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel26.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel26.setText(AppLocal.getIntString("label.dob")); // NOI18N
+
+ m_jShowDoB.setEditable(false);
+ m_jShowDoB.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
+ m_jShowDoB.setDisabledTextColor(new java.awt.Color(0, 0, 0));
+
+ btnDoB.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/date.png"))); // NOI18N
+ btnDoB.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnDoBActionPerformed(evt);
+ }
+ });
+
+ j_mDOB.setEditable(false);
+
+ jAge.setEditable(false);
+
+ jLabel11.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel11.setText(bundle.getString("label.age")); // NOI18N
+
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
@@ -753,28 +789,45 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
- .addComponent(jLabel14, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(txtFax, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGroup(jPanel1Layout.createSequentialGroup()
- .addComponent(jLabel19, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jLabel26, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel11, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(txtFirstName, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGroup(jPanel1Layout.createSequentialGroup()
- .addComponent(jLabel15, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(jAge)
+ .addComponent(m_jShowDoB, javax.swing.GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(btnDoB, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(txtLastName, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(j_mDOB, javax.swing.GroupLayout.DEFAULT_SIZE, 151, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(jLabel16, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jLabel17, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jLabel18, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(txtPhone2, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(txtPhone, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(txtEmail, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))))
- .addContainerGap(211, Short.MAX_VALUE))
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(jLabel15, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(txtLastName, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(jLabel16, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(txtEmail, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(jLabel19, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(txtFirstName, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(jLabel14, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(txtFax, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jLabel17, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel18, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(txtPhone2, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(txtPhone, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))))
+ .addGap(0, 0, Short.MAX_VALUE)))
+ .addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -788,9 +841,20 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addComponent(jLabel15, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtLastName, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(jLabel26, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(btnDoB, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(m_jShowDoB, javax.swing.GroupLayout.Alignment.TRAILING))
+ .addComponent(j_mDOB))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(jAge, javax.swing.GroupLayout.DEFAULT_SIZE, 28, Short.MAX_VALUE)
+ .addComponent(jLabel11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(jLabel16, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(txtEmail, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(txtEmail, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel16, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel17, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
@@ -803,7 +867,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(txtFax, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel14, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGap(57, 57, 57))
+ .addGap(27, 27, 27))
);
jTabbedPane1.addTab(AppLocal.getIntString("label.contact"), jPanel1); // NOI18N
@@ -931,11 +995,10 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel4Layout.createSequentialGroup()
.addContainerGap()
- .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 226, Short.MAX_VALUE)
+ .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 246, Short.MAX_VALUE)
.addContainerGap())
);
- java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N
jTabbedPane1.addTab(bundle.getString("label.Transactions"), jPanel4); // NOI18N
m_jImage.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
@@ -975,7 +1038,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
- .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 226, Short.MAX_VALUE)
+ .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 246, Short.MAX_VALUE)
.addContainerGap())
);
@@ -989,41 +1052,39 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel10.setText(AppLocal.getIntString("label.customerTotalSales")); // NOI18N
+ m_jVisible.setSelected(true);
m_jVisible.setText(" ");
- javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
- jPanel6.setLayout(jPanel6Layout);
- jPanel6Layout.setHorizontalGroup(
- jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(jPanel6Layout.createSequentialGroup()
- .addContainerGap()
- .addComponent(m_jVisible, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addContainerGap(88, Short.MAX_VALUE))
- );
- jPanel6Layout.setVerticalGroup(
- jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(m_jVisible, javax.swing.GroupLayout.DEFAULT_SIZE, 0, Short.MAX_VALUE)
- );
+ jLabel12.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel12.setText(AppLocal.getIntString("label.discount")); // NOI18N
+ jLabel12.setMaximumSize(new java.awt.Dimension(140, 25));
+ jLabel12.setMinimumSize(new java.awt.Dimension(140, 25));
+ jLabel12.setPreferredSize(new java.awt.Dimension(140, 25));
+
+ txtDiscount.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ txtDiscount.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+ .addGroup(layout.createSequentialGroup()
.addContainerGap()
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
- .addComponent(jTabbedPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 540, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(jLabel9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jLabel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(jLabel9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addComponent(jLabel12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(m_jCategory, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addComponent(m_jTaxID, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
@@ -1031,31 +1092,30 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(m_jSearchkey, javax.swing.GroupLayout.PREFERRED_SIZE, 136, javax.swing.GroupLayout.PREFERRED_SIZE))
.addComponent(m_jName, javax.swing.GroupLayout.PREFERRED_SIZE, 325, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(m_jVisible, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(txtMaxdebt, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(txtCurdebt, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
- .addComponent(txtCurdate, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(txtTurnover, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(txtCurdebt, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(txtCurdate, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
- .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE))))
- .addGroup(layout.createSequentialGroup()
+ .addComponent(txtDiscount, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(jcard, javax.swing.GroupLayout.PREFERRED_SIZE, 169, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(m_jCategory, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGap(18, 18, Short.MAX_VALUE)
+ .addComponent(txtTurnover, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(jcard, javax.swing.GroupLayout.PREFERRED_SIZE, 169, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(27, 27, 27)))))
- .addGap(30, 30, 30))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
+ .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 540, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -1073,37 +1133,46 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jcard, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jcard, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(m_jVisible, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(m_jCategory, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)))
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
- .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(txtMaxdebt, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(txtMaxdebt, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addGroup(layout.createSequentialGroup()
+ .addGap(7, 7, 7)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(jLabel12, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(txtDiscount))))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(txtCurdebt, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtCurdate, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(txtTurnover, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(txtCurdebt, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 231, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addContainerGap(16, Short.MAX_VALUE))
+ .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 297, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
}// //GEN-END:initComponents
@@ -1121,12 +1190,85 @@ private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRS
}
}//GEN-LAST:event_jButton3ActionPerformed
+ private void btnDoBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDoBActionPerformed
+ Date date;
+ try {
+ date = (Date) Formats.TIMESTAMP.parseValue(j_mDOB.getText());
+ } catch (BasicException e) {
+ date = Calendar.getInstance().getTime();
+ }
+
+ date = JCalendarDialog.showCalendar(this, date);
+ if (date != null) {
+ if (IsValidDate(date)) {
+ j_mDOB.setText(Formats.TIMESTAMP.formatValue(date));
+ String str = String.format("%1$s %2$tB %2$td, %2$tY", "", date);
+ m_jShowDoB.setText(str);
+ } else {
+ MessageInf msg = new MessageInf(MessageInf.SGN_WARNING, AppLocal.getIntString("message.invaliddobdate"));
+ msg.show(this);
+ }
+ }
+ }//GEN-LAST:event_btnDoBActionPerformed
+
+ private void updateDoB() {
+ m_Dirty.setDirty(true);
+ try {
+ if (j_mDOB.getText().equals(null) || j_mDOB.getText().equals("")) {
+ m_jShowDoB.setText("");
+ jAge.setText("");
+ } else {
+ Date date = (Date) Formats.TIMESTAMP.parseValue(j_mDOB.getText());
+ String str = String.format("%1$s %2$tB %2$td, %2$tY", "", date);
+ m_jShowDoB.setText(str);
+ Period age = getAge(date);
+ String Age = " " + age.getYears() + " yrs " + age.getMonths() + " mths";
+ jAge.setText(Age);
+ }
+ } catch (BasicException ex) {
+ Logger.getLogger(CustomersView.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+
+ private boolean IsValidDate(Date dateToValidate) {
+ if (dateToValidate == null) {
+ return false;
+ }
+ Date today = truncateTime(Calendar.getInstance().getTime());
+ Date dob = truncateTime(dateToValidate);
+ if (dob.after(today) || dob.equals(today)) {
+ return false;
+ }
+ return true;
+ }
+
+ private Period getAge(Date dob) {
+ LocalDate today = LocalDate.now();
+ LocalDate date = dob.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+ Period p = Period.between(date, today);
+ return p;
+ }
+
+ private static Date truncateTime(Date date) {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ try {
+ date = sdf.parse(sdf.format(date));
+ } catch (ParseException ex) {
+ Logger.getLogger(CustomersView.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ return date;
+ }
+
// Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton btnDoB;
+ private javax.swing.JTextField jAge;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
+ private javax.swing.JLabel jLabel11;
+ private javax.swing.JLabel jLabel12;
private javax.swing.JLabel jLabel13;
private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel15;
@@ -1140,6 +1282,7 @@ private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRS
private javax.swing.JLabel jLabel22;
private javax.swing.JLabel jLabel23;
private javax.swing.JLabel jLabel24;
+ private javax.swing.JLabel jLabel26;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
@@ -1152,17 +1295,18 @@ private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRS
private javax.swing.JPanel jPanel3;
private javax.swing.JPanel jPanel4;
private javax.swing.JPanel jPanel5;
- private javax.swing.JPanel jPanel6;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTabbedPane jTabbedPane1;
private javax.swing.JTable jTable1;
+ private javax.swing.JTextField j_mDOB;
private javax.swing.JTextField jcard;
private javax.swing.JComboBox m_jCategory;
private uk.chromis.data.gui.JImageEditor m_jImage;
private javax.swing.JTextField m_jName;
private javax.swing.JTextArea m_jNotes;
private javax.swing.JTextField m_jSearchkey;
+ private javax.swing.JTextField m_jShowDoB;
private javax.swing.JTextField m_jTaxID;
private eu.hansolo.custom.SteelCheckBox m_jVisible;
private javax.swing.JTextField txtAddress;
@@ -1171,6 +1315,7 @@ private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRS
private javax.swing.JTextField txtCountry;
private javax.swing.JTextField txtCurdate;
private javax.swing.JTextField txtCurdebt;
+ private javax.swing.JTextField txtDiscount;
private javax.swing.JTextField txtEmail;
private javax.swing.JTextField txtFax;
private javax.swing.JTextField txtFirstName;
diff --git a/src-pos/uk/chromis/pos/customers/CustomersViewNoTrans.form b/src-pos/uk/chromis/pos/customers/CustomersViewNoTrans.form
new file mode 100644
index 00000000..ba3c0a19
--- /dev/null
+++ b/src-pos/uk/chromis/pos/customers/CustomersViewNoTrans.form
@@ -0,0 +1,1046 @@
+
+
+
diff --git a/src-pos/uk/chromis/pos/customers/CustomersViewNoTrans.java b/src-pos/uk/chromis/pos/customers/CustomersViewNoTrans.java
new file mode 100644
index 00000000..439a8d01
--- /dev/null
+++ b/src-pos/uk/chromis/pos/customers/CustomersViewNoTrans.java
@@ -0,0 +1,1271 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016
+// http://www.chromis.co.uk
+//
+// This file is part of Chromis POS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+package uk.chromis.pos.customers;
+
+import uk.chromis.pos.customers.*;
+import java.awt.Component;
+import java.awt.image.BufferedImage;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.Period;
+import java.time.ZoneId;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.JOptionPane;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import javax.swing.table.AbstractTableModel;
+import uk.chromis.basic.BasicException;
+import uk.chromis.beans.JCalendarDialog;
+import uk.chromis.data.gui.ComboBoxValModel;
+import uk.chromis.data.gui.MessageInf;
+import uk.chromis.data.loader.SentenceList;
+import uk.chromis.data.user.DirtyManager;
+import uk.chromis.data.user.EditorRecord;
+import uk.chromis.format.Formats;
+import uk.chromis.pos.forms.AppLocal;
+import uk.chromis.pos.forms.AppView;
+import uk.chromis.pos.forms.DataLogicSales;
+import uk.chromis.pos.util.StringUtils;
+
+public final class CustomersViewNoTrans extends javax.swing.JPanel implements EditorRecord {
+
+ private static final long serialVersionUID = 1L;
+ private Object m_oId;
+
+ private SentenceList m_sentcat;
+ private List customerTransactionList;
+ private TransactionTableModel transactionModel;
+ private ComboBoxValModel m_CategoryModel;
+
+ private DirtyManager m_Dirty;
+ private DataLogicSales dlSales;
+
+ /**
+ * Creates new form CustomersView
+ *
+ * @param app
+ * @param dirty
+ */
+ public CustomersViewNoTrans(AppView app, DirtyManager dirty) {
+ try {
+ dlSales = (DataLogicSales) app.getBean("uk.chromis.pos.forms.DataLogicSales");
+
+ initComponents();
+
+ m_sentcat = dlSales.getTaxCustCategoriesList();
+ m_CategoryModel = new ComboBoxValModel();
+
+ m_Dirty = dirty;
+ m_jTaxID.getDocument().addDocumentListener(dirty);
+ m_jSearchkey.getDocument().addDocumentListener(dirty);
+ m_jName.getDocument().addDocumentListener(dirty);
+ m_jCategory.addActionListener(dirty);
+ m_jNotes.getDocument().addDocumentListener(dirty);
+ txtMaxdebt.getDocument().addDocumentListener(dirty);
+ m_jVisible.addActionListener(dirty);
+
+ txtFirstName.getDocument().addDocumentListener(dirty);
+ txtLastName.getDocument().addDocumentListener(dirty);
+ txtEmail.getDocument().addDocumentListener(dirty);
+ txtPhone.getDocument().addDocumentListener(dirty);
+ txtPhone2.getDocument().addDocumentListener(dirty);
+ txtFax.getDocument().addDocumentListener(dirty);
+ m_jImage.addPropertyChangeListener("image", dirty);
+
+ txtAddress.getDocument().addDocumentListener(dirty);
+ txtAddress2.getDocument().addDocumentListener(dirty);
+ txtPostal.getDocument().addDocumentListener(dirty);
+ txtCity.getDocument().addDocumentListener(dirty);
+ txtRegion.getDocument().addDocumentListener(dirty);
+ txtCountry.getDocument().addDocumentListener(dirty);
+ m_jShowDoB.getDocument().addDocumentListener(dirty);
+ txtDiscount.getDocument().addDocumentListener(dirty);
+
+ j_mDOB.setVisible(false);
+
+ j_mDOB.getDocument().addDocumentListener(new DocumentListener() {
+ public void changedUpdate(DocumentEvent e) {
+ updateDoB();
+ }
+
+ public void removeUpdate(DocumentEvent e) {
+ updateDoB();
+ }
+
+ public void insertUpdate(DocumentEvent e) {
+ updateDoB();
+ }
+ });
+
+ init();
+ } catch (Exception ex) {
+ Logger.getLogger(CustomersView.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+
+ private void init() {
+ writeValueEOF();
+ }
+
+ /**
+ * Instantiate object
+ *
+ * @throws BasicException
+ */
+ @SuppressWarnings("unchecked")
+ public void activate() throws BasicException {
+
+ List a = m_sentcat.list();
+ a.add(0, null); // The null item
+ m_CategoryModel = new ComboBoxValModel(a);
+ m_jCategory.setModel(m_CategoryModel);
+
+ //customerTransactionList = dlSales.getCustomersTransactionList();
+ }
+
+ /**
+ * Refresh object
+ */
+ @Override
+ public void refresh() {
+ }
+
+ /**
+ * Write EOF
+ */
+ @Override
+ public void writeValueEOF() {
+ m_oId = null;
+ m_jTaxID.setText(null);
+ m_jSearchkey.setText(null);
+ m_jName.setText(null);
+ m_CategoryModel.setSelectedKey(null);
+ m_jNotes.setText(null);
+ txtMaxdebt.setText(null);
+ txtDiscount.setText(null);
+ txtCurdebt.setText(null);
+ txtCurdate.setText(null);
+ m_jVisible.setSelected(false);
+ jcard.setText(null);
+ txtFirstName.setText(null);
+ txtLastName.setText(null);
+ txtEmail.setText(null);
+ txtPhone.setText(null);
+ txtPhone2.setText(null);
+ txtFax.setText(null);
+ m_jImage.setImage(null);
+ txtAddress.setText(null);
+ txtAddress2.setText(null);
+// txtAddress3.setText(null);
+ txtPostal.setText(null);
+ txtCity.setText(null);
+ txtRegion.setText(null);
+ txtCountry.setText(null);
+ j_mDOB.setText(null);
+
+ m_jTaxID.setEnabled(false);
+ m_jSearchkey.setEnabled(false);
+ m_jName.setEnabled(false);
+ m_jCategory.setEnabled(false);
+ m_jNotes.setEnabled(false);
+ txtMaxdebt.setEnabled(false);
+ txtDiscount.setEnabled(false);
+ txtCurdebt.setEnabled(false);
+ txtCurdate.setEnabled(false);
+ m_jVisible.setEnabled(false);
+ jcard.setEnabled(false);
+ txtFirstName.setEnabled(false);
+ txtLastName.setEnabled(false);
+ txtEmail.setEnabled(false);
+ txtPhone.setEnabled(false);
+ txtPhone2.setEnabled(false);
+ txtFax.setEnabled(false);
+ m_jImage.setEnabled(false);
+ txtAddress.setEnabled(false);
+ txtAddress2.setEnabled(false);
+// txtAddress3.setEnabled(false);
+ txtPostal.setEnabled(false);
+ txtCity.setEnabled(false);
+ txtRegion.setEnabled(false);
+ txtCountry.setEnabled(false);
+ jButton2.setEnabled(false);
+ jButton3.setEnabled(false);
+ j_mDOB.setEnabled(false);
+ }
+
+ /**
+ * Insert data
+ */
+ @Override
+ public void writeValueInsert() {
+ m_oId = null;
+ m_jTaxID.setText(null);
+ m_jSearchkey.setText(null);
+ m_jName.setText(null);
+ m_CategoryModel.setSelectedKey(null);
+ m_jNotes.setText(null);
+ txtMaxdebt.setText(null);
+ txtDiscount.setText(null);
+ txtCurdebt.setText(null);
+ txtCurdate.setText(null);
+ m_jVisible.setSelected(true);
+ jcard.setText(null);
+ txtFirstName.setText(null);
+ txtLastName.setText(null);
+ txtEmail.setText(null);
+ txtPhone.setText(null);
+ txtPhone2.setText(null);
+ txtFax.setText(null);
+ m_jImage.setImage(null);
+ txtAddress.setText(null);
+ txtAddress2.setText(null);
+ txtPostal.setText(null);
+ txtCity.setText(null);
+ txtRegion.setText(null);
+ txtCountry.setText(null);
+ j_mDOB.setText(null);
+
+ m_jTaxID.setEnabled(true);
+ m_jSearchkey.setEnabled(true);
+ m_jName.setEnabled(true);
+ m_jCategory.setEnabled(true);
+ m_jNotes.setEnabled(true);
+ txtMaxdebt.setEnabled(true);
+ txtDiscount.setEnabled(true);
+ txtCurdebt.setEnabled(true);
+ txtCurdate.setEnabled(true);
+ m_jVisible.setEnabled(true);
+ jcard.setEnabled(true);
+ txtFirstName.setEnabled(true);
+ txtLastName.setEnabled(true);
+ txtEmail.setEnabled(true);
+ txtPhone.setEnabled(true);
+ txtPhone2.setEnabled(true);
+ txtFax.setEnabled(true);
+ m_jImage.setEnabled(true);
+ txtAddress.setEnabled(true);
+ txtAddress2.setEnabled(true);
+ txtPostal.setEnabled(true);
+ txtCity.setEnabled(true);
+ txtRegion.setEnabled(true);
+ txtCountry.setEnabled(true);
+ jButton2.setEnabled(true);
+ jButton3.setEnabled(true);
+ j_mDOB.setEnabled(false);
+ }
+
+ /**
+ * Delete from object
+ *
+ * @param value
+ */
+ @Override
+ public void writeValueDelete(Object value) {
+ System.out.println("delete");
+ Object[] customer = (Object[]) value;
+ m_oId = customer[0];
+ m_jTaxID.setText((String) customer[1]);
+ m_jSearchkey.setText((String) customer[2]);
+ m_jName.setText((String) customer[3]);
+ m_jNotes.setText((String) customer[4]);
+ m_jVisible.setSelected(((Boolean) customer[5]));
+ jcard.setText((String) customer[6]);
+ txtMaxdebt.setText(Formats.CURRENCY.formatValue(customer[7]));
+ txtCurdate.setText(Formats.DATE.formatValue(customer[8]));
+ txtCurdebt.setText(Formats.CURRENCY.formatValue(customer[9]));
+ txtFirstName.setText(Formats.STRING.formatValue(customer[10]));
+ txtLastName.setText(Formats.STRING.formatValue(customer[11]));
+ txtEmail.setText(Formats.STRING.formatValue(customer[12]));
+ txtPhone.setText(Formats.STRING.formatValue(customer[13]));
+ txtPhone2.setText(Formats.STRING.formatValue(customer[14]));
+ txtFax.setText(Formats.STRING.formatValue(customer[15]));
+ txtAddress.setText(Formats.STRING.formatValue(customer[16]));
+ txtAddress2.setText(Formats.STRING.formatValue(customer[17]));
+ txtPostal.setText(Formats.STRING.formatValue(customer[18]));
+ txtCity.setText(Formats.STRING.formatValue(customer[19]));
+ txtRegion.setText(Formats.STRING.formatValue(customer[20]));
+ txtCountry.setText(Formats.STRING.formatValue(customer[21]));
+ m_CategoryModel.setSelectedKey(customer[22]);
+ m_jImage.setImage((BufferedImage) customer[23]);
+ j_mDOB.setText(Formats.DATE.formatValue(customer[24]));
+ txtDiscount.setText(Formats.PERCENT.formatValue(customer[25]));
+
+ m_jTaxID.setEnabled(false);
+ m_jSearchkey.setEnabled(false);
+ m_jName.setEnabled(false);
+ m_jNotes.setEnabled(false);
+ txtMaxdebt.setEnabled(false);
+ txtCurdebt.setEnabled(false);
+ txtDiscount.setEnabled(false);
+ txtCurdate.setEnabled(false);
+ m_jVisible.setEnabled(false);
+ jcard.setEnabled(false);
+ txtFirstName.setEnabled(false);
+ txtLastName.setEnabled(false);
+ txtEmail.setEnabled(false);
+ txtPhone.setEnabled(false);
+ txtPhone2.setEnabled(false);
+ txtFax.setEnabled(false);
+ m_jImage.setEnabled(true);
+ j_mDOB.setEnabled(false);
+ txtAddress.setEnabled(false);
+ txtAddress2.setEnabled(false);
+ txtPostal.setEnabled(false);
+ txtCity.setEnabled(false);
+ txtRegion.setEnabled(false);
+ txtCountry.setEnabled(false);
+ m_jCategory.setEnabled(false);
+ jButton2.setEnabled(false);
+ jButton3.setEnabled(false);
+ }
+
+ /**
+ * Edit object
+ *
+ * @param value
+ */
+ @Override
+ public void writeValueEdit(Object value) {
+ Object[] customer = (Object[]) value;
+ m_oId = customer[0];
+ m_jTaxID.setText((String) customer[1]);
+ m_jSearchkey.setText((String) customer[2]);
+ m_jName.setText((String) customer[3]);
+ String test = m_jName.getText();
+ m_jNotes.setText((String) customer[4]);
+ m_jVisible.setSelected(((Boolean) customer[5]));
+ jcard.setText((String) customer[6]);
+ txtMaxdebt.setText(Formats.CURRENCY.formatValue(customer[7]));
+ txtCurdate.setText(Formats.DATE.formatValue(customer[8]));
+ txtCurdebt.setText(Formats.CURRENCY.formatValue(customer[9]));
+ txtFirstName.setText(Formats.STRING.formatValue(customer[10]));
+ txtLastName.setText(Formats.STRING.formatValue(customer[11]));
+ txtEmail.setText(Formats.STRING.formatValue(customer[12]));
+ txtPhone.setText(Formats.STRING.formatValue(customer[13]));
+ txtPhone2.setText(Formats.STRING.formatValue(customer[14]));
+ txtFax.setText(Formats.STRING.formatValue(customer[15]));
+ txtAddress.setText(Formats.STRING.formatValue(customer[16]));
+ txtAddress2.setText(Formats.STRING.formatValue(customer[17]));
+ txtPostal.setText(Formats.STRING.formatValue(customer[18]));
+ txtCity.setText(Formats.STRING.formatValue(customer[19]));
+ txtRegion.setText(Formats.STRING.formatValue(customer[20]));
+ txtCountry.setText(Formats.STRING.formatValue(customer[21]));
+ m_CategoryModel.setSelectedKey(customer[22]);
+ m_jImage.setImage((BufferedImage) customer[23]);
+ j_mDOB.setText(Formats.DATE.formatValue(customer[24]));
+ txtDiscount.setText(Formats.PERCENT.formatValue(customer[25]));
+
+
+ m_jTaxID.setEnabled(true);
+ m_jSearchkey.setEnabled(true);
+ m_jName.setEnabled(true);
+ m_jNotes.setEnabled(true);
+ txtMaxdebt.setEnabled(true);
+ txtDiscount.setEnabled(true);
+ txtCurdebt.setEnabled(true);
+ txtCurdate.setEnabled(true);
+ m_jVisible.setEnabled(true);
+ jcard.setEnabled(true);
+ txtFirstName.setEnabled(true);
+ txtLastName.setEnabled(true);
+ txtEmail.setEnabled(true);
+ txtPhone.setEnabled(true);
+ txtPhone2.setEnabled(true);
+ txtFax.setEnabled(true);
+ m_jImage.setEnabled(true);
+ txtAddress.setEnabled(true);
+ txtAddress2.setEnabled(true);
+ txtPostal.setEnabled(true);
+ txtCity.setEnabled(true);
+ txtRegion.setEnabled(true);
+ txtCountry.setEnabled(true);
+ j_mDOB.setEnabled(true);
+ m_jCategory.setEnabled(true);
+ jButton2.setEnabled(true);
+ jButton3.setEnabled(true);
+
+ txtCurdate.repaint();
+ txtCurdebt.repaint();
+ updateDoB();
+ repaint();
+ refresh();
+ }
+
+ /**
+ * Create object
+ *
+ * @return
+ * @throws BasicException
+ */
+ @Override
+ public Object createValue() throws BasicException {
+ Object[] customer = new Object[26];
+ customer[0] = m_oId == null ? UUID.randomUUID().toString() : m_oId;
+ customer[1] = m_jTaxID.getText();
+ customer[2] = m_jSearchkey.getText();
+ customer[3] = m_jName.getText();
+ customer[4] = m_jNotes.getText();
+ customer[5] = m_jVisible.isSelected();
+ customer[6] = Formats.STRING.parseValue(jcard.getText()); // Format to manage NULL values
+ customer[7] = Formats.CURRENCY.parseValue(txtMaxdebt.getText(), 0.0);
+ customer[8] = Formats.TIMESTAMP.parseValue(txtCurdate.getText()); // not saved
+ customer[9] = Formats.CURRENCY.parseValue(txtCurdebt.getText()); // not saved
+ customer[10] = Formats.STRING.parseValue(txtFirstName.getText());
+ customer[11] = Formats.STRING.parseValue(txtLastName.getText());
+ customer[12] = Formats.STRING.parseValue(txtEmail.getText());
+ customer[13] = Formats.STRING.parseValue(txtPhone.getText());
+ customer[14] = Formats.STRING.parseValue(txtPhone2.getText());
+ customer[15] = Formats.STRING.parseValue(txtFax.getText());
+ customer[16] = Formats.STRING.parseValue(txtAddress.getText());
+ customer[17] = Formats.STRING.parseValue(txtAddress2.getText());
+ customer[18] = Formats.STRING.parseValue(txtPostal.getText());
+ customer[19] = Formats.STRING.parseValue(txtCity.getText());
+ customer[20] = Formats.STRING.parseValue(txtRegion.getText());
+ customer[21] = Formats.STRING.parseValue(txtCountry.getText());
+ customer[22] = m_CategoryModel.getSelectedKey();
+ customer[23] = m_jImage.getImage();
+ customer[24] = Formats.TIMESTAMP.parseValue(j_mDOB.getText());
+ customer[25] = Formats.PERCENT.parseValue(txtDiscount.getText());
+
+ return customer;
+ }
+
+ @Override
+ public Component getComponent() {
+ return this;
+ }
+
+// JG 3 Oct 2013 - Customer Transaction List
+ private List getTransactionOfName(String name) {
+
+ // List customerList = new ArrayList<>();
+ try {
+ customerTransactionList = dlSales.getCustomersTransactionList(name);
+ } catch (BasicException ex) {
+ Logger.getLogger(CustomersView.class.getName()).log(Level.SEVERE, null, ex);
+ }
+
+ txtCurdate.repaint();
+ txtCurdebt.repaint();
+ repaint();
+ refresh();
+
+ return customerTransactionList;
+ }
+
+ class TransactionTableModel extends AbstractTableModel {
+
+ List transactionList;
+ String[] columnNames = {"TicketID", "Date", "Product", "Quantity", "Total"};
+ public Double Tamount;
+
+ public TransactionTableModel(List list) {
+ transactionList = list;
+ }
+
+ @Override
+ public int getColumnCount() {
+ return 5;
+ }
+
+ @Override
+ public int getRowCount() {
+ return transactionList.size();
+ }
+
+ // this method is called to set the value of each cell
+ @Override
+ public Object getValueAt(int row, int column) {
+ CustomerTransaction customerTransaction = transactionList.get(row);
+ switch (column) {
+
+ case 0:
+ return customerTransaction.getTicketId();
+ case 1:
+ Date transactionDate = customerTransaction.getTransactionDate();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
+ String formattedDate = sdf.format(transactionDate);
+ return formattedDate;
+ case 2:
+ return customerTransaction.getProductName();
+ case 3:
+ return customerTransaction.getUnit();
+ case 4:
+ return Formats.CURRENCY.formatValue(customerTransaction.getTotal()) + " ";
+ default:
+ return "";
+
+ }
+ }
+
+ @Override
+ public String getColumnName(int col) {
+ return columnNames[col];
+ }
+
+// Double Tamount;
+// Double amountT = amount;
+// Tamount = amountT + amount;
+// amountT = null;
+//System.out.println(Tamount);
+//txtTurnover.setText(Tamount.toString());
+//
+// public Object GetData(TransactionTableModel jTable1, int row, int column){
+// txtTurnover.setText(jTable1.GetData(jTable1, row, 4).toString());
+// Double amountT;
+// DecimalFormat dfT = new DecimalFormat("#.##");
+// String famountT;
+// famountT = dfT.format(amountT);
+// return jTable1.GetData(jTable1, row, column);
+// }
+// public void SetData(TransactionTableModel jTable1, int row, int column) {
+// jTable1.GetData(jTable1, row, 4).toString();
+// }
+ }
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
+ */
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ jLabel7 = new javax.swing.JLabel();
+ m_jTaxID = new javax.swing.JTextField();
+ jLabel8 = new javax.swing.JLabel();
+ m_jSearchkey = new javax.swing.JTextField();
+ jLabel3 = new javax.swing.JLabel();
+ m_jName = new javax.swing.JTextField();
+ jLabel5 = new javax.swing.JLabel();
+ jcard = new javax.swing.JTextField();
+ jButton2 = new javax.swing.JButton();
+ jButton3 = new javax.swing.JButton();
+ jLabel9 = new javax.swing.JLabel();
+ m_jCategory = new javax.swing.JComboBox();
+ jLabel4 = new javax.swing.JLabel();
+ jLabel1 = new javax.swing.JLabel();
+ txtMaxdebt = new javax.swing.JTextField();
+ jLabel2 = new javax.swing.JLabel();
+ txtCurdebt = new javax.swing.JTextField();
+ jLabel6 = new javax.swing.JLabel();
+ txtCurdate = new javax.swing.JTextField();
+ jTabbedPane1 = new javax.swing.JTabbedPane();
+ jPanel1 = new javax.swing.JPanel();
+ jLabel19 = new javax.swing.JLabel();
+ txtFirstName = new javax.swing.JTextField();
+ jLabel15 = new javax.swing.JLabel();
+ txtLastName = new javax.swing.JTextField();
+ jLabel16 = new javax.swing.JLabel();
+ txtEmail = new javax.swing.JTextField();
+ jLabel17 = new javax.swing.JLabel();
+ txtPhone = new javax.swing.JTextField();
+ jLabel18 = new javax.swing.JLabel();
+ txtPhone2 = new javax.swing.JTextField();
+ jLabel14 = new javax.swing.JLabel();
+ txtFax = new javax.swing.JTextField();
+ jLabel26 = new javax.swing.JLabel();
+ m_jShowDoB = new javax.swing.JTextField();
+ btnDoB = new javax.swing.JButton();
+ j_mDOB = new javax.swing.JTextField();
+ jAge = new javax.swing.JTextField();
+ jLabel11 = new javax.swing.JLabel();
+ jPanel2 = new javax.swing.JPanel();
+ jLabel13 = new javax.swing.JLabel();
+ txtAddress = new javax.swing.JTextField();
+ jLabel20 = new javax.swing.JLabel();
+ txtCountry = new javax.swing.JTextField();
+ jLabel21 = new javax.swing.JLabel();
+ txtAddress2 = new javax.swing.JTextField();
+ jLabel22 = new javax.swing.JLabel();
+ txtPostal = new javax.swing.JTextField();
+ jLabel23 = new javax.swing.JLabel();
+ txtCity = new javax.swing.JTextField();
+ jLabel24 = new javax.swing.JLabel();
+ txtRegion = new javax.swing.JTextField();
+ jPanel5 = new javax.swing.JPanel();
+ m_jImage = new uk.chromis.data.gui.JImageEditor();
+ jPanel3 = new javax.swing.JPanel();
+ jScrollPane1 = new javax.swing.JScrollPane();
+ m_jNotes = new javax.swing.JTextArea();
+ txtTurnover = new javax.swing.JTextField();
+ jLabel10 = new javax.swing.JLabel();
+ m_jVisible = new eu.hansolo.custom.SteelCheckBox();
+ jLabel12 = new javax.swing.JLabel();
+ txtDiscount = new javax.swing.JTextField();
+
+ jLabel7.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel7.setText(AppLocal.getIntString("label.taxid")); // NOI18N
+ jLabel7.setMaximumSize(new java.awt.Dimension(140, 25));
+ jLabel7.setMinimumSize(new java.awt.Dimension(140, 25));
+ jLabel7.setPreferredSize(new java.awt.Dimension(140, 25));
+
+ m_jTaxID.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel8.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
+ jLabel8.setText(AppLocal.getIntString("label.searchkey")); // NOI18N
+
+ m_jSearchkey.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel3.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel3.setText(AppLocal.getIntString("label.name")); // NOI18N
+ jLabel3.setMaximumSize(new java.awt.Dimension(140, 25));
+ jLabel3.setMinimumSize(new java.awt.Dimension(140, 25));
+ jLabel3.setPreferredSize(new java.awt.Dimension(140, 25));
+
+ m_jName.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel5.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel5.setText(AppLocal.getIntString("label.card")); // NOI18N
+ jLabel5.setMaximumSize(new java.awt.Dimension(140, 25));
+ jLabel5.setMinimumSize(new java.awt.Dimension(140, 25));
+ jLabel5.setPreferredSize(new java.awt.Dimension(140, 25));
+
+ jcard.setEditable(false);
+ jcard.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/encrypted.png"))); // NOI18N
+ java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N
+ jButton2.setToolTipText(bundle.getString("tiptext.createkey")); // NOI18N
+ jButton2.setMaximumSize(new java.awt.Dimension(64, 32));
+ jButton2.setMinimumSize(new java.awt.Dimension(64, 32));
+ jButton2.setPreferredSize(new java.awt.Dimension(64, 32));
+ jButton2.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jButton2ActionPerformed(evt);
+ }
+ });
+
+ jButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/fileclose.png"))); // NOI18N
+ jButton3.setToolTipText(bundle.getString("tiptext.clearkey")); // NOI18N
+ jButton3.setMaximumSize(new java.awt.Dimension(64, 32));
+ jButton3.setMinimumSize(new java.awt.Dimension(64, 32));
+ jButton3.setPreferredSize(new java.awt.Dimension(64, 32));
+ jButton3.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jButton3ActionPerformed(evt);
+ }
+ });
+
+ jLabel9.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel9.setText(AppLocal.getIntString("label.custtaxcategory")); // NOI18N
+ jLabel9.setMaximumSize(new java.awt.Dimension(140, 25));
+ jLabel9.setMinimumSize(new java.awt.Dimension(140, 25));
+ jLabel9.setPreferredSize(new java.awt.Dimension(140, 25));
+
+ m_jCategory.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel4.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel4.setText(AppLocal.getIntString("label.visible")); // NOI18N
+ jLabel4.setMaximumSize(new java.awt.Dimension(140, 25));
+ jLabel4.setMinimumSize(new java.awt.Dimension(140, 25));
+ jLabel4.setPreferredSize(new java.awt.Dimension(140, 25));
+
+ jLabel1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel1.setText(AppLocal.getIntString("label.maxdebt")); // NOI18N
+ jLabel1.setMaximumSize(new java.awt.Dimension(140, 25));
+ jLabel1.setMinimumSize(new java.awt.Dimension(140, 25));
+ jLabel1.setPreferredSize(new java.awt.Dimension(140, 25));
+
+ txtMaxdebt.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ txtMaxdebt.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
+
+ jLabel2.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel2.setText(AppLocal.getIntString("label.curdebt")); // NOI18N
+ jLabel2.setMaximumSize(new java.awt.Dimension(140, 25));
+ jLabel2.setMinimumSize(new java.awt.Dimension(140, 25));
+ jLabel2.setPreferredSize(new java.awt.Dimension(140, 25));
+
+ txtCurdebt.setEditable(false);
+ txtCurdebt.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ txtCurdebt.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
+
+ jLabel6.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+ jLabel6.setText(AppLocal.getIntString("label.curdate")); // NOI18N
+
+ txtCurdate.setEditable(false);
+ txtCurdate.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ txtCurdate.setHorizontalAlignment(javax.swing.JTextField.CENTER);
+
+ jTabbedPane1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jPanel1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel19.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel19.setText(AppLocal.getIntString("label.firstname")); // NOI18N
+ jLabel19.setAlignmentX(0.5F);
+
+ txtFirstName.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel15.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel15.setText(AppLocal.getIntString("label.lastname")); // NOI18N
+
+ txtLastName.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel16.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel16.setText(AppLocal.getIntString("label.email")); // NOI18N
+
+ txtEmail.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel17.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel17.setText(AppLocal.getIntString("label.phone")); // NOI18N
+
+ txtPhone.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel18.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel18.setText(AppLocal.getIntString("label.phone2")); // NOI18N
+
+ txtPhone2.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel14.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel14.setText(AppLocal.getIntString("label.fax")); // NOI18N
+
+ txtFax.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel26.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel26.setText(AppLocal.getIntString("label.dob")); // NOI18N
+
+ m_jShowDoB.setEditable(false);
+ m_jShowDoB.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
+ m_jShowDoB.setDisabledTextColor(new java.awt.Color(0, 0, 0));
+
+ btnDoB.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/date.png"))); // NOI18N
+ btnDoB.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ btnDoBActionPerformed(evt);
+ }
+ });
+
+ j_mDOB.setEditable(false);
+
+ jAge.setEditable(false);
+
+ jLabel11.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel11.setText(bundle.getString("label.age")); // NOI18N
+
+ javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
+ jPanel1.setLayout(jPanel1Layout);
+ jPanel1Layout.setHorizontalGroup(
+ jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jLabel26, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel11, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(jAge)
+ .addComponent(m_jShowDoB, javax.swing.GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(btnDoB, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(j_mDOB, javax.swing.GroupLayout.DEFAULT_SIZE, 151, Short.MAX_VALUE))
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(jLabel15, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(txtLastName, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(jLabel16, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(txtEmail, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(jLabel19, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(txtFirstName, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addComponent(jLabel14, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(txtFax, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jLabel17, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel18, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(txtPhone2, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(txtPhone, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE))))
+ .addGap(0, 0, Short.MAX_VALUE)))
+ .addContainerGap())
+ );
+ jPanel1Layout.setVerticalGroup(
+ jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel1Layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel19, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(txtFirstName, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel15, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(txtLastName, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(jLabel26, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(btnDoB, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 28, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(m_jShowDoB, javax.swing.GroupLayout.Alignment.TRAILING))
+ .addComponent(j_mDOB))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(jAge, javax.swing.GroupLayout.DEFAULT_SIZE, 28, Short.MAX_VALUE)
+ .addComponent(jLabel11, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(txtEmail, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel16, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel17, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(txtPhone, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel18, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(txtPhone2, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(txtFax, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel14, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGap(27, 27, 27))
+ );
+
+ jTabbedPane1.addTab(AppLocal.getIntString("label.contact"), jPanel1); // NOI18N
+
+ jLabel13.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel13.setText(AppLocal.getIntString("label.address")); // NOI18N
+
+ txtAddress.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel20.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel20.setText(AppLocal.getIntString("label.country")); // NOI18N
+
+ txtCountry.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel21.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel21.setText(AppLocal.getIntString("label.address2")); // NOI18N
+
+ txtAddress2.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel22.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel22.setText(AppLocal.getIntString("label.postal")); // NOI18N
+
+ txtPostal.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel23.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel23.setText(AppLocal.getIntString("label.city")); // NOI18N
+
+ txtCity.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ jLabel24.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel24.setText(AppLocal.getIntString("label.region")); // NOI18N
+
+ txtRegion.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
+ jPanel2.setLayout(jPanel2Layout);
+ jPanel2Layout.setHorizontalGroup(
+ jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel2Layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(jLabel20, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel24, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel23, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel21, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel13, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGap(18, 18, 18)
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(txtCity, javax.swing.GroupLayout.DEFAULT_SIZE, 186, Short.MAX_VALUE)
+ .addComponent(txtAddress)
+ .addComponent(txtAddress2)
+ .addComponent(txtRegion)
+ .addComponent(txtCountry))
+ .addGap(18, 18, 18)
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jLabel22, javax.swing.GroupLayout.PREFERRED_SIZE, 84, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(txtPostal, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addContainerGap(104, Short.MAX_VALUE))
+ );
+ jPanel2Layout.setVerticalGroup(
+ jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel2Layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel13, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(txtAddress, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel2Layout.createSequentialGroup()
+ .addGap(29, 29, 29)
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel23, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(txtCity, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel22, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel24, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(txtRegion, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(txtPostal, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel20, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(txtCountry, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel21, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(txtAddress2, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addGap(19, 19, 19))
+ );
+
+ jTabbedPane1.addTab(AppLocal.getIntString("label.location"), jPanel2); // NOI18N
+
+ m_jImage.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+
+ javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
+ jPanel5.setLayout(jPanel5Layout);
+ jPanel5Layout.setHorizontalGroup(
+ jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel5Layout.createSequentialGroup()
+ .addGap(142, 142, 142)
+ .addComponent(m_jImage, javax.swing.GroupLayout.PREFERRED_SIZE, 250, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap(143, Short.MAX_VALUE))
+ );
+ jPanel5Layout.setVerticalGroup(
+ jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel5Layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(m_jImage, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
+
+ jTabbedPane1.addTab(bundle.getString("label.photo"), jPanel5); // NOI18N
+
+ m_jNotes.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jScrollPane1.setViewportView(m_jNotes);
+
+ javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
+ jPanel3.setLayout(jPanel3Layout);
+ jPanel3Layout.setHorizontalGroup(
+ jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel3Layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 458, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap(67, Short.MAX_VALUE))
+ );
+ jPanel3Layout.setVerticalGroup(
+ jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel3Layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 246, Short.MAX_VALUE)
+ .addContainerGap())
+ );
+
+ jTabbedPane1.addTab(AppLocal.getIntString("label.notes"), jPanel3); // NOI18N
+
+ txtTurnover.setEditable(false);
+ txtTurnover.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ txtTurnover.setHorizontalAlignment(javax.swing.JTextField.CENTER);
+
+ jLabel10.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+ jLabel10.setText(AppLocal.getIntString("label.customerTotalSales")); // NOI18N
+
+ m_jVisible.setSelected(true);
+ m_jVisible.setText(" ");
+
+ jLabel12.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel12.setText(AppLocal.getIntString("label.discount")); // NOI18N
+ jLabel12.setMaximumSize(new java.awt.Dimension(140, 25));
+ jLabel12.setMinimumSize(new java.awt.Dimension(140, 25));
+ jLabel12.setPreferredSize(new java.awt.Dimension(140, 25));
+
+ txtDiscount.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ txtDiscount.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ this.setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(jLabel9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addComponent(jLabel12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(m_jCategory, javax.swing.GroupLayout.PREFERRED_SIZE, 179, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(m_jTaxID, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(18, 18, 18)
+ .addComponent(jLabel8, javax.swing.GroupLayout.PREFERRED_SIZE, 87, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(m_jSearchkey, javax.swing.GroupLayout.PREFERRED_SIZE, 136, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(m_jName, javax.swing.GroupLayout.PREFERRED_SIZE, 325, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(m_jVisible, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGroup(layout.createSequentialGroup()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(txtMaxdebt, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(txtCurdebt, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(txtCurdate, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(txtDiscount, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(txtTurnover, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(jcard, javax.swing.GroupLayout.PREFERRED_SIZE, 169, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(18, 18, 18)
+ .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 540, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap())
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel8)
+ .addComponent(m_jSearchkey, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(m_jTaxID, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(m_jName, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jcard, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel4, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(m_jVisible, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(m_jCategory, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(txtMaxdebt, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel6, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(jLabel10, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addGroup(layout.createSequentialGroup()
+ .addGap(7, 7, 7)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(jLabel12, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(txtDiscount))))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(txtCurdebt, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(txtCurdate, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(txtTurnover, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 297, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
+ }// //GEN-END:initComponents
+
+ private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
+ if (JOptionPane.showConfirmDialog(this, AppLocal.getIntString("message.cardnew"), AppLocal.getIntString("title.editor"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
+ jcard.setText("c" + StringUtils.getCardNumber());
+ m_Dirty.setDirty(true);
+ }
+ }//GEN-LAST:event_jButton2ActionPerformed
+
+ private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
+ if (JOptionPane.showConfirmDialog(this, AppLocal.getIntString("message.cardremove"), AppLocal.getIntString("title.editor"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
+ jcard.setText(null);
+ m_Dirty.setDirty(true);
+ }
+ }//GEN-LAST:event_jButton3ActionPerformed
+
+ private void btnDoBActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDoBActionPerformed
+ Date date;
+ try {
+ date = (Date) Formats.TIMESTAMP.parseValue(j_mDOB.getText());
+ } catch (BasicException e) {
+ date = Calendar.getInstance().getTime();
+ }
+
+ date = JCalendarDialog.showCalendar(this, date);
+ if (date != null) {
+ if (IsValidDate(date)) {
+ j_mDOB.setText(Formats.TIMESTAMP.formatValue(date));
+ String str = String.format("%1$s %2$tB %2$td, %2$tY", "", date);
+ m_jShowDoB.setText(str);
+ } else {
+ MessageInf msg = new MessageInf(MessageInf.SGN_WARNING, AppLocal.getIntString("message.invaliddobdate"));
+ msg.show(this);
+ }
+ }
+ }//GEN-LAST:event_btnDoBActionPerformed
+
+ private void updateDoB() {
+ m_Dirty.setDirty(true);
+ try {
+ if (j_mDOB.getText().equals(null) || j_mDOB.getText().equals("")) {
+ m_jShowDoB.setText("");
+ jAge.setText("");
+ } else {
+ Date date = (Date) Formats.TIMESTAMP.parseValue(j_mDOB.getText());
+ String str = String.format("%1$s %2$tB %2$td, %2$tY", "", date);
+ m_jShowDoB.setText(str);
+ Period age = getAge(date);
+ String Age = " " + age.getYears() + " yrs " + age.getMonths() + " mths";
+ jAge.setText(Age);
+ }
+ } catch (BasicException ex) {
+ Logger.getLogger(CustomersView.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+
+ private boolean IsValidDate(Date dateToValidate) {
+ if (dateToValidate == null) {
+ return false;
+ }
+ Date today = truncateTime(Calendar.getInstance().getTime());
+ Date dob = truncateTime(dateToValidate);
+ if (dob.after(today) || dob.equals(today)) {
+ return false;
+ }
+ return true;
+ }
+
+ private Period getAge(Date dob) {
+ LocalDate today = LocalDate.now();
+ LocalDate date = dob.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
+ Period p = Period.between(date, today);
+ return p;
+ }
+
+ private static Date truncateTime(Date date) {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+ try {
+ date = sdf.parse(sdf.format(date));
+ } catch (ParseException ex) {
+ Logger.getLogger(CustomersView.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ return date;
+ }
+
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JButton btnDoB;
+ private javax.swing.JTextField jAge;
+ private javax.swing.JButton jButton2;
+ private javax.swing.JButton jButton3;
+ private javax.swing.JLabel jLabel1;
+ private javax.swing.JLabel jLabel10;
+ private javax.swing.JLabel jLabel11;
+ private javax.swing.JLabel jLabel12;
+ private javax.swing.JLabel jLabel13;
+ private javax.swing.JLabel jLabel14;
+ private javax.swing.JLabel jLabel15;
+ private javax.swing.JLabel jLabel16;
+ private javax.swing.JLabel jLabel17;
+ private javax.swing.JLabel jLabel18;
+ private javax.swing.JLabel jLabel19;
+ private javax.swing.JLabel jLabel2;
+ private javax.swing.JLabel jLabel20;
+ private javax.swing.JLabel jLabel21;
+ private javax.swing.JLabel jLabel22;
+ private javax.swing.JLabel jLabel23;
+ private javax.swing.JLabel jLabel24;
+ private javax.swing.JLabel jLabel26;
+ private javax.swing.JLabel jLabel3;
+ private javax.swing.JLabel jLabel4;
+ private javax.swing.JLabel jLabel5;
+ private javax.swing.JLabel jLabel6;
+ private javax.swing.JLabel jLabel7;
+ private javax.swing.JLabel jLabel8;
+ private javax.swing.JLabel jLabel9;
+ private javax.swing.JPanel jPanel1;
+ private javax.swing.JPanel jPanel2;
+ private javax.swing.JPanel jPanel3;
+ private javax.swing.JPanel jPanel5;
+ private javax.swing.JScrollPane jScrollPane1;
+ private javax.swing.JTabbedPane jTabbedPane1;
+ private javax.swing.JTextField j_mDOB;
+ private javax.swing.JTextField jcard;
+ private javax.swing.JComboBox m_jCategory;
+ private uk.chromis.data.gui.JImageEditor m_jImage;
+ private javax.swing.JTextField m_jName;
+ private javax.swing.JTextArea m_jNotes;
+ private javax.swing.JTextField m_jSearchkey;
+ private javax.swing.JTextField m_jShowDoB;
+ private javax.swing.JTextField m_jTaxID;
+ private eu.hansolo.custom.SteelCheckBox m_jVisible;
+ private javax.swing.JTextField txtAddress;
+ private javax.swing.JTextField txtAddress2;
+ private javax.swing.JTextField txtCity;
+ private javax.swing.JTextField txtCountry;
+ private javax.swing.JTextField txtCurdate;
+ private javax.swing.JTextField txtCurdebt;
+ private javax.swing.JTextField txtDiscount;
+ private javax.swing.JTextField txtEmail;
+ private javax.swing.JTextField txtFax;
+ private javax.swing.JTextField txtFirstName;
+ private javax.swing.JTextField txtLastName;
+ private javax.swing.JTextField txtMaxdebt;
+ private javax.swing.JTextField txtPhone;
+ private javax.swing.JTextField txtPhone2;
+ private javax.swing.JTextField txtPostal;
+ private javax.swing.JTextField txtRegion;
+ private javax.swing.JTextField txtTurnover;
+ // End of variables declaration//GEN-END:variables
+
+}
diff --git a/src-pos/uk/chromis/pos/customers/DataLogicCustomers.java b/src-pos/uk/chromis/pos/customers/DataLogicCustomers.java
index 61567a8c..3a51ade4 100644
--- a/src-pos/uk/chromis/pos/customers/DataLogicCustomers.java
+++ b/src-pos/uk/chromis/pos/customers/DataLogicCustomers.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -66,7 +66,7 @@ public class DataLogicCustomers extends BeanFactoryDataSingle {
*
* @param s
*/
- @Override
+ @Override
public void init(Session s) {
this.s = s;
tcustomers = new TableDefinition(s, "CUSTOMERS", new String[]{
@@ -93,7 +93,9 @@ public void init(Session s) {
"REGION",
"COUNTRY",
"TAXCATEGORY",
- "IMAGE"}, new String[]{
+ "IMAGE",
+ "DOB",
+ "DISCOUNT"}, new String[]{
"ID",
AppLocal.getIntString("label.taxid"),
AppLocal.getIntString("label.searchkey"),
@@ -117,7 +119,10 @@ public void init(Session s) {
AppLocal.getIntString("label.region"),
AppLocal.getIntString("label.country"),
"TAXCATEGORY",
- "IMAGE"}, new Datas[]{
+ "IMAGE",
+ "DOB",
+ AppLocal.getIntString("label.discount")
+ }, new Datas[]{
Datas.STRING,
Datas.STRING,
Datas.STRING,
@@ -141,7 +146,9 @@ public void init(Session s) {
Datas.STRING,
Datas.STRING,
Datas.STRING,
- Datas.IMAGE}, new Formats[]{
+ Datas.IMAGE,
+ Datas.TIMESTAMP,
+ Datas.DOUBLE}, new Formats[]{
Formats.STRING,
Formats.STRING,
Formats.STRING,
@@ -165,16 +172,18 @@ public void init(Session s) {
Formats.STRING,
Formats.STRING,
Formats.STRING,
- Formats.NULL}, new int[]{0}
- );
+ Formats.NULL,
+ Formats.TIMESTAMP,
+ Formats.PERCENT}, new int[]{0}," LOWER(NAME) ");
}
+
/**
*
* @return customer data
*/
public SentenceList getCustomerList() {
- return new StaticSentence(s, new QBFBuilder("SELECT ID, TAXID, SEARCHKEY, NAME, POSTAL, EMAIL, PHONE FROM CUSTOMERS WHERE VISIBLE = " + s.DB.TRUE() + " AND ?(QBF_FILTER) ORDER BY NAME", new String[]{"TAXID", "SEARCHKEY", "NAME", "POSTAL", "PHONE", "EMAIL"}), new SerializerWriteBasic(new Datas[]{
+ return new StaticSentence(s, new QBFBuilder("SELECT ID, TAXID, SEARCHKEY, NAME, POSTAL, EMAIL, PHONE FROM CUSTOMERS WHERE VISIBLE = " + s.DB.TRUE() + " AND ?(QBF_FILTER) ORDER BY LOWER (NAME)", new String[]{"TAXID", "SEARCHKEY", "NAME", "POSTAL", "PHONE", "EMAIL"}), new SerializerWriteBasic(new Datas[]{
Datas.OBJECT, Datas.STRING,
Datas.OBJECT, Datas.STRING,
Datas.OBJECT, Datas.STRING,
@@ -280,7 +289,7 @@ public int execInTransaction(Object params) throws BasicException {
*
* @return assign a table to a customer reservation (restaurant mode)
*/
- public final TableDefinition getTableCustomers() {
+ public final TableDefinition getTableCustomers() {
return tcustomers;
}
}
diff --git a/src-pos/uk/chromis/pos/customers/JCustomerFinder.form b/src-pos/uk/chromis/pos/customers/JCustomerFinder.form
index 79ef7033..97d80483 100644
--- a/src-pos/uk/chromis/pos/customers/JCustomerFinder.form
+++ b/src-pos/uk/chromis/pos/customers/JCustomerFinder.form
@@ -354,7 +354,9 @@
-
+
+
+
@@ -376,7 +378,9 @@
-
+
+
+
diff --git a/src-pos/uk/chromis/pos/customers/JCustomerFinder.java b/src-pos/uk/chromis/pos/customers/JCustomerFinder.java
index d1b93236..1cef1ebe 100644
--- a/src-pos/uk/chromis/pos/customers/JCustomerFinder.java
+++ b/src-pos/uk/chromis/pos/customers/JCustomerFinder.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -367,7 +367,7 @@ private void initComponents() {
jcmdReset.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jcmdReset.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/reload.png"))); // NOI18N
jcmdReset.setText(bundle.getString("button.reset")); // NOI18N
- jcmdReset.setToolTipText("Clear Filter");
+ jcmdReset.setToolTipText(bundle.getString("tiptext.clearfilter")); // NOI18N
jcmdReset.setActionCommand("Reset ");
jcmdReset.setFocusable(false);
jcmdReset.addActionListener(new java.awt.event.ActionListener() {
@@ -381,7 +381,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jcmdExecute.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jcmdExecute.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/ok.png"))); // NOI18N
jcmdExecute.setText(AppLocal.getIntString("button.executefilter")); // NOI18N
- jcmdExecute.setToolTipText("Execute Filter");
+ jcmdExecute.setToolTipText(bundle.getString("tiptext.executefilter")); // NOI18N
jcmdExecute.setFocusPainted(false);
jcmdExecute.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
diff --git a/src-pos/uk/chromis/pos/customers/TicketSelector.java b/src-pos/uk/chromis/pos/customers/TicketSelector.java
index 84ec9577..a2b86246 100644
--- a/src-pos/uk/chromis/pos/customers/TicketSelector.java
+++ b/src-pos/uk/chromis/pos/customers/TicketSelector.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/dialogs/JOpenWarningDlg.java b/src-pos/uk/chromis/pos/dialogs/JOpenWarningDlg.java
new file mode 100644
index 00000000..a5705093
--- /dev/null
+++ b/src-pos/uk/chromis/pos/dialogs/JOpenWarningDlg.java
@@ -0,0 +1,158 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016
+// http://www.chromis.co.uk
+//
+// This file is part of Chromis POS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see
+//
+package uk.chromis.pos.dialogs;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import javax.swing.BorderFactory;
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JTextArea;
+import net.miginfocom.swing.MigLayout;
+import uk.chromis.pos.forms.AppLocal;
+
+/**
+ *
+ * @author John Lewis
+ */
+public class JOpenWarningDlg extends JDialog {
+
+ static final Dimension SCREEN_DIMENSION = Toolkit.getDefaultToolkit().getScreenSize();
+ public static final int RETRY = 3;
+ public static final int EXIT = 2;
+ public static final int CONFIG = 1;
+ public static int CHOICE = 0;
+ private Font font;
+ private int height;
+
+ public JOpenWarningDlg(String eMessage, String message, boolean bRetry, boolean bConfig) {
+
+ JButton btnRetry = new JButton(AppLocal.getIntString("Button.Retry"));
+ btnRetry.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ CHOICE = RETRY;
+ dispose();
+ }
+ });
+
+ JButton btnExit = new JButton(AppLocal.getIntString("Button.Exit"));
+ btnExit.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ CHOICE = EXIT;
+ dispose();
+ }
+ });
+
+ JButton btnConfig = new JButton(AppLocal.getIntString("Button.Configuration"));
+ btnConfig.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ CHOICE = CONFIG;
+ dispose();
+ }
+ });
+
+ int size = (eMessage.length() / 38) + 1;
+ height = 350;
+ if (!bRetry && !bConfig) {
+ height = 350 + ((size - 5) * 10);
+ }
+
+ MigLayout layout = new MigLayout("", "[fill]");
+ JPanel mainPanel = new JPanel(layout);
+ JPanel dialogPanel = new JPanel();
+ JPanel errorPanel = new JPanel();
+ JPanel btnPanel = new JPanel();
+
+ JLabel logoLabel = new JLabel();
+ logoLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/chromis_main.png")));
+ mainPanel.add(logoLabel, "wrap");
+
+ dialogPanel.setBackground(Color.white);
+ errorPanel.setBackground(Color.white);
+
+ JTextArea eMessageArea = new JTextArea();
+ eMessageArea.setEditable(false);
+ eMessageArea.setColumns(38);
+ eMessageArea.setRows(2);
+ eMessageArea.setText(eMessage);
+ eMessageArea.setLineWrap(true);
+ eMessageArea.setWrapStyleWord(true);
+
+
+ font = new Font("Arial", Font.BOLD, 12);
+ eMessageArea.setFont(font);
+ eMessageArea.setDisabledTextColor(new java.awt.Color(255, 0, 0));
+ eMessageArea.setEnabled(false);
+ eMessageArea.setFocusable(false);
+ eMessageArea.setOpaque(false);
+ eMessageArea.setRequestFocusEnabled(false);
+ errorPanel.add(eMessageArea);
+ errorPanel.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Color.BLACK));
+ mainPanel.add(errorPanel, "wrap");
+
+ JTextArea messageArea = new JTextArea();
+ messageArea.setEditable(false);
+ messageArea.setColumns(38);
+ messageArea.setRows(4);
+ messageArea.setText(message);
+ messageArea.setLineWrap(true);
+ messageArea.setWrapStyleWord(true);
+
+ font = new Font("Arial", Font.BOLD, 12);
+ messageArea.setFont(font);
+ messageArea.setDisabledTextColor(new java.awt.Color(0, 0, 255));
+ messageArea.setEnabled(false);
+ messageArea.setFocusable(false);
+ messageArea.setOpaque(false);
+ messageArea.setRequestFocusEnabled(false);
+ dialogPanel.add(messageArea);
+ dialogPanel.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Color.BLACK));
+ mainPanel.add(dialogPanel, "wrap");
+
+ JButton btnImport = new JButton("Import");
+ if (bRetry) {
+ btnPanel.add(btnRetry, "split,right, width 100!");
+ }
+ if (bConfig) {
+ btnPanel.add(btnConfig, " width 100!");
+ }
+ btnPanel.add(btnExit, " width 100!");
+ mainPanel.add(btnPanel, "right, wrap");
+ mainPanel.add(new JLabel(), "wrap");
+ mainPanel.setBorder(BorderFactory.createMatteBorder(3, 3, 3, 3, Color.BLACK));
+ getContentPane().add(mainPanel);
+
+ int dialogWidth = SCREEN_DIMENSION.width / 4;
+ int dialogHeight = SCREEN_DIMENSION.height / 4;
+ int dialogX = SCREEN_DIMENSION.width / 2 - dialogWidth / 2;
+ int dialogY = SCREEN_DIMENSION.height / 2 - dialogHeight / 2;
+
+ setBounds(dialogX, dialogY, 450, height);
+ setUndecorated(true);
+ CHOICE = 0;
+ }
+
+}
diff --git a/src-pos/uk/chromis/pos/dialogs/JProcessingDlg.java b/src-pos/uk/chromis/pos/dialogs/JProcessingDlg.java
new file mode 100644
index 00000000..ea41bbbb
--- /dev/null
+++ b/src-pos/uk/chromis/pos/dialogs/JProcessingDlg.java
@@ -0,0 +1,303 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016
+// http://www.chromis.co.uk
+//
+// This file is part of Chromis POS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see
+//
+package uk.chromis.pos.dialogs;
+
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.Toolkit;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.io.IOException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.sql.Connection;
+import java.sql.Driver;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.logging.FileHandler;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import java.util.logging.SimpleFormatter;
+import javax.swing.BorderFactory;
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JProgressBar;
+import javax.swing.JTextArea;
+import liquibase.Liquibase;
+import liquibase.database.Database;
+import liquibase.database.DatabaseFactory;
+import liquibase.database.jvm.JdbcConnection;
+import liquibase.exception.DatabaseException;
+import liquibase.exception.LiquibaseException;
+import liquibase.resource.ClassLoaderResourceAccessor;
+import net.miginfocom.swing.MigLayout;
+import uk.chromis.pos.forms.AppConfig;
+import uk.chromis.pos.forms.DriverWrapper;
+import uk.chromis.pos.util.AltEncrypter;
+
+/**
+ *
+ * @author John
+ */
+public class JProcessingDlg extends JDialog {
+
+ static final Dimension SCREEN_DIMENSION = Toolkit.getDefaultToolkit().getScreenSize();
+ public static final int YES = 0;
+ public static final int NO = -1;
+ public static int CHOICE = NO;
+ public static String ERRORMSG = "";
+
+ public static Boolean DBFAILED = true;
+ private Connection con;
+ private JProgressBar pb;
+ PreparedStatement stmt2;
+
+ public JProcessingDlg(String message, Boolean create, String changeLog) {
+
+ JButton btnNo = new JButton("No");
+ btnNo.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ CHOICE = NO;
+ dispose();
+ }
+ });
+
+ JButton btnYes = new JButton("Yes");
+ btnYes.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ Thread workThread = new Thread() {
+ public void run() {
+ btnYes.setEnabled(false);
+ btnNo.setEnabled(false);
+ performAction(changeLog);
+ CHOICE = YES;
+ dispose();
+ }
+ };
+ workThread.start();
+
+ pb.setIndeterminate(true);
+ pb.setStringPainted(true);
+ if (create) {
+ pb.setString("Creating Database ..... ");
+ } else {
+ pb.setString("Upgrading Database ..... ");
+ }
+ }
+ });
+
+ MigLayout layout = new MigLayout("", "[fill]");
+ JPanel mainPanel = new JPanel(layout);
+ JPanel pbPanel = new JPanel();
+ JPanel dialogPanel = new JPanel();
+ JPanel btnPanel = new JPanel();
+
+ JLabel logoLabel = new JLabel();
+ logoLabel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/chromis_main.png")));
+ mainPanel.add(logoLabel, "wrap");
+
+ dialogPanel.setBackground(Color.white);
+
+ JTextArea messageArea = new JTextArea();
+ messageArea.setEditable(false);
+ messageArea.setColumns(38);
+ messageArea.setRows(4);
+ messageArea.setText(message);
+ messageArea.setLineWrap(true);
+ messageArea.setWrapStyleWord(true);
+
+ Font font = new Font("Arial", Font.BOLD, 12);
+ messageArea.setFont(font);
+ messageArea.setDisabledTextColor(new java.awt.Color(0, 0, 255));
+ messageArea.setEnabled(false);
+ messageArea.setFocusable(false);
+ messageArea.setOpaque(false);
+ messageArea.setRequestFocusEnabled(false);
+ dialogPanel.add(messageArea);
+ dialogPanel.setBorder(BorderFactory.createMatteBorder(1, 1, 1, 1, Color.BLACK));
+ mainPanel.add(dialogPanel);
+
+ pb = new JProgressBar(0, 100);
+ pb.setIndeterminate(false);
+ pb.setStringPainted(true);
+ pb.setString(" ");
+ pb.setSize(480, 20);
+ mainPanel.add(pb, "cell 0 2, growy, wrap");
+
+ JButton btnImport = new JButton("Import");
+ btnPanel.add(btnYes, "split,right, width 100!");
+ btnPanel.add(btnNo, " width 100!");
+ mainPanel.add(btnPanel, "right, wrap");
+ mainPanel.add(new JLabel(), "wrap");
+ mainPanel.setBorder(BorderFactory.createMatteBorder(3, 3, 3, 3, Color.BLACK));
+ getContentPane().add(mainPanel);
+
+ int dialogWidth = SCREEN_DIMENSION.width / 4;
+ int dialogHeight = SCREEN_DIMENSION.height / 4;
+ int dialogX = SCREEN_DIMENSION.width / 2 - dialogWidth / 2;
+ int dialogY = SCREEN_DIMENSION.height / 2 - dialogHeight / 2;
+
+ if (create) {
+ setBounds(dialogX, dialogY, 450, 250);
+ } else {
+ setBounds(dialogX, dialogY, 450, 300);
+ }
+ setUndecorated(true);
+ CHOICE = YES;
+ }
+
+ private void performAction(String changelog) {
+ Logger logger = Logger.getLogger("liquibase");
+ FileHandler fh = null;
+ try {
+ fh = new FileHandler(System.getProperty("user.home") + "/liquibase.log");
+ logger.addHandler(fh);
+ SimpleFormatter formatter = new SimpleFormatter();
+ fh.setFormatter(formatter);
+ } catch (IOException | SecurityException ex) {
+ Logger.getLogger(JProcessingDlg.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ String db_user = (AppConfig.getInstance().getProperty("db.user"));
+ String db_url = (AppConfig.getInstance().getProperty("db.URL"));
+ String db_password = (AppConfig.getInstance().getProperty("db.password"));
+
+ if (db_user != null && db_password != null && db_password.startsWith("crypt:")) {
+ AltEncrypter cypher = new AltEncrypter("cypherkey" + db_user);
+ db_password = cypher.decrypt(db_password.substring(6));
+ }
+
+ Liquibase liquibase = null;
+ try {
+ Connection con = DriverManager.getConnection(db_url, db_user, db_password);
+ ClassLoader cloader = new URLClassLoader(new URL[]{new File(AppConfig.getInstance().getProperty("db.driverlib")).toURI().toURL()});
+ DriverManager.registerDriver(new DriverWrapper((Driver) Class.forName(AppConfig.getInstance().getProperty("db.driver"), true, cloader).newInstance()));
+
+ // lets check if the database has passed new database test
+ try {
+ PreparedStatement stmt2 = con.prepareStatement("SELECT COUNT(*) FROM DATABASECHANGELOG WHERE ID='New Database'");
+ ResultSet rs = stmt2.executeQuery();
+ if (rs.next()) {
+ if (rs.getInt(1) != 0) {
+ changelog = "uk/chromis/pos/liquibase/upgrade/systemupdate.xml";
+ }
+ }
+ } catch (SQLException ex) {
+ }
+// Ensure there are not liquibase locks
+ try {
+ stmt2 = con.prepareStatement("DROP TABLE DATABASECHANGELOGLOCK");
+ stmt2.executeUpdate();
+ } catch (SQLException ex) {
+ }
+
+ Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(DriverManager.getConnection(db_url, db_user, db_password)));
+ liquibase = new Liquibase(changelog, new ClassLoaderResourceAccessor(), database);
+
+ liquibase.update("implement");
+
+ DBFAILED = false;
+
+ } catch (DatabaseException | MalformedURLException | SQLException | ClassNotFoundException | InstantiationException | IllegalAccessException ex) {
+ Logger.getLogger(JProcessingDlg.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (LiquibaseException ex) {
+ String txt = ex.getMessage();
+ if (ex.getCause() != null) {
+ txt = ex.getCause().toString().replace("liquibase.exception.DatabaseException:", "");
+ }
+ ERRORMSG = txt;
+ logger.info(ex.getMessage());
+ } finally {
+ if (con != null) {
+ try {
+ con.rollback();
+ con.close();
+ } catch (SQLException e) {
+ //nothing to do
+ }
+ }
+ }
+ if (fh != null) {
+ fh.close();
+ }
+ insertMenuEntry(db_user, db_url, db_password); //insert in to menu.root
+ }
+
+ private void insertMenuEntry(String db_user, String db_url, String db_password) {
+ try {
+ Connection con = DriverManager.getConnection(db_url, db_user, db_password);
+ String decodedData = "";
+ Statement stmt = (Statement) con.createStatement();
+ // get the menu from the resources table
+ String SQL = "SELECT * FROM RESOURCES WHERE NAME='Menu.Root'";
+ ResultSet rs = stmt.executeQuery(SQL);
+ while (rs.next()) {
+ byte[] bytesData = rs.getBytes("CONTENT");
+ decodedData = new String(bytesData);
+ }
+ // get the date from the menu entries table
+ SQL = "SELECT * FROM MENUENTRIES ";
+ rs = stmt.executeQuery(SQL);
+ // while we have some entries lets process them
+ while (rs.next()) {
+ // lets check if the entry is in the menu
+ int index1 = decodedData.indexOf(rs.getString("ENTRY"));
+ if (index1 == -1) {
+ StringBuilder sb = new StringBuilder();
+ sb.append(rs.getString("FOLLOWS"));
+ sb.append("\");\n submenu.addPanel(\"");
+ sb.append(rs.getString("GRAPHIC"));
+ sb.append("\", \"");
+ sb.append(rs.getString("TITLE"));
+ sb.append("\", \"");
+ sb.append(rs.getString("ENTRY"));
+ decodedData = decodedData.replaceAll(rs.getString("FOLLOWS"), sb.toString());
+ byte[] bytesData = decodedData.getBytes();
+ String SQL2 = "UPDATE RESOURCES SET CONTENT = ? WHERE NAME = 'Menu.Root' ";
+ PreparedStatement stmt2 = con.prepareStatement(SQL2);
+ stmt2.setBytes(1, bytesData);
+ stmt2.executeUpdate();
+ }
+ }
+
+ SQL = "DELETE FROM MENUENTRIES ";
+ PreparedStatement stmt2 = con.prepareStatement(SQL);
+ stmt2.executeUpdate();
+
+ } catch (SQLException ex) {
+ Logger.getLogger(JProcessingDlg.class.getName()).log(Level.SEVERE, null, ex);
+ } finally {
+ if (con != null) {
+ try {
+ con.close();
+ } catch (SQLException e) {
+ }
+ }
+ }
+ }
+
+}
diff --git a/src-pos/uk/chromis/pos/epm/Break.java b/src-pos/uk/chromis/pos/epm/Break.java
index ceace0d5..d8f8155e 100644
--- a/src-pos/uk/chromis/pos/epm/Break.java
+++ b/src-pos/uk/chromis/pos/epm/Break.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/epm/BreaksInfo.java b/src-pos/uk/chromis/pos/epm/BreaksInfo.java
index 0cbbe091..287d42a2 100644
--- a/src-pos/uk/chromis/pos/epm/BreaksInfo.java
+++ b/src-pos/uk/chromis/pos/epm/BreaksInfo.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/epm/BreaksPanel.java b/src-pos/uk/chromis/pos/epm/BreaksPanel.java
index 0b4ec6ab..e7c739fa 100644
--- a/src-pos/uk/chromis/pos/epm/BreaksPanel.java
+++ b/src-pos/uk/chromis/pos/epm/BreaksPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/epm/BreaksView.java b/src-pos/uk/chromis/pos/epm/BreaksView.java
index f1103a57..77672441 100644
--- a/src-pos/uk/chromis/pos/epm/BreaksView.java
+++ b/src-pos/uk/chromis/pos/epm/BreaksView.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/epm/DataLogicPresenceManagement.java b/src-pos/uk/chromis/pos/epm/DataLogicPresenceManagement.java
index 4432a16d..aef2c163 100644
--- a/src-pos/uk/chromis/pos/epm/DataLogicPresenceManagement.java
+++ b/src-pos/uk/chromis/pos/epm/DataLogicPresenceManagement.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/epm/EmployeeInfo.java b/src-pos/uk/chromis/pos/epm/EmployeeInfo.java
index 42771e8e..3aef0ba7 100644
--- a/src-pos/uk/chromis/pos/epm/EmployeeInfo.java
+++ b/src-pos/uk/chromis/pos/epm/EmployeeInfo.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/epm/EmployeeInfoExt.java b/src-pos/uk/chromis/pos/epm/EmployeeInfoExt.java
index 93d5615f..3413b67f 100644
--- a/src-pos/uk/chromis/pos/epm/EmployeeInfoExt.java
+++ b/src-pos/uk/chromis/pos/epm/EmployeeInfoExt.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/epm/EmployeeRenderer.java b/src-pos/uk/chromis/pos/epm/EmployeeRenderer.java
index 8ff5aa4f..81ce3d58 100644
--- a/src-pos/uk/chromis/pos/epm/EmployeeRenderer.java
+++ b/src-pos/uk/chromis/pos/epm/EmployeeRenderer.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/epm/JEmployeeFinder.java b/src-pos/uk/chromis/pos/epm/JEmployeeFinder.java
index e5143dd9..5e2ecb7a 100644
--- a/src-pos/uk/chromis/pos/epm/JEmployeeFinder.java
+++ b/src-pos/uk/chromis/pos/epm/JEmployeeFinder.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/epm/JPanelEmployeePresence.java b/src-pos/uk/chromis/pos/epm/JPanelEmployeePresence.java
index 53e730d1..2c7a523f 100644
--- a/src-pos/uk/chromis/pos/epm/JPanelEmployeePresence.java
+++ b/src-pos/uk/chromis/pos/epm/JPanelEmployeePresence.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/epm/LeavesInfo.java b/src-pos/uk/chromis/pos/epm/LeavesInfo.java
index 7e9c4347..815a1b0e 100644
--- a/src-pos/uk/chromis/pos/epm/LeavesInfo.java
+++ b/src-pos/uk/chromis/pos/epm/LeavesInfo.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/epm/LeavesPanel.java b/src-pos/uk/chromis/pos/epm/LeavesPanel.java
index 17e9687d..8b9387da 100644
--- a/src-pos/uk/chromis/pos/epm/LeavesPanel.java
+++ b/src-pos/uk/chromis/pos/epm/LeavesPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/epm/LeavesView.java b/src-pos/uk/chromis/pos/epm/LeavesView.java
index b2b8f50e..cb2f29fa 100644
--- a/src-pos/uk/chromis/pos/epm/LeavesView.java
+++ b/src-pos/uk/chromis/pos/epm/LeavesView.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/AboutDialog.form b/src-pos/uk/chromis/pos/forms/AboutDialog.form
new file mode 100644
index 00000000..b49e0932
--- /dev/null
+++ b/src-pos/uk/chromis/pos/forms/AboutDialog.form
@@ -0,0 +1,86 @@
+
+
+
diff --git a/src-pos/uk/chromis/pos/forms/AboutDialog.java b/src-pos/uk/chromis/pos/forms/AboutDialog.java
new file mode 100644
index 00000000..5736f25c
--- /dev/null
+++ b/src-pos/uk/chromis/pos/forms/AboutDialog.java
@@ -0,0 +1,90 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package uk.chromis.pos.forms;
+
+/**
+ *
+ * @author John
+ */
+public class AboutDialog extends javax.swing.JPanel {
+
+
+ /**
+ * Creates new form ConvertDialog
+ */
+ public AboutDialog() {
+ initComponents();
+ // converting.setVisible(false);
+ }
+
+
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
+ */
+ @SuppressWarnings("unchecked")
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ jScrollPane2 = new javax.swing.JScrollPane();
+ jTable1 = new javax.swing.JTable();
+ jLabel3 = new javax.swing.JLabel();
+ jLabel2 = new javax.swing.JLabel();
+
+ jTable1.setModel(new javax.swing.table.DefaultTableModel(
+ new Object [][] {
+ {null, null, null, null},
+ {null, null, null, null},
+ {null, null, null, null},
+ {null, null, null, null}
+ },
+ new String [] {
+ "Title 1", "Title 2", "Title 3", "Title 4"
+ }
+ ));
+ jScrollPane2.setViewportView(jTable1);
+
+ jLabel3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/chromis_main.png"))); // NOI18N
+
+ jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
+ jLabel2.setText("www.chromis.co.uk");
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ this.setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jLabel3))
+ .addGroup(layout.createSequentialGroup()
+ .addGap(30, 30, 30)
+ .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 132, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addContainerGap(33, Short.MAX_VALUE))
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(1, 1, 1)
+ .addComponent(jLabel2)
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
+ }// //GEN-END:initComponents
+
+
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JLabel jLabel2;
+ private javax.swing.JLabel jLabel3;
+ private javax.swing.JScrollPane jScrollPane2;
+ private javax.swing.JTable jTable1;
+ // End of variables declaration//GEN-END:variables
+}
diff --git a/src-pos/uk/chromis/pos/forms/AppConfig.java b/src-pos/uk/chromis/pos/forms/AppConfig.java
index 567e70bf..a14ef6e7 100644
--- a/src-pos/uk/chromis/pos/forms/AppConfig.java
+++ b/src-pos/uk/chromis/pos/forms/AppConfig.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -39,6 +39,7 @@ public class AppConfig implements AppProperties {
private final Properties m_propsconfig;
private final File configFile;
private static final Logger logger = Logger.getLogger("uk.chromis.pos.forms.AppConfig");
+ private DataLogicSystem dlSystem;
protected AppConfig(File configFile) {
this.configFile = configFile;
@@ -89,9 +90,12 @@ public Boolean getBoolean(String sKey) {
return Boolean.valueOf(m_propsconfig.getProperty(sKey));
}
- public String newgetProperty(String sKey) {
- getInstance();
- return m_propsconfig.getProperty(sKey);
+ public Double getDouble(String sKey) {
+ if (getProperty(sKey) != null) {
+ return Double.valueOf(m_propsconfig.getProperty(sKey));
+ } else {
+ return 0.00;
+ }
}
public boolean delete() {
@@ -174,7 +178,7 @@ private void loadDefault() {
m_propsconfig.setProperty("machine.printer.5", "Not defined");
m_propsconfig.setProperty("machine.printer.6", "Not defined");
- m_propsconfig.setProperty("machine.display", "screen");
+ m_propsconfig.setProperty("machine.display", "Not defined");
m_propsconfig.setProperty("machine.scale", "Not defined");
m_propsconfig.setProperty("machine.screenmode", "window"); // fullscreen / window
m_propsconfig.setProperty("machine.ticketsbag", "standard");
@@ -208,7 +212,7 @@ private void loadDefault() {
m_propsconfig.setProperty("screen.receipt.columns", "42");
}
-
+
@Override
public File getConfigFile() {
return configFile;
diff --git a/src-pos/uk/chromis/pos/forms/AppLocal.java b/src-pos/uk/chromis/pos/forms/AppLocal.java
index c2e66a3e..fa38dd1e 100644
--- a/src-pos/uk/chromis/pos/forms/AppLocal.java
+++ b/src-pos/uk/chromis/pos/forms/AppLocal.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,28 +16,22 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see
-
package uk.chromis.pos.forms;
import uk.chromis.beans.LocaleResources;
-/**
- *
- * @author adrianromero
- */
public class AppLocal {
public static final String APP_NAME = "Chromis POS";
public static final String APP_ID = "chromispos";
- public static final String APP_VERSION = "0.54";
+ public static final String APP_VERSION = "0.58.5.4";
public static final String APP_DEMO = "";
- // public static final String APP_DEMO = " - Test Edition";
+ // public static final String APP_DEMO = " - Test Edition";
private static final LocaleResources m_resources;
-
public static String LIST_BY_RIGHTS = "";
- static {
+ static {
m_resources = new LocaleResources();
m_resources.addBundleName("pos_messages");
m_resources.addBundleName("erp_messages");
@@ -65,7 +59,7 @@ public static String getIntString(String sKey) {
* @param sValues
* @return
*/
- public static String getIntString(String sKey, Object... sValues) {
+ public static String getIntString(String sKey, Object... sValues) {
return m_resources.getString(sKey, sValues);
}
}
diff --git a/src-pos/uk/chromis/pos/forms/AppProperties.java b/src-pos/uk/chromis/pos/forms/AppProperties.java
index f58aa80a..202b5151 100644
--- a/src-pos/uk/chromis/pos/forms/AppProperties.java
+++ b/src-pos/uk/chromis/pos/forms/AppProperties.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (C) 2015
+// Copyright (C) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/AppUser.java b/src-pos/uk/chromis/pos/forms/AppUser.java
index b9b94327..00d83038 100644
--- a/src-pos/uk/chromis/pos/forms/AppUser.java
+++ b/src-pos/uk/chromis/pos/forms/AppUser.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/AppUserView.java b/src-pos/uk/chromis/pos/forms/AppUserView.java
index c0700a76..c7761872 100644
--- a/src-pos/uk/chromis/pos/forms/AppUserView.java
+++ b/src-pos/uk/chromis/pos/forms/AppUserView.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/AppView.java b/src-pos/uk/chromis/pos/forms/AppView.java
index 1e3b1afa..a72fbab8 100644
--- a/src-pos/uk/chromis/pos/forms/AppView.java
+++ b/src-pos/uk/chromis/pos/forms/AppView.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -31,63 +31,22 @@
*/
public interface AppView {
- /**
- *
- * @return
- */
public DeviceScale getDeviceScale();
- /**
- *
- * @return
- */
public DeviceTicket getDeviceTicket();
- /**
- *
- * @return
- */
public DeviceScanner getDeviceScanner();
- /**
- *
- * @return
- */
public Session getSession();
- /**
- *
- * @return
- */
public AppProperties getProperties();
- /**
- *
- * @param beanfactory
- * @return
- * @throws BeanFactoryException
- */
public Object getBean(String beanfactory) throws BeanFactoryException;
- /**
- *
- * @param value
- * @param iSeq
- * @param dStart
- * @param dEnd
- */
public void setActiveCash(String value, int iSeq, Date dStart, Date dEnd);
- /**
- *
- * @return
- */
public String getActiveCashIndex();
- /**
- *
- * @return
- */
public int getActiveCashSequence();
/**
diff --git a/src-pos/uk/chromis/pos/forms/AppViewConnection.java b/src-pos/uk/chromis/pos/forms/AppViewConnection.java
index b6da24a9..825bb248 100644
--- a/src-pos/uk/chromis/pos/forms/AppViewConnection.java
+++ b/src-pos/uk/chromis/pos/forms/AppViewConnection.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/BeanFactory.java b/src-pos/uk/chromis/pos/forms/BeanFactory.java
index 37d3d28d..2c51c0cb 100644
--- a/src-pos/uk/chromis/pos/forms/BeanFactory.java
+++ b/src-pos/uk/chromis/pos/forms/BeanFactory.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/BeanFactoryApp.java b/src-pos/uk/chromis/pos/forms/BeanFactoryApp.java
index ff7b53e1..709c3f4f 100644
--- a/src-pos/uk/chromis/pos/forms/BeanFactoryApp.java
+++ b/src-pos/uk/chromis/pos/forms/BeanFactoryApp.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/BeanFactoryCache.java b/src-pos/uk/chromis/pos/forms/BeanFactoryCache.java
index 1cef678b..f3cc1067 100644
--- a/src-pos/uk/chromis/pos/forms/BeanFactoryCache.java
+++ b/src-pos/uk/chromis/pos/forms/BeanFactoryCache.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/BeanFactoryData.java b/src-pos/uk/chromis/pos/forms/BeanFactoryData.java
index dab59f39..97a8316e 100644
--- a/src-pos/uk/chromis/pos/forms/BeanFactoryData.java
+++ b/src-pos/uk/chromis/pos/forms/BeanFactoryData.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/BeanFactoryDataSingle.java b/src-pos/uk/chromis/pos/forms/BeanFactoryDataSingle.java
index 8feedf1c..b75961d1 100644
--- a/src-pos/uk/chromis/pos/forms/BeanFactoryDataSingle.java
+++ b/src-pos/uk/chromis/pos/forms/BeanFactoryDataSingle.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/BeanFactoryException.java b/src-pos/uk/chromis/pos/forms/BeanFactoryException.java
index 0f48f61b..6b02e6dd 100644
--- a/src-pos/uk/chromis/pos/forms/BeanFactoryException.java
+++ b/src-pos/uk/chromis/pos/forms/BeanFactoryException.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/BeanFactoryObj.java b/src-pos/uk/chromis/pos/forms/BeanFactoryObj.java
index 7f4f8f5d..5e7f30e4 100644
--- a/src-pos/uk/chromis/pos/forms/BeanFactoryObj.java
+++ b/src-pos/uk/chromis/pos/forms/BeanFactoryObj.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/BeanFactoryScript.java b/src-pos/uk/chromis/pos/forms/BeanFactoryScript.java
index 9858ff8b..0fb66968 100644
--- a/src-pos/uk/chromis/pos/forms/BeanFactoryScript.java
+++ b/src-pos/uk/chromis/pos/forms/BeanFactoryScript.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/DataLogicSales.java b/src-pos/uk/chromis/pos/forms/DataLogicSales.java
index 0fa77b28..1c8ca2ca 100644
--- a/src-pos/uk/chromis/pos/forms/DataLogicSales.java
+++ b/src-pos/uk/chromis/pos/forms/DataLogicSales.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk liquibase
//
// This file is part of Chromis POS
@@ -16,6 +16,7 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
+//
package uk.chromis.pos.forms;
import uk.chromis.pos.promotion.PromotionInfo;
@@ -35,6 +36,7 @@
import java.io.IOException;
import java.util.Date;
import java.util.List;
+import java.util.Properties;
import java.util.UUID;
import java.util.logging.Logger;
@@ -43,11 +45,15 @@
* @author adrianromero
*/
public class DataLogicSales extends BeanFactoryDataSingle {
+
protected Session s;
protected Datas[] auxiliarDatas;
protected Datas[] stockdiaryDatas;
+ protected Datas[] stockAdjustDatas;
protected SentenceExec m_sellvoucher;
+ protected SentenceExec m_insertcat;
protected Datas[] paymenttabledatas;
+ private SentenceFind m_productname;
protected Datas[] stockdatas;
protected Row productsRow;
private String pName;
@@ -59,6 +65,7 @@ public class DataLogicSales extends BeanFactoryDataSingle {
protected static final String PREPAY = "prepay";
private static final Logger logger = Logger.getLogger("uk.chromis.pos.forms.DataLogicSales");
private String getCardName;
+ private DataLogicSystem m_dlSystem;
private SentenceExec m_updateRefund;
@@ -81,7 +88,7 @@ public class DataLogicSales extends BeanFactoryDataSingle {
public static int INDEX_STOCKCOST = FIELD_COUNT++;
public static int INDEX_STOCKVOLUME = FIELD_COUNT++;
public static int INDEX_ISCATALOG = FIELD_COUNT++;
- public static int INDEX_CATORDER= FIELD_COUNT++;
+ public static int INDEX_CATORDER = FIELD_COUNT++;
public static int INDEX_ISKITCHEN = FIELD_COUNT++;
public static int INDEX_ISSERVICE = FIELD_COUNT++;
public static int INDEX_DISPLAY = FIELD_COUNT++;
@@ -98,21 +105,40 @@ public class DataLogicSales extends BeanFactoryDataSingle {
public static int INDEX_PACKQUANTITY = FIELD_COUNT++;
public static int INDEX_PACKPRODUCT = FIELD_COUNT++;
public static int INDEX_PROMOTIONID = FIELD_COUNT++;
+ public static int INDEX_MANAGESTOCK = FIELD_COUNT++;
/**
* Creates a new instance of SentenceContainerGeneric
*/
public DataLogicSales() {
- stockdiaryDatas = new Datas[]{
- Datas.STRING,
- Datas.TIMESTAMP,
- Datas.INT,
+
+ stockAdjustDatas = new Datas[]{
Datas.STRING,
Datas.STRING,
Datas.STRING,
- Datas.DOUBLE,
- Datas.DOUBLE,
- Datas.STRING};
+ Datas.DOUBLE
+ };
+ stockdiaryDatas = new Datas[]{
+ Datas.STRING, // 0 - ID
+ Datas.TIMESTAMP, // 1- Time
+ Datas.INT, // 2 - Reason
+ Datas.STRING, // 3 - Location
+ Datas.STRING, // 4 - Product
+ Datas.STRING, // 5 - Attribute
+ Datas.DOUBLE, // 6 - Units
+ Datas.DOUBLE, // 7 - Price
+ Datas.STRING, // 8 - User
+ Datas.STRING, // 9 - Product Reference
+ Datas.STRING, // 10 - Product Code
+ Datas.STRING, // 11 - Product Name
+ Datas.STRING, // 12 - Attribute set ID
+ Datas.STRING, // 13 - Attribute set inst desc
+ Datas.DOUBLE, // 14 - Units in stock
+ Datas.DOUBLE, // 15 - Stock Security
+ Datas.DOUBLE, // 16 - Stock Maximum
+ Datas.DOUBLE, // 17 - Buy Price
+ Datas.DOUBLE // 18 - Sell Price
+ };
paymenttabledatas = new Datas[]{
Datas.STRING,
Datas.STRING,
@@ -149,8 +175,8 @@ public DataLogicSales() {
new Field(AppLocal.getIntString("label.prodcategory"), Datas.STRING, Formats.STRING, false, false, true),
new Field(AppLocal.getIntString("label.taxcategory"), Datas.STRING, Formats.STRING, false, false, true),
new Field(AppLocal.getIntString("label.attributeset"), Datas.STRING, Formats.STRING, false, false, true),
- new Field("IMAGE", Datas.IMAGE, Formats.NULL),
- new Field("ATTRIBUTES", Datas.BYTES, Formats.NULL),
+ new Field("IMAGE", Datas.IMAGE, Formats.NULL),
+ new Field("ATTRIBUTES", Datas.BYTES, Formats.NULL),
new Field("STOCKCOST", Datas.DOUBLE, Formats.CURRENCY),
new Field("STOCKVOLUME", Datas.DOUBLE, Formats.DOUBLE),
new Field("ISCATALOG", Datas.BOOLEAN, Formats.BOOLEAN),
@@ -162,7 +188,7 @@ public DataLogicSales() {
new Field("ISVERPATRIB", Datas.BOOLEAN, Formats.BOOLEAN),
new Field("TEXTTIP", Datas.STRING, Formats.STRING),
new Field("WARRANTY", Datas.BOOLEAN, Formats.BOOLEAN),
- new Field(AppLocal.getIntString("label.stockunits"), Datas.DOUBLE, Formats.DOUBLE),
+ new Field(AppLocal.getIntString("label.stockunits"), Datas.DOUBLE, Formats.DOUBLE),
new Field("ALIAS", Datas.STRING, Formats.STRING), //26
new Field("ALWAYSAVAILABLE", Datas.BOOLEAN, Formats.BOOLEAN),
new Field("DISCOUNTED", Datas.STRING, Formats.STRING),
@@ -170,12 +196,13 @@ public DataLogicSales() {
new Field("ISPACK", Datas.BOOLEAN, Formats.BOOLEAN),
new Field("PACKQUANTITY", Datas.DOUBLE, Formats.DOUBLE),
new Field("PACKPRODUCT", Datas.STRING, Formats.STRING),
- new Field("PROMOTIONID", Datas.STRING, Formats.STRING)
+ new Field("PROMOTIONID", Datas.STRING, Formats.STRING),
+ new Field("MANAGESTOCK", Datas.BOOLEAN, Formats.BOOLEAN)
);
-
+
// If this fails there is a coding error - have you added a column
// to the PRODUCTS table and not added an INDEX_xxx for it?
- assert( FIELD_COUNT == productsRow.getFields().length);
+ assert (FIELD_COUNT == productsRow.getFields().length);
}
private String getSelectFieldList() {
@@ -210,10 +237,11 @@ private String getSelectFieldList() {
+ "P.DISCOUNTED, "
+ "P.CANDISCOUNT, "
+ "P.ISPACK, P.PACKQUANTITY, P.PACKPRODUCT, "
- + "P.PROMOTIONID ";
+ + "P.PROMOTIONID, "
+ + "P.MANAGESTOCK ";
return sel;
}
-
+
/**
*
* @param s
@@ -232,6 +260,15 @@ public void init(Session s) {
+ "VALUES (?, ?)", new SerializerWriteBasic(new Datas[]{
Datas.STRING,
Datas.STRING}));
+
+ m_productname = new StaticSentence(s, "SELECT NAME FROM PRODUCTS WHERE ID = ? ",
+ SerializerWriteString.INSTANCE, SerializerReadString.INSTANCE);
+
+ m_insertcat = new StaticSentence(s, "INSERT INTO CATEGORIES ( ID, NAME, CATSHOWNAME ) "
+ + "VALUES (?, ?, ?)", new SerializerWriteBasic(new Datas[]{
+ Datas.STRING,
+ Datas.STRING,
+ Datas.BOOLEAN}));
}
/**
@@ -256,6 +293,15 @@ public final Row getProductsRow() {
return productsRow;
}
+ public final String getCurrentLocationStock(String id) throws BasicException {
+ m_dlSystem = new DataLogicSystem();
+ m_dlSystem.init(s);
+ Properties m_propsdb = m_dlSystem.getResourceAsProperties(AppConfig.getInstance().getHost() + "/properties");
+
+ Object[] record = (Object[]) new StaticSentence(s, "SELECT UNITS FROM STOCKCURRENT WHERE LOCATION = " + m_propsdb.getProperty("location") + " AND PRODUCT = ? ", SerializerWriteString.INSTANCE, new SerializerReadBasic(new Datas[]{Datas.STRING})).find(id);
+ return record == null ? "0.0" : (String) record[0];
+ }
+
/**
*
* @param id
@@ -268,7 +314,7 @@ public final ProductInfoExt getProductInfo(String id) throws BasicException {
+ "FROM STOCKCURRENT C LEFT JOIN PRODUCTS P ON (C.PRODUCT = P.ID) "
+ "WHERE ID = ?", SerializerWriteString.INSTANCE, ProductInfoExt.getSerializerRead()).find(id);
}
-
+
/**
*
* @param sCode
@@ -276,10 +322,18 @@ public final ProductInfoExt getProductInfo(String id) throws BasicException {
* @throws BasicException
*/
public final ProductInfoExt getProductInfoByCode(String sCode) throws BasicException {
+ if (sCode.startsWith("977")) {
+ // This is an ISSN barcode (news and magazines)
+ // the first 3 digits correspond to the 977 prefix assigned to serial publications,
+ // the next 7 digits correspond to the ISSN of the publication
+ // Anything after that is publisher dependant - we strip everything after
+ // the 10th character
+ sCode = sCode.substring(0, 10);
+ }
return (ProductInfoExt) new PreparedSentence(s, "SELECT "
- + getSelectFieldList()
-
- + "WHERE CODE = ?", SerializerWriteString.INSTANCE, ProductInfoExt.getSerializerRead()).find(sCode);
+ + getSelectFieldList()
+ + "FROM STOCKCURRENT C RIGHT JOIN PRODUCTS P ON (C.PRODUCT = P.ID) "
+ + " WHERE CODE = ? ", SerializerWriteString.INSTANCE, ProductInfoExt.getSerializerRead()).find(sCode);
}
/**
@@ -290,17 +344,17 @@ public final ProductInfoExt getProductInfoByCode(String sCode) throws BasicExcep
*/
public final ProductInfoExt getProductInfoByReference(String sReference) throws BasicException {
return (ProductInfoExt) new PreparedSentence(s, "SELECT "
- + getSelectFieldList( )
+ + getSelectFieldList()
+ "FROM STOCKCURRENT C RIGHT JOIN PRODUCTS P ON (C.PRODUCT = P.ID) "
+ "WHERE REFERENCE = ?", SerializerWriteString.INSTANCE, ProductInfoExt.getSerializerRead()).find(sReference);
}
public final ProductInfoExt getProductInfoNoSC(String id) throws BasicException {
return (ProductInfoExt) new PreparedSentence(s, "SELECT "
- + getSelectFieldList( )
+ + getSelectFieldList()
+ "FROM PRODUCTS P WHERE P.ID = ? "
+ "ORDER BY P.ID, P.REFERENCE, P.NAME ", SerializerWriteString.INSTANCE, ProductInfoExt.getSerializerRead()).find(id);
- }
+ }
/**
*
@@ -336,7 +390,7 @@ public final List getRootCategoriesByCatOrder() throws BasicExcept
+ "FROM CATEGORIES "
+ "WHERE PARENTID IS NULL AND CATSHOWNAME = " + s.DB.TRUE() + " AND CATORDER IS NOT NULL "
+ "ORDER BY CATORDER", null, CategoryInfo.getSerializerRead()).list();
- }
+ }
public final List getRootCategoriesByName() throws BasicException {
return new PreparedSentence(s, "SELECT "
@@ -350,9 +404,8 @@ public final List getRootCategoriesByName() throws BasicException
+ "FROM CATEGORIES "
+ "WHERE PARENTID IS NULL AND CATSHOWNAME = " + s.DB.TRUE() + " AND CATORDER IS NULL "
+ "ORDER BY NAME", null, CategoryInfo.getSerializerRead()).list();
- }
-
-
+ }
+
/**
*
* @param category
@@ -380,9 +433,9 @@ public final List getSubcategoriesByCatOrder(String category) thro
+ "CATSHOWNAME, "
+ "COLOUR, "
+ "CATORDER "
- + "FROM CATEGORIES WHERE PARENTID = ? AND CATORDER IS NOT NULL ORDER BY CATORDER", SerializerWriteString.INSTANCE, CategoryInfo.getSerializerRead()).list(category);
+ + "FROM CATEGORIES WHERE PARENTID = ? AND CATORDER IS NOT NULL ORDER BY CATORDER", SerializerWriteString.INSTANCE, CategoryInfo.getSerializerRead()).list(category);
}
-
+
public final List getSubcategoriesByName(String category) throws BasicException {
return new PreparedSentence(s, "SELECT "
+ "ID, "
@@ -392,31 +445,21 @@ public final List getSubcategoriesByName(String category) throws B
+ "CATSHOWNAME, "
+ "COLOUR, "
+ "CATORDER "
- + "FROM CATEGORIES WHERE PARENTID = ? AND CATORDER IS NULL ORDER BY NAME", SerializerWriteString.INSTANCE, CategoryInfo.getSerializerRead()).list(category);
+ + "FROM CATEGORIES WHERE PARENTID = ? AND CATORDER IS NULL ORDER BY NAME", SerializerWriteString.INSTANCE, CategoryInfo.getSerializerRead()).list(category);
}
-
-
+
/**
*
* @param category
* @return
* @throws BasicException
*/
- public List getProductCatalog(String category, Boolean bWithAlwaysAvailable) throws BasicException {
- String wherealways = "";
- String orderalways = "";
- if( bWithAlwaysAvailable ) {
- wherealways = " OR P.ALWAYSAVAILABLE = " + s.DB.TRUE() + " ";
- orderalways = "P.ALWAYSAVAILABLE DESC, ";
- }
+ public List getProductCatalog(String category) throws BasicException {
return new PreparedSentence(s, "SELECT "
- + getSelectFieldList( )
+ + getSelectFieldList()
+ "FROM PRODUCTS P "
- + "WHERE (P.ISCATALOG = " + s.DB.TRUE() + " AND P.CATEGORY = ?) "
- + wherealways
- + "ORDER BY "
- + orderalways
- +"P.CATORDER, P.NAME ", SerializerWriteString.INSTANCE, ProductInfoExt.getSerializerRead()).list(category);
+ + "WHERE (P.ISCATALOG = " + s.DB.TRUE() + " AND P.CATEGORY = ?) OR (P.ALWAYSAVAILABLE = " + s.DB.TRUE() + ") "
+ + "ORDER BY P.CATORDER, P.NAME ", SerializerWriteString.INSTANCE, ProductInfoExt.getSerializerRead()).list(category);
}
/**
@@ -427,7 +470,7 @@ public List getProductCatalog(String category, Boolean bWithAlwa
*/
public List getAllProductCatalogByCatOrder() throws BasicException {
return new PreparedSentence(s, "SELECT "
- + getSelectFieldList( )
+ + getSelectFieldList()
+ "FROM PRODUCTS P "
+ "WHERE P.ISCATALOG = " + s.DB.TRUE() + " "
+ "ORDER BY P.CATORDER, P.NAME ", null, ProductInfoExt.getSerializerRead()).list();
@@ -435,7 +478,7 @@ public List getAllProductCatalogByCatOrder() throws BasicExcepti
public List getAllNonProductCatalog() throws BasicException {
return new PreparedSentence(s, "SELECT "
- + getSelectFieldList( )
+ + getSelectFieldList()
+ "FROM PRODUCTS P "
+ "WHERE P.ISCATALOG = " + s.DB.FALSE() + " "
+ "ORDER BY P.CATEGORY, P.NAME ", null, ProductInfoExt.getSerializerRead()).list();
@@ -449,7 +492,7 @@ public List getAllNonProductCatalog() throws BasicException {
*/
public List getAllProductCatalog() throws BasicException {
return new PreparedSentence(s, "SELECT "
- + getSelectFieldList( )
+ + getSelectFieldList()
+ "FROM PRODUCTS P "
+ "WHERE P.ISCATALOG = " + s.DB.TRUE() + " "
+ "ORDER BY P.CATEGORY, P.NAME ", null, ProductInfoExt.getSerializerRead()).list();
@@ -463,7 +506,7 @@ public List getAllProductCatalog() throws BasicException {
*/
public List getProductCatalogAlways() throws BasicException {
return new PreparedSentence(s, "SELECT "
- + getSelectFieldList( )
+ + getSelectFieldList()
+ "FROM CATEGORIES C INNER JOIN PRODUCTS P ON (P.CATEGORY = C.ID) "
+ "WHERE P.ALWAYSAVAILABLE = " + s.DB.TRUE() + " "
+ "ORDER BY C.NAME, P.NAME",
@@ -474,7 +517,7 @@ public List getProductCatalogAlways() throws BasicException {
public List getProductNonCatalog(String category) throws BasicException {
return new PreparedSentence(s, "SELECT "
- + getSelectFieldList( )
+ + getSelectFieldList()
+ "FROM PRODUCTS P "
+ "WHERE P.ISCATALOG = " + s.DB.FALSE() + " "
+ "AND P.CATEGORY = ? "
@@ -489,7 +532,7 @@ public List getProductNonCatalog(String category) throws BasicEx
*/
public List getProductComments(String id) throws BasicException {
return new PreparedSentence(s, "SELECT "
- + getSelectFieldList( )
+ + getSelectFieldList()
+ "FROM PRODUCTS P, PRODUCTS_COM M "
+ "WHERE P.ISCATALOG = " + s.DB.TRUE() + " "
+ "AND P.ID = M.PRODUCT2 AND M.PRODUCT = ? "
@@ -518,53 +561,88 @@ public final CategoryInfo getCategoryInfo(String id) throws BasicException {
}
public final SentenceList getProductList() {
+ m_dlSystem = new DataLogicSystem();
+ m_dlSystem.init(s);
+ Properties m_propsdb = m_dlSystem.getResourceAsProperties(AppConfig.getInstance().getHost() + "/properties");
return new StaticSentence(s, new QBFBuilder(
"SELECT "
- + getSelectFieldList( )
+ + "P.ID, "
+ + "P.REFERENCE, "
+ + "P.CODE, "
+ + "P.CODETYPE, "
+ + "P.NAME, "
+ + "P.ISCOM, "
+ + "P.ISSCALE, "
+ + "P.PRICEBUY, "
+ + "P.PRICESELL, "
+ + "P.CATEGORY, "
+ + "P.TAXCAT, "
+ + "P.ATTRIBUTESET_ID, "
+ + "P.IMAGE, "
+ + "P.ATTRIBUTES, "
+ + "P.STOCKCOST, "
+ + "P.STOCKVOLUME, "
+ + "P.ISCATALOG, "
+ + "P.CATORDER, "
+ + "P.ISKITCHEN, "
+ + "P.ISSERVICE, "
+ + "P.DISPLAY, "
+ + "P.ISVPRICE, "
+ + "P.ISVERPATRIB, "
+ + "P.TEXTTIP, "
+ + "P.WARRANTY, "
+ + "( SELECT UNITS FROM STOCKCURRENT WHERE LOCATION = " + m_propsdb.getProperty("location") + " AND PRODUCT = P.ID ), "
+ + "P.ALIAS, "
+ + "P.ALWAYSAVAILABLE, "
+ + "P.DISCOUNTED, "
+ + "P.CANDISCOUNT, "
+ + "P.ISPACK, P.PACKQUANTITY, P.PACKPRODUCT, "
+ + "P.PROMOTIONID, "
+ + "P.MANAGESTOCK "
+ "FROM STOCKCURRENT C RIGHT OUTER JOIN PRODUCTS P ON (C.PRODUCT = P.ID) "
+ "WHERE ?(QBF_FILTER) "
+ "ORDER BY P.REFERENCE, P.NAME",
new String[]{"P.NAME", "P.PRICEBUY", "P.PRICESELL", "P.CATEGORY", "P.CODE", "C.UNITS"}), new SerializerWriteBasic(new Datas[]{
- Datas.OBJECT, Datas.STRING,
- Datas.OBJECT, Datas.DOUBLE,
- Datas.OBJECT, Datas.DOUBLE,
- Datas.OBJECT, Datas.STRING,
- Datas.OBJECT, Datas.STRING,
- Datas.OBJECT, Datas.DOUBLE,}), ProductInfoExt.getSerializerRead());
+ Datas.OBJECT, Datas.STRING,
+ Datas.OBJECT, Datas.DOUBLE,
+ Datas.OBJECT, Datas.DOUBLE,
+ Datas.OBJECT, Datas.STRING,
+ Datas.OBJECT, Datas.STRING,
+ Datas.OBJECT, Datas.DOUBLE,}), ProductInfoExt.getSerializerRead());
}
public SentenceList getProductListNormal() {
return new StaticSentence(s, new QBFBuilder(
"SELECT "
- + getSelectFieldList( )
+ + getSelectFieldList()
+ "FROM STOCKCURRENT C RIGHT OUTER JOIN PRODUCTS P ON (C.PRODUCT = P.ID) "
+ "WHERE P.ISCOM = " + s.DB.FALSE() + " AND ?(QBF_FILTER) "
+ "ORDER BY P.REFERENCE, P.NAME",
new String[]{"P.NAME", "P.PRICEBUY", "P.PRICESELL", "P.CATEGORY", "P.CODE", "C.UNITS"}),
new SerializerWriteBasic(new Datas[]{
- Datas.OBJECT, Datas.STRING,
- Datas.OBJECT, Datas.DOUBLE,
- Datas.OBJECT, Datas.DOUBLE,
- Datas.OBJECT, Datas.STRING,
- Datas.OBJECT, Datas.STRING,
- Datas.OBJECT, Datas.DOUBLE
- }), ProductInfoExt.getSerializerRead());
+ Datas.OBJECT, Datas.STRING,
+ Datas.OBJECT, Datas.DOUBLE,
+ Datas.OBJECT, Datas.DOUBLE,
+ Datas.OBJECT, Datas.STRING,
+ Datas.OBJECT, Datas.STRING,
+ Datas.OBJECT, Datas.DOUBLE
+ }), ProductInfoExt.getSerializerRead());
}
public SentenceList getProductListAuxiliar() {
return new StaticSentence(s, new QBFBuilder(
"SELECT "
- + getSelectFieldList( )
+ + getSelectFieldList()
+ "FROM STOCKCURRENT C RIGHT OUTER JOIN PRODUCTS P ON (C.PRODUCT = P.ID) "
+ "WHERE P.ISCOM = " + s.DB.TRUE() + " AND ?(QBF_FILTER) "
+ "ORDER BY P.REFERENCE",
- new String[]{"P.NAME", "P.PRICEBUY", "P.PRICESELL", "P.CATEGORY", "P.CODE"}),
+ new String[]{"P.NAME", "P.PRICEBUY", "P.PRICESELL", "P.CATEGORY", "P.CODE"}),
new SerializerWriteBasic(new Datas[]{
- Datas.OBJECT, Datas.STRING,
- Datas.OBJECT, Datas.DOUBLE,
- Datas.OBJECT, Datas.DOUBLE,
- Datas.OBJECT, Datas.STRING,
- Datas.OBJECT, Datas.STRING}),
+ Datas.OBJECT, Datas.STRING,
+ Datas.OBJECT, Datas.DOUBLE,
+ Datas.OBJECT, Datas.DOUBLE,
+ Datas.OBJECT, Datas.STRING,
+ Datas.OBJECT, Datas.STRING}),
ProductInfoExt.getSerializerRead());
}
@@ -662,38 +740,52 @@ public Object readValues(DataRead dr) throws BasicException {
* @return
*/
public final SentenceList getCategoriesList() {
- return new StaticSentence(s, "SELECT "
- + "ID, "
- + "NAME, "
- + "IMAGE, "
- + "TEXTTIP, "
- + "CATSHOWNAME, "
- + "COLOUR, "
- + "CATORDER "
- + "FROM CATEGORIES "
- + "ORDER BY NAME", null, CategoryInfo.getSerializerRead());
+ if (DataLogicSystem.m_dbVersion.equals("Derby")) {
+ return new StaticSentence(s, "SELECT "
+ + "ID, "
+ + "NAME, "
+ + "IMAGE, "
+ + "TEXTTIP, "
+ + "CATSHOWNAME, "
+ + "COLOUR, "
+ + "CATORDER "
+ + "FROM CATEGORIES "
+ + "ORDER BY NAME", null, CategoryInfo.getSerializerRead());
+ } else {
+ return new StaticSentence(s, "SELECT "
+ + "ID, "
+ + "NAME, "
+ + "NULL, "
+ + "TEXTTIP, "
+ + "CATSHOWNAME, "
+ + "COLOUR, "
+ + "CATORDER "
+ + "FROM CATEGORIES "
+ + "ORDER BY NAME", null, CategoryInfo.getSerializerRead());
+ }
}
-
- /**
+
+ /**
*
* @return
*/
public final SentenceList getPromotionsList() {
- return new StaticSentence(s, "SELECT "
+ return new StaticSentence(s, "SELECT "
+ "ID, NAME, CRITERIA, SCRIPT, ISENABLED, ALLPRODUCTS "
+ "FROM PROMOTIONS "
- + "ORDER BY NAME", null,
- new SerializerRead() {@Override
- public Object readValues(DataRead dr) throws BasicException {
- return new PromotionInfo(dr.getString(1), dr.getString(2),
- Formats.BYTEA.formatValue(dr.getBytes(3)),
- Formats.BYTEA.formatValue(dr.getBytes(4)),
- dr.getBoolean(5), dr.getBoolean(6) );
- }
- });
+ + "ORDER BY NAME", null,
+ new SerializerRead() {
+ @Override
+ public Object readValues(DataRead dr) throws BasicException {
+ return new PromotionInfo(dr.getString(1), dr.getString(2),
+ Formats.BYTEA.formatValue(dr.getBytes(3)),
+ Formats.BYTEA.formatValue(dr.getBytes(4)),
+ dr.getBoolean(5),
+ dr.getBoolean(6));
+ }
+ });
}
-
/**
*
* @return
@@ -715,10 +807,9 @@ public Object readValues(DataRead dr) throws BasicException {
*
* @return @throws BasicException
*/
-
@SuppressWarnings("unchecked")
public final List getCustomersTransactionList(String name) throws BasicException {
- return new PreparedSentence(s,
+ return (List) new PreparedSentence(s,
"SELECT TICKETS.TICKETID, PRODUCTS.NAME AS PNAME, "
+ "SUM(TICKETLINES.UNITS) AS UNITS, "
+ "SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) AS AMOUNT, "
@@ -728,11 +819,26 @@ public final List getCustomersTransactionList(String name)
+ "LEFT OUTER JOIN PRODUCTS ON TICKETLINES.PRODUCT = PRODUCTS.ID "
+ "LEFT OUTER JOIN TAXES ON TICKETLINES.TAXID = TAXES.ID "
+ "WHERE CUSTOMERS.ID = TICKETS.CUSTOMER AND TICKETLINES.PRODUCT = PRODUCTS.ID AND RECEIPTS.ID = TICKETS.ID AND TICKETS.ID = TICKETLINES.TICKET "
- + "AND CUSTOMERS.NAME = \"" + name + "\" "
+ + "AND CUSTOMERS.NAME = ?"
+ "GROUP BY CUSTOMERS.NAME, RECEIPTS.DATENEW, TICKETS.TICKETID, PRODUCTS.NAME, TICKETS.TICKETTYPE "
+ "ORDER BY RECEIPTS.DATENEW DESC, PRODUCTS.NAME",
- null,
- CustomerTransaction.getSerializerRead()).list();
+ SerializerWriteString.INSTANCE,
+ CustomerTransaction.getSerializerRead()).list(name);
+ }
+
+ /**
+ *
+ * @param productId The product id to look for kit
+ * @return List of products part of the searched product
+ * @throws BasicException
+ */
+ public final List getProductsKit(String productId) throws BasicException {
+ return new PreparedSentence(s, "SELECT "
+ + "ID, "
+ + "PRODUCT, "
+ + "PRODUCT_KIT, "
+ + "QUANTITY "
+ + "FROM PRODUCTS_KIT WHERE PRODUCT = ? ", SerializerWriteString.INSTANCE, ProductsRecipeInfo.getSerializerRead()).list(productId);
}
/**
@@ -781,6 +887,21 @@ public final SentenceList getLocationsList() {
+ "ORDER BY NAME", null, new SerializerReadClass(LocationInfo.class));
}
+ public final SentenceList getProductListList() {
+ return new StaticSentence(s, "SELECT DISTINCT "
+ + "LISTNAME FROM PRODUCTLISTS "
+ + "ORDER BY LISTNAME", null, new SerializerReadClass(ProductListInfo.class));
+ }
+
+ public final SentenceList getProductListItems(String listName) {
+ return new StaticSentence(s, "SELECT "
+ + "L.PRODUCT, P.REFERENCE, P.NAME FROM PRODUCTLISTS L LEFT JOIN PRODUCTS P "
+ + "ON P.ID = L.PRODUCT "
+ + "WHERE L.LISTNAME = '" + listName + "' "
+ + "ORDER BY P.REFERENCE ",
+ null, new SerializerReadClass(ProductListItem.class));
+ }
+
/**
*
* @return
@@ -820,7 +941,9 @@ public CustomerInfoExt findCustomerExt(String card) throws BasicException {
+ "CITY, "
+ "REGION, "
+ "COUNTRY, "
- + "IMAGE "
+ + "IMAGE, "
+ + "DOB, "
+ + "DISCOUNT "
+ "FROM CUSTOMERS "
+ "WHERE CARD = ? AND VISIBLE = " + s.DB.TRUE() + " "
+ "ORDER BY NAME", SerializerWriteString.INSTANCE, new CustomerExtRead()).find(card);
@@ -857,7 +980,9 @@ public CustomerInfoExt loadCustomerExt(String id) throws BasicException {
+ "CITY, "
+ "REGION, "
+ "COUNTRY, "
- + "IMAGE "
+ + "IMAGE, "
+ + "DOB, "
+ + "DISCOUNT "
+ "FROM CUSTOMERS WHERE ID = ?", SerializerWriteString.INSTANCE, new CustomerExtRead()).find(id);
}
@@ -937,7 +1062,9 @@ public Object transact() throws BasicException {
// Set Receipt Id
switch (ticket.getTicketType()) {
case NORMAL:
- ticket.setTicketId(getNextTicketIndex());
+ if (ticket.getTicketId() == 0) {
+ ticket.setTicketId(getNextTicketIndex());
+ }
break;
case REFUND:
ticket.setTicketId(getNextTicketRefundIndex());
@@ -995,7 +1122,11 @@ public void writeValues() throws BasicException {
ticketlineinsert.exec(l);
- if (l.getProductID() != null && l.isProductService() != true) {
+ if (l.getProductID() != null && l.isProductService() != true
+ && l.getManageStock() == true) {
+
+ // List kit = getProductsKit(l.getProductID());
+ // if (kit.size() == 0) {
// update the stock
getStockDiaryInsert().exec(new Object[]{
UUID.randomUUID().toString(),
@@ -1006,14 +1137,33 @@ public void writeValues() throws BasicException {
location,
l.getProductID(),
l.getProductAttSetInstId(), -l.getMultiply(), l.getPrice(),
- ticket.getUser().getName()
+ ticket.getUser().getName(),
+ null, null, null, null, null, null, null
});
}
-
+ /* else {
+ for (ProductsRecipeInfo component : kit) {
+ getStockDiaryInsert().exec(new Object[]{
+ UUID.randomUUID().toString(),
+ ticket.getDate(),
+ component.getQuantity() < 0.0
+ ? MovementReason.IN_RECIPES.getKey()
+ : MovementReason.OUT_RECIPES.getKey(),
+ location,
+ component.getProductKitId(),
+ null, -component.getQuantity() * l.getMultiply(), 0.0,
+ ticket.getUser().getName(),
+ null, null, null, null, null, null, null
+ });
+ }
+ }*/
}
+ // }
+
final Payments payments = new Payments();
- SentenceExec paymentinsert = new PreparedSentence(s
- , "INSERT INTO PAYMENTS (ID, RECEIPT, PAYMENT, TOTAL, TRANSID, RETURNMSG, TENDERED, CARDNAME) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", SerializerWriteParams.INSTANCE);
+ SentenceExec paymentinsert = new PreparedSentence(s,
+ "INSERT INTO PAYMENTS (ID, RECEIPT, PAYMENT, TOTAL, TRANSID, RETURNMSG, TENDERED, CARDNAME) VALUES (?, ?, ?, ?, ?, ?, ?, ?)",
+ SerializerWriteParams.INSTANCE);
for (final PaymentInfo p : ticket.getPayments()) {
payments.addPayment(p.getName(), p.getTotal(), p.getPaid(), ticket.getReturnMessage());
@@ -1041,8 +1191,36 @@ public void writeValues() throws BasicException {
payments.removeFirst(pName);
}
});
+/*
+ for (final PaymentInfo p : ticket.getPayments()) {
+ payments.addPayment(p.getName(),p.getTotal(), p.getPaid(),ticket.getReturnMessage());
+ paymentinsert.exec(new DataParams() {
+ @Override
+ public void writeValues() throws BasicException {
+ pName = payments.getFirstElement();
+ getTotal = payments.getPaidAmount(pName);
+ getTendered = payments.getTendered(pName);
+ getRetMsg = payments.getRtnMessage(pName);
+ payments.removeFirst(pName);
+
+ setString(1, UUID.randomUUID().toString());
+ setString(2, ticket.getId());
+ setString(3, pName);
+ setDouble(4, getTotal);
+ setString(5, ticket.getTransactionID());
+ setBytes(6, (byte[]) Formats.BYTEA.parseValue(getRetMsg));
+ setDouble(7, getTendered);
+ setString(8, getCardName);
+ payments.removeFirst(pName);
+ }
+ });
+
+*/
if ("debt".equals(pName) || "debtpaid".equals(pName)) {
+ System.out.println("pName = " + pName);
+ System.out.println("Current debt " + ticket.getCustomer().getCurdebt());
+ System.out.println("date " + ticket.getCustomer().getCurdate());
// udate customer fields...
ticket.getCustomer().updateCurDebt(getTotal, ticket.getDate());
// save customer fields...
@@ -1094,7 +1272,9 @@ public Object transact() throws BasicException {
// update the inventory
Date d = new Date();
for (int i = 0; i < ticket.getLinesCount(); i++) {
- if (ticket.getLine(i).getProductID() != null) {
+ if (ticket.getLine(i).getProductID() != null
+ && ticket.getLine(i).getManageStock() == true) {
+
// Hay que actualizar el stock si el hay producto
getStockDiaryInsert().exec(new Object[]{
UUID.randomUUID().toString(),
@@ -1116,7 +1296,7 @@ public Object transact() throws BasicException {
// udate customer fields...
ticket.getCustomer().updateCurDebt(-p.getTotal(), ticket.getDate());
-
+ System.out.println("now here");
// save customer fields...
getDebtUpdate().exec(new DataParams() {
@Override
@@ -1184,12 +1364,12 @@ public final Integer getNextTicketPaymentIndex() throws BasicException {
public final SentenceList getProductCatQBF() {
return new StaticSentence(s, new QBFBuilder(
"SELECT "
- + getSelectFieldList( )
+ + getSelectFieldList()
+ "FROM PRODUCTS P "
+ "WHERE ?(QBF_FILTER) "
+ "ORDER BY P.REFERENCE",
new String[]{
- "P.NAME", "P.PRICEBUY", "P.PRICESELL", "P.CATEGORY", "P.CODE"}), new SerializerWriteBasic(new Datas[]{
+ "P.NAME", "P.PRICEBUY", "P.PRICESELL", "P.CATEGORY", "P.CODE"}, false), new SerializerWriteBasic(new Datas[]{
Datas.OBJECT, Datas.STRING,
Datas.OBJECT, Datas.DOUBLE,
Datas.OBJECT, Datas.DOUBLE,
@@ -1209,24 +1389,25 @@ public int execInTransaction(Object params) throws BasicException {
int i = new PreparedSentence(s, "INSERT INTO PRODUCTS (ID, "
+ "REFERENCE, CODE, CODETYPE, NAME, ISCOM, "
+ "ISSCALE, PRICEBUY, PRICESELL, CATEGORY, TAXCAT, "
- + "ATTRIBUTESET_ID, IMAGE, STOCKCOST, STOCKVOLUME, "
+ + "ATTRIBUTESET_ID, IMAGE, STOCKCOST, STOCKVOLUME, ISCATALOG, CATORDER, "
+ "ATTRIBUTES, ISKITCHEN, ISSERVICE, DISPLAY, ISVPRICE, "
+ "ISVERPATRIB, TEXTTIP, WARRANTY, STOCKUNITS, ALIAS, ALWAYSAVAILABLE, DISCOUNTED, CANDISCOUNT, "
- + "ISPACK, PACKQUANTITY, PACKPRODUCT, PROMOTIONID, ISCATALOG, CATORDER ) "
- + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
+ + "ISPACK, PACKQUANTITY, PACKPRODUCT, PROMOTIONID, MANAGESTOCK ) "
+ + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
new SerializerWriteBasicExt(productsRow.getDatas(),
- new int[]{ INDEX_ID,
+ new int[]{INDEX_ID,
INDEX_REFERENCE, INDEX_CODE, INDEX_CODETYPE,
INDEX_NAME, INDEX_ISCOM, INDEX_ISSCALE,
INDEX_PRICEBUY, INDEX_PRICESELL, INDEX_CATEGORY,
INDEX_TAXCAT, INDEX_ATTRIBUTESET_ID, INDEX_IMAGE,
- INDEX_STOCKCOST, INDEX_STOCKVOLUME, INDEX_ATTRIBUTES,
+ INDEX_STOCKCOST, INDEX_STOCKVOLUME,
+ INDEX_ISCATALOG, INDEX_CATORDER, INDEX_ATTRIBUTES,
INDEX_ISKITCHEN, INDEX_ISSERVICE, INDEX_DISPLAY,
INDEX_ISVPRICE, INDEX_ISVERPATRIB, INDEX_TEXTTIP,
INDEX_WARRANTY, INDEX_STOCKUNITS, INDEX_ALIAS,
INDEX_ALWAYSAVAILABLE, INDEX_DISCOUNTED, INDEX_CANDISCOUNT,
INDEX_ISPACK, INDEX_PACKQUANTITY, INDEX_PACKPRODUCT,
- INDEX_PROMOTIONID, INDEX_ISCATALOG, INDEX_CATORDER })).exec(params);
+ INDEX_PROMOTIONID, INDEX_MANAGESTOCK})).exec(params);
new PreparedSentence(s, "INSERT INTO STOCKCURRENT (LOCATION, PRODUCT, UNITS) VALUES ('0', ?, 0.0)",
new SerializerWriteBasicExt(productsRow.getDatas(), new int[]{INDEX_ID})).exec(params);
@@ -1235,7 +1416,7 @@ public int execInTransaction(Object params) throws BasicException {
}
};
}
-
+
public final SentenceList getPackProductList() {
return new StaticSentence(s, "SELECT "
+ "ID, "
@@ -1253,7 +1434,7 @@ public Object readValues(DataRead dr) throws BasicException {
*
* @return
*/
- public final SentenceExec getProductCatUpdate() {
+ public final SentenceExec getProductCatUpdate() {
return new SentenceExecTransaction(s) {
@Override
public int execInTransaction(Object params) throws BasicException {
@@ -1271,7 +1452,8 @@ public int execInTransaction(Object params) throws BasicException {
+ "WARRANTY = ?, STOCKUNITS = ?, ALIAS = ?, ALWAYSAVAILABLE = ?, "
+ "DISCOUNTED = ?, CANDISCOUNT = ?, "
+ "ISPACK = ?, PACKQUANTITY = ?, PACKPRODUCT = ?, "
- + "PROMOTIONID = ?, ISCATALOG = ?, CATORDER = ? "
+ + "PROMOTIONID = ?, ISCATALOG = ?, CATORDER = ?, "
+ + "MANAGESTOCK = ? "
+ "WHERE ID = ?", new SerializerWriteBasicExt(productsRow.getDatas(),
new int[]{
INDEX_REFERENCE, INDEX_CODE, INDEX_CODETYPE,
@@ -1285,7 +1467,8 @@ public int execInTransaction(Object params) throws BasicException {
INDEX_ALWAYSAVAILABLE, INDEX_DISCOUNTED, INDEX_CANDISCOUNT,
INDEX_ISPACK, INDEX_PACKQUANTITY, INDEX_PACKPRODUCT,
INDEX_PROMOTIONID, INDEX_ISCATALOG, INDEX_CATORDER,
- INDEX_ID })).exec(params);
+ INDEX_MANAGESTOCK,
+ INDEX_ID})).exec(params);
return i;
}
@@ -1312,7 +1495,6 @@ public int execInTransaction(Object params) throws BasicException {
* @return
*/
public final SentenceExec getDebtUpdate() {
-
return new PreparedSentence(s, "UPDATE CUSTOMERS SET CURDEBT = ?, CURDATE = ? WHERE ID = ?", SerializerWriteParams.INSTANCE);
}
@@ -1320,22 +1502,47 @@ public final SentenceExec getDebtUpdate() {
*
* @return
*/
+ public final SentenceExec getStockDiaryInsert() {
+ return new SentenceExecTransaction(s) {
+ @Override
+ public int execInTransaction(Object params) throws BasicException {
+ /* Set up adjust parameters */
+ Object[] adjustParams = new Object[4];
+ Object[] paramsArray = (Object[]) params;
+ adjustParams[0] = paramsArray[3]; //product ->Location
+ adjustParams[1] = paramsArray[4]; //location -> Product
+ adjustParams[2] = paramsArray[5]; //attrubutesetinstance
+ adjustParams[3] = paramsArray[6]; //units
+ int as = adjustStock(adjustParams);
+
+ return as + new PreparedSentence(s, "INSERT INTO STOCKDIARY (ID, DATENEW, REASON, LOCATION, PRODUCT, ATTRIBUTESETINSTANCE_ID, UNITS, PRICE, AppUser) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", new SerializerWriteBasicExt(stockdiaryDatas, new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8})).exec(params);
+ }
+ };
+ }
+
+ /*
public final SentenceExec getStockDiaryInsert() {
return new SentenceExecTransaction(s) {
@Override
public int execInTransaction(Object params) throws BasicException {
int updateresult = ((Object[]) params)[5] == null // si ATTRIBUTESETINSTANCE_ID is null
- ? new PreparedSentence(s, "UPDATE STOCKCURRENT SET UNITS = (UNITS + ?) WHERE LOCATION = ? AND PRODUCT = ? AND ATTRIBUTESETINSTANCE_ID IS NULL", new SerializerWriteBasicExt(stockdiaryDatas, new int[]{6, 3, 4})).exec(params)
- : new PreparedSentence(s, "UPDATE STOCKCURRENT SET UNITS = (UNITS + ?) WHERE LOCATION = ? AND PRODUCT = ? AND ATTRIBUTESETINSTANCE_ID = ?", new SerializerWriteBasicExt(stockdiaryDatas, new int[]{6, 3, 4, 5})).exec(params);
+ ? new PreparedSentence(s, "UPDATE STOCKCURRENT SET UNITS = (UNITS + ?) "
+ + "WHERE LOCATION = ? AND PRODUCT = ? AND ATTRIBUTESETINSTANCE_ID IS NULL", new SerializerWriteBasicExt(stockdiaryDatas, new int[]{6, 3, 4})).exec(params)
+ : new PreparedSentence(s, "UPDATE STOCKCURRENT SET UNITS = (UNITS + ?) "
+ + "WHERE LOCATION = ? AND PRODUCT = ? AND ATTRIBUTESETINSTANCE_ID = ?", new SerializerWriteBasicExt(stockdiaryDatas, new int[]{6, 3, 4, 5})).exec(params);
if (updateresult == 0) {
- new PreparedSentence(s, "INSERT INTO STOCKCURRENT (LOCATION, PRODUCT, ATTRIBUTESETINSTANCE_ID, UNITS) VALUES (?, ?, ?, ?)", new SerializerWriteBasicExt(stockdiaryDatas, new int[]{3, 4, 5, 6})).exec(params);
+ new PreparedSentence(s, "INSERT INTO STOCKCURRENT (LOCATION, PRODUCT, ATTRIBUTESETINSTANCE_ID, UNITS) "
+ + "VALUES (?, ?, ?, ?)", new SerializerWriteBasicExt(stockdiaryDatas, new int[]{3, 4, 5, 6})).exec(params);
}
- return new PreparedSentence(s, "INSERT INTO STOCKDIARY (ID, DATENEW, REASON, LOCATION, PRODUCT, ATTRIBUTESETINSTANCE_ID, UNITS, PRICE, AppUser) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", new SerializerWriteBasicExt(stockdiaryDatas, new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8})).exec(params);
+ return new PreparedSentence(s, "INSERT INTO STOCKDIARY (ID, DATENEW, REASON, LOCATION, PRODUCT, "
+ + "ATTRIBUTESETINSTANCE_ID, UNITS, PRICE, AppUser) "
+ + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", new SerializerWriteBasicExt(stockdiaryDatas,
+ new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8})).exec(params);
}
};
}
-
+ */
/**
*
* @return
@@ -1356,6 +1563,63 @@ public int execInTransaction(Object params) throws BasicException {
};
}
+ /**
+ * @param params[0] Product ID
+ * @param params[1] location Location to adjust from
+ * @param params[2] Attribute ID
+ * @param params[3] Units
+ */
+ private int adjustStock(Object params[]) throws BasicException {
+ /* Retrieve product kit */
+ List kit = getProductsKit((String) ((Object[]) params)[1]);
+ if (kit.size() > 0) {
+ /* If this is a kit, i.e. has hits, call recursively for each product */
+ int as = 0;
+ for (ProductsRecipeInfo component : kit) {
+ Object[] adjustParams = new Object[4];
+ adjustParams[0] = params[0];
+ adjustParams[1] = component.getProductKitId();
+ adjustParams[2] = params[2];
+ adjustParams[3] = ((Double) params[3]) * component.getQuantity();
+ as += adjustStock(adjustParams);
+ }
+ return as;
+ } else {
+ /* If not, adjust the stock */
+ int updateresult = ((Object[]) params)[2] == null // si ATTRIBUTESETINSTANCE_ID is null
+ ? new PreparedSentence(s, "UPDATE STOCKCURRENT SET UNITS = (UNITS + ?) WHERE LOCATION = ? AND PRODUCT = ? AND ATTRIBUTESETINSTANCE_ID IS NULL", new SerializerWriteBasicExt(stockAdjustDatas, new int[]{3, 0, 1})).exec(params)
+ : new PreparedSentence(s, "UPDATE STOCKCURRENT SET UNITS = (UNITS + ?) WHERE LOCATION = ? AND PRODUCT = ? AND ATTRIBUTESETINSTANCE_ID = ?", new SerializerWriteBasicExt(stockAdjustDatas, new int[]{3, 0, 1, 2})).exec(params);
+
+ if (updateresult == 0) {
+ new PreparedSentence(s, "INSERT INTO STOCKCURRENT (LOCATION, PRODUCT, ATTRIBUTESETINSTANCE_ID, UNITS) VALUES (?, ?, ?, ?)", new SerializerWriteBasicExt(stockAdjustDatas, new int[]{0, 1, 2, 3})).exec(params);
+ }
+ return 1;
+ }
+ }
+
+ public void addProductListItem(String listName, String ProductID) throws BasicException {
+ new PreparedSentence(s, "INSERT INTO PRODUCTLISTS (LISTNAME, PRODUCT) VALUES ('"
+ + listName + "','" + ProductID + "')", null).exec();
+ }
+
+ /**
+ *
+ * @return
+ */
+ public void removeProductListItem(String listName, String ProductID) throws BasicException {
+ new PreparedSentence(s, "DELETE FROM PRODUCTLISTS WHERE LISTNAME ='"
+ + listName + "' AND PRODUCT = '" + ProductID + "'", null).exec();
+ }
+
+ /**
+ *
+ * @return
+ */
+ public void removeProductList(String listName) throws BasicException {
+ new PreparedSentence(s, "DELETE FROM PRODUCTLISTS WHERE LISTNAME ='"
+ + listName + "'", null).exec();
+ }
+
/**
*
* @return
@@ -1384,6 +1648,12 @@ public int execInTransaction(Object params) throws BasicException {
};
}
+ public final Double getCustomerDebt(String id) throws BasicException {
+ return (Double) new PreparedSentence(s, "SELECT CURDEBT FROM CUSTOMERS WHERE ID = ? ",
+ SerializerWriteString.INSTANCE, SerializerReadDouble.INSTANCE).find(id);
+
+ }
+
/**
*
* @param warehouse
@@ -1393,15 +1663,25 @@ public int execInTransaction(Object params) throws BasicException {
* @throws BasicException
*/
public final double findProductStock(String warehouse, String id, String attsetinstid) throws BasicException {
-
PreparedSentence p = attsetinstid == null
? new PreparedSentence(s, "SELECT UNITS FROM STOCKCURRENT WHERE LOCATION = ? AND PRODUCT = ? AND ATTRIBUTESETINSTANCE_ID IS NULL", new SerializerWriteBasic(Datas.STRING, Datas.STRING), SerializerReadDouble.INSTANCE)
: new PreparedSentence(s, "SELECT UNITS FROM STOCKCURRENT WHERE LOCATION = ? AND PRODUCT = ? AND ATTRIBUTESETINSTANCE_ID = ?", new SerializerWriteBasic(Datas.STRING, Datas.STRING, Datas.STRING), SerializerReadDouble.INSTANCE);
-
Double d = (Double) p.find(warehouse, id, attsetinstid);
return d == null ? 0.0 : d;
}
+ public final double findProductStockSecurity(String warehouse, String id) throws BasicException {
+ PreparedSentence p = new PreparedSentence(s, "SELECT STOCKSECURITY FROM STOCKLEVEL WHERE LOCATION = ? AND PRODUCT = ? ", new SerializerWriteBasic(Datas.STRING, Datas.STRING), SerializerReadDouble.INSTANCE);
+ Double d = (Double) p.find(warehouse, id);
+ return d == null ? 0.0 : d;
+ }
+
+ public final double findProductStockMaximum(String warehouse, String id) throws BasicException {
+ PreparedSentence p = new PreparedSentence(s, "SELECT STOCKMAXIMUM FROM STOCKLEVEL WHERE LOCATION = ? AND PRODUCT = ? ", new SerializerWriteBasic(Datas.STRING, Datas.STRING), SerializerReadDouble.INSTANCE);
+ Double d = (Double) p.find(warehouse, id);
+ return d == null ? 0.0 : d;
+ }
+
/**
*
* @return
@@ -1424,9 +1704,9 @@ public final SentenceExec getCatalogCategoryDel() {
*/
public final TableDefinition getTableCategories() {
return new TableDefinition(s,
- "CATEGORIES", new String[]{"ID", "NAME", "PARENTID", "IMAGE",
- "TEXTTIP", "CATSHOWNAME", "COLOUR", "CATORDER"},
- new String[]{"ID", AppLocal.getIntString("Label.Name"), "",
+ "CATEGORIES", new String[]{"ID", "NAME", "PARENTID", "IMAGE",
+ "TEXTTIP", "CATSHOWNAME", "COLOUR", "CATORDER"},
+ new String[]{"ID", AppLocal.getIntString("Label.Name"), "",
AppLocal.getIntString("label.image")}, new Datas[]{Datas.STRING, Datas.STRING, Datas.STRING, Datas.IMAGE, Datas.STRING, Datas.BOOLEAN, Datas.STRING, Datas.INT}, new Formats[]{Formats.STRING, Formats.STRING, Formats.STRING, Formats.NULL, Formats.STRING, Formats.BOOLEAN, Formats.STRING, Formats.INT}, new int[]{0}
);
}
@@ -1437,10 +1717,10 @@ public final TableDefinition getTableCategories() {
*/
public final TableDefinition getTableTaxes() {
return new TableDefinition(s,
- "TAXES", new String[]{"ID", "NAME", "CATEGORY", "CUSTCATEGORY", "PARENTID", "RATE", "RATECASCADE", "RATEORDER"},
+ "TAXES", new String[]{"ID", "NAME", "CATEGORY", "CUSTCATEGORY", "PARENTID", "RATE", "RATECASCADE", "RATEORDER"},
new String[]{"ID", AppLocal.getIntString("Label.Name"), AppLocal.getIntString("label.taxcategory"),
AppLocal.getIntString("label.custtaxcategory"), AppLocal.getIntString("label.taxparent"), AppLocal.getIntString("label.dutyrate"),
- AppLocal.getIntString("label.cascade"), AppLocal.getIntString("label.order")},
+ AppLocal.getIntString("label.cascade"), AppLocal.getIntString("label.order")},
new Datas[]{Datas.STRING, Datas.STRING, Datas.STRING, Datas.STRING, Datas.STRING, Datas.DOUBLE, Datas.BOOLEAN, Datas.INT},
new Formats[]{Formats.STRING, Formats.STRING, Formats.STRING, Formats.STRING, Formats.STRING, Formats.PERCENT, Formats.BOOLEAN, Formats.INT},
new int[]{0},
@@ -1454,8 +1734,8 @@ public final TableDefinition getTableTaxes() {
*/
public final TableDefinition getTableTaxCustCategories() {
return new TableDefinition(s,
- "TAXCUSTCATEGORIES", new String[]{"ID", "NAME"},
- new String[]{"ID", AppLocal.getIntString("Label.Name")},
+ "TAXCUSTCATEGORIES", new String[]{"ID", "NAME"},
+ new String[]{"ID", AppLocal.getIntString("Label.Name")},
new Datas[]{Datas.STRING, Datas.STRING},
new Formats[]{Formats.STRING, Formats.STRING},
new int[]{0},
@@ -1469,9 +1749,9 @@ public final TableDefinition getTableTaxCustCategories() {
*/
public final TableDefinition getTableTaxCategories() {
return new TableDefinition(s,
- "TAXCATEGORIES", new String[]{"ID", "NAME"},
+ "TAXCATEGORIES", new String[]{"ID", "NAME"},
new String[]{"ID", AppLocal.getIntString("Label.Name")},
- new Datas[]{Datas.STRING, Datas.STRING},
+ new Datas[]{Datas.STRING, Datas.STRING},
new Formats[]{Formats.STRING, Formats.STRING},
new int[]{0},
"NAME"
@@ -1484,9 +1764,9 @@ public final TableDefinition getTableTaxCategories() {
*/
public final TableDefinition getTableLocations() {
return new TableDefinition(s,
- "LOCATIONS", new String[]{"ID", "NAME", "ADDRESS"},
- new String[]{"ID", AppLocal.getIntString("label.locationname"), AppLocal.getIntString("label.locationaddress")},
- new Datas[]{Datas.STRING, Datas.STRING, Datas.STRING},
+ "LOCATIONS", new String[]{"ID", "NAME", "ADDRESS"},
+ new String[]{"ID", AppLocal.getIntString("label.locationname"), AppLocal.getIntString("label.locationaddress")},
+ new Datas[]{Datas.STRING, Datas.STRING, Datas.STRING},
new Formats[]{Formats.STRING, Formats.STRING, Formats.STRING},
new int[]{0},
"NAME"
@@ -1505,10 +1785,18 @@ public final boolean getVoucher(String id) throws BasicException {
!= null;
}
+ public final String getProductNameByCode(String sCode) throws BasicException {
+ return (String) m_productname.find(sCode);
+ }
+
public final void sellVoucher(Object[] voucher) throws BasicException {
m_sellvoucher.exec(voucher);
}
+ public final void insertCategory(Object[] voucher) throws BasicException {
+ m_insertcat.exec(voucher);
+ }
+
/**
*
*/
@@ -1546,6 +1834,8 @@ public Object readValues(DataRead dr) throws BasicException {
c.setRegion(dr.getString(22));
c.setCountry(dr.getString(23));
c.setImage(dr.getString(24));
+ c.setDoB(dr.getTimestamp(25));
+ c.setDiscount(dr.getDouble(26));
return c;
}
diff --git a/src-pos/uk/chromis/pos/forms/DataLogicStockChanges.java b/src-pos/uk/chromis/pos/forms/DataLogicStockChanges.java
index 4474c714..5f0f3f7b 100644
--- a/src-pos/uk/chromis/pos/forms/DataLogicStockChanges.java
+++ b/src-pos/uk/chromis/pos/forms/DataLogicStockChanges.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -163,7 +163,7 @@ public final PreparedSentence getChangesListbyLocation() {
return new PreparedSentence(m_session,
"SELECT C.ID, C.LOCATION, C.USERNAME, C.UPLOADTIME, "
+ "C.PRODUCTID, C.CHANGETYPE, C.CHANGES_PROCESSED, C.FIELD, "
- + "C.TEXTVALUE, C.BLOBVALUE, IFNULL(P.NAME,'***NEW PRODUCT') AS PRODUCTNAME, P.REFERENCE AS PRODUCTREF "
+ + "C.TEXTVALUE, C.BLOBVALUE, COALESCE(P.NAME,'***NEW PRODUCT') AS PRODUCTNAME, P.REFERENCE AS PRODUCTREF "
+ "FROM STOCKCHANGES C LEFT JOIN PRODUCTS P ON (C.PRODUCTID = P.ID) "
+ "WHERE C.LOCATION = ? "
+ "ORDER BY C.LOCATION, P.NAME, C.PRODUCTID",
@@ -178,7 +178,7 @@ public final PreparedSentence getChangesListbyDate( SerializerWrite serializerWr
return new PreparedSentence(m_session,
"SELECT C.ID, C.LOCATION, C.USERNAME, C.UPLOADTIME, "
+ "C.PRODUCTID, C.CHANGETYPE, C.CHANGES_PROCESSED, C.FIELD, "
- + "C.TEXTVALUE, C.BLOBVALUE, IFNULL(P.NAME,'***NEW PRODUCT') AS PRODUCTNAME, P.REFERENCE AS PRODUCTREF "
+ + "C.TEXTVALUE, C.BLOBVALUE, COALESCE(P.NAME,'***NEW PRODUCT') AS PRODUCTNAME, P.REFERENCE AS PRODUCTREF "
+ "FROM STOCKCHANGES C LEFT JOIN PRODUCTS P ON (C.PRODUCTID = P.ID) "
+ "WHERE C.UPLOADTIME > ? AND C.UPLOADTIME < ? "
+ "ORDER BY C.LOCATION, P.NAME, C.PRODUCTID",
diff --git a/src-pos/uk/chromis/pos/forms/DataLogicSystem.java b/src-pos/uk/chromis/pos/forms/DataLogicSystem.java
index 649e640e..d02b8cb3 100644
--- a/src-pos/uk/chromis/pos/forms/DataLogicSystem.java
+++ b/src-pos/uk/chromis/pos/forms/DataLogicSystem.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,7 +16,6 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.pos.forms;
import java.awt.image.BufferedImage;
@@ -28,6 +27,8 @@
import java.util.Map;
import java.util.Properties;
import java.util.UUID;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import uk.chromis.basic.BasicException;
@@ -60,7 +61,7 @@ public class DataLogicSystem extends BeanFactoryDataSingle {
protected String m_sInitScript;
private SentenceFind m_version;
private SentenceExec m_dummy;
- private String m_dbVersion = "";
+ public static String m_dbVersion = "";
protected SentenceList m_peoplevisible;
protected SentenceList m_peoplevisibleByRights;
protected SentenceFind m_peoplebycard;
@@ -82,7 +83,7 @@ public class DataLogicSystem extends BeanFactoryDataSingle {
private SentenceFind m_getProductByName;
private SentenceFind m_getRecordCount;
-
+ private SentenceFind m_checkHistoricVersion;
private SentenceFind m_resourcebytes;
private SentenceExec m_resourcebytesinsert;
private SentenceExec m_resourcebytesupdate;
@@ -93,6 +94,7 @@ public class DataLogicSystem extends BeanFactoryDataSingle {
protected SentenceExec m_updatepermissions;
protected SentenceExec m_lineremoved;
private SentenceExec m_addOrder;
+ private SentenceExec m_updatePlaces;
private String SQL;
private Map resourcescache;
@@ -102,10 +104,18 @@ public DataLogicSystem() {
@Override
public void init(Session s) {
-
+
m_sInitScript = "/uk/chromis/pos/scripts/" + s.DB.getName();
m_dbVersion = s.DB.getName();
+ // Easure we use innodb as the default engine
+ if ("MySQL".equals(m_dbVersion)) {
+ try {
+ new StaticSentence(s, "SET storage_engine=INNODB").exec();
+ } catch (BasicException ex) {
+ }
+ }
+
m_version = new PreparedSentence(s, "SELECT VERSION FROM APPLICATIONS WHERE ID = ?", SerializerWriteString.INSTANCE, SerializerReadString.INSTANCE);
m_dummy = new StaticSentence(s, "SELECT * FROM PEOPLE WHERE 1 = 0");
@@ -131,6 +141,15 @@ public String readValues(DataRead dr) throws BasicException {
}
};
+ m_updatePlaces = new StaticSentence(s, "UPDATE PLACES SET X = ?, Y = ? WHERE ID = ? ", new SerializerWriteBasic(new Datas[]{
+ Datas.INT,
+ Datas.INT,
+ Datas.STRING
+ }));
+
+ m_checkHistoricVersion = new PreparedSentence(s, "SELECT COUNT(*) FROM HVERSIONS WHERE VERSION = ? ", SerializerWriteString.INSTANCE, SerializerReadInteger.INSTANCE
+ );
+
m_getProductAllFields = new PreparedSentence(s, "SELECT ID FROM PRODUCTS WHERE REFERENCE=? AND CODE=? AND NAME=? ", new SerializerWriteBasic(new Datas[]{Datas.STRING, Datas.STRING, Datas.STRING}), productIdRead
);
@@ -171,7 +190,7 @@ public String readValues(DataRead dr) throws BasicException {
m_getsuperuser = new PreparedSentence(s, "SELECT ID, NAME, APPPASSWORD, CARD, ROLE, IMAGE FROM PEOPLE WHERE NAME = 'SuperAdminUser' ", null, peopleread);
- m_resourcebytes = new PreparedSentence(s, "SELECT CONTENT FROM RESOURCES WHERE NAME = ?", SerializerWriteString.INSTANCE, SerializerReadBytes.INSTANCE);
+ m_resourcebytes = new PreparedSentence(s, "SELECT CONTENT FROM RESOURCES WHERE NAME = ? ", SerializerWriteString.INSTANCE, SerializerReadBytes.INSTANCE);
Datas[] resourcedata = new Datas[]{Datas.STRING, Datas.STRING, Datas.INT, Datas.BYTES};
m_resourcebytesinsert = new PreparedSentence(s, "INSERT INTO RESOURCES(ID, NAME, RESTYPE, CONTENT) VALUES (?, ?, ?, ?)", new SerializerWriteBasic(resourcedata));
@@ -201,15 +220,16 @@ public String readValues(DataRead dr) throws BasicException {
Datas.TIMESTAMP,
Datas.TIMESTAMP}));
- m_draweropened = new StaticSentence(s, "INSERT INTO DRAWEROPENED ( NAME, TICKETID) "
- + "VALUES (?, ?)", new SerializerWriteBasic(new Datas[]{
+ m_draweropened = new StaticSentence(s, "INSERT INTO DRAWEROPENED (ID, NAME, TICKETID) "
+ + "VALUES (?, ?, ?)", new SerializerWriteBasic(new Datas[]{
+ Datas.STRING,
Datas.STRING,
Datas.STRING}));
m_lineremoved = new StaticSentence(s,
- "INSERT INTO LINEREMOVED (NAME, TICKETID, PRODUCTID, PRODUCTNAME, UNITS) "
- + "VALUES (?, ?, ?, ?, ?)",
- new SerializerWriteBasic(new Datas[]{Datas.STRING, Datas.STRING, Datas.STRING, Datas.STRING, Datas.DOUBLE}));
+ "INSERT INTO LINEREMOVED (ID,NAME, TICKETID, PRODUCTID, PRODUCTNAME, UNITS) "
+ + "VALUES (?, ?, ?, ?, ?, ?)",
+ new SerializerWriteBasic(new Datas[]{Datas.STRING, Datas.STRING, Datas.STRING, Datas.STRING, Datas.STRING, Datas.DOUBLE}));
m_locationfind = new StaticSentence(s, "SELECT NAME FROM LOCATIONS WHERE ID = ?", SerializerWriteString.INSTANCE, SerializerReadString.INSTANCE);
@@ -239,8 +259,8 @@ public String readValues(DataRead dr) throws BasicException {
Datas.STRING
}));
- m_addOrder = new StaticSentence(s, "INSERT INTO ORDERS (ID, ORDERID, QTY, DETAILS, ATTRIBUTES, NOTES, TICKETID, DISPLAYID, AUXILIARY) "
- + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) ", new SerializerWriteBasic(new Datas[]{
+ m_addOrder = new StaticSentence(s, "INSERT INTO ORDERS (ID, ORDERID, QTY, DETAILS, ATTRIBUTES, NOTES, TICKETID, DISPLAYID, AUXILIARY, SEQUENCE) "
+ + "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ", new SerializerWriteBasic(new Datas[]{
Datas.STRING,
Datas.STRING,
Datas.INT,
@@ -249,6 +269,7 @@ public String readValues(DataRead dr) throws BasicException {
Datas.STRING,
Datas.STRING,
Datas.INT,
+ Datas.INT,
Datas.INT
}));
@@ -297,7 +318,6 @@ public final AppUser getsuperuser() throws BasicException {
}
public final String findRolePermissions(String sRole) {
-
try {
return Formats.BYTEA.formatValue(m_rolepermissions.find(sRole));
} catch (BasicException e) {
@@ -305,6 +325,16 @@ public final String findRolePermissions(String sRole) {
}
}
+ public final int checkHistoricVersion(String version) {
+ try {
+ Integer i = (Integer) m_checkHistoricVersion.find(version);
+ return (i == null) ? 0 : i;
+ } catch (BasicException ex) {
+ Logger.getLogger(DataLogicSystem.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ return 0;
+ }
+
public final void execChangePassword(Object[] userdata) throws BasicException {
m_changepassword.exec(userdata);
}
@@ -404,7 +434,7 @@ public final Object[] findActiveCash(String sActiveCashIndex) throws BasicExcept
return (Object[]) m_activecash.find(sActiveCashIndex);
}
- public final int getRecordCount(String money, String ticket ) throws BasicException {
+ public final int getRecordCount(String money, String ticket) throws BasicException {
Integer i = (Integer) m_getRecordCount.find(money, ticket);
return (i == null) ? 1 : i;
}
@@ -487,8 +517,11 @@ public final String getProductRecordType(Object[] myProduct) throws BasicExcepti
return "new";
}
- public final void addOrder(String id, String orderId, Integer qty, String details, String attributes, String notes, String ticketId, Integer displayId, Integer auxiliaryId) throws BasicException {
- m_addOrder.exec(id, orderId, qty, details, attributes, notes, ticketId, displayId, auxiliaryId);
+ public final void updatePlaces(int x, int y, String id) throws BasicException {
+ m_updatePlaces.exec(x, y, id);
}
+ public final void addOrder(String id, String orderId, Integer qty, String details, String attributes, String notes, String ticketId, Integer displayId, Integer auxiliaryId, Integer sequence) throws BasicException {
+ m_addOrder.exec(id, orderId, qty, details, attributes, notes, ticketId, displayId, auxiliaryId, sequence);
+ }
}
diff --git a/src-pos/uk/chromis/pos/forms/DriverWrapper.java b/src-pos/uk/chromis/pos/forms/DriverWrapper.java
index b295bcef..24e995b0 100644
--- a/src-pos/uk/chromis/pos/forms/DriverWrapper.java
+++ b/src-pos/uk/chromis/pos/forms/DriverWrapper.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/JDlgChangePassword.java b/src-pos/uk/chromis/pos/forms/JDlgChangePassword.java
index 34de656b..bac791d8 100644
--- a/src-pos/uk/chromis/pos/forms/JDlgChangePassword.java
+++ b/src-pos/uk/chromis/pos/forms/JDlgChangePassword.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/JPanelMenu.java b/src-pos/uk/chromis/pos/forms/JPanelMenu.java
index b45a6f59..a51f5944 100644
--- a/src-pos/uk/chromis/pos/forms/JPanelMenu.java
+++ b/src-pos/uk/chromis/pos/forms/JPanelMenu.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,7 +16,6 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.pos.forms;
import java.awt.Component;
@@ -29,18 +28,21 @@
* @author adrianromero
*/
public class JPanelMenu extends JPanel implements JPanelView {
-
+
private MenuDefinition m_menu;
private boolean created = false;
-
- /** Creates new form JStockMenu
- * @param menu */
+
+ /**
+ * Creates new form JStockMenu
+ *
+ * @param menu
+ */
public JPanelMenu(MenuDefinition menu) {
-
+
m_menu = menu;
created = false;
-
- initComponents();
+
+ initComponents();
}
/**
@@ -51,7 +53,7 @@ public JPanelMenu(MenuDefinition menu) {
public JComponent getComponent() {
return this;
}
-
+
/**
*
* @return
@@ -67,13 +69,13 @@ public String getTitle() {
*/
@Override
public void activate() throws BasicException {
-
+
if (created == false) {
- for(int i = 0; i < m_menu.countMenuElements(); i++) {
+ for (int i = 0; i < m_menu.countMenuElements(); i++) {
MenuElement menuitem = m_menu.getMenuElement(i);
menuitem.addComponent(this);
- }
+ }
created = true;
}
}
@@ -83,49 +85,50 @@ public void activate() throws BasicException {
* @return
*/
@Override
- public boolean deactivate() {
+ public boolean deactivate() {
return true;
}
-
+
/**
*
* @param title
*/
public void addTitle(Component title) {
-
+
currententrypanel = null;
-
+
JPanel titlepanel = new JPanel();
titlepanel.setLayout(new java.awt.BorderLayout());
- titlepanel.add(title, java.awt.BorderLayout.CENTER);
+ titlepanel.add(title, java.awt.BorderLayout.CENTER);
titlepanel.applyComponentOrientation(getComponentOrientation());
-
+
menucontainer.add(titlepanel);
}
-
+
/**
*
* @param entry
*/
public void addEntry(Component entry) {
-
+
if (currententrypanel == null) {
- currententrypanel = new JPanel();
+ currententrypanel = new JPanel();
currententrypanel.setBorder(javax.swing.BorderFactory.createEmptyBorder(10, 0, 20, 0));
currententrypanel.setLayout(new java.awt.GridLayout(0, 3, 5, 5));
- menucontainer.add(currententrypanel);
+ menucontainer.add(currententrypanel);
}
-
+
currententrypanel.add(entry);
currententrypanel.applyComponentOrientation(getComponentOrientation());
-
+
}
-
+
private JPanel currententrypanel = null;
- /** This method is called from within the constructor to
- * initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is
- * always regenerated by the Form Editor.
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
*/
// //GEN-BEGIN:initComponents
private void initComponents() {
@@ -139,10 +142,10 @@ private void initComponents() {
menucontainer.setLayout(new javax.swing.BoxLayout(menucontainer, javax.swing.BoxLayout.Y_AXIS));
add(menucontainer, java.awt.BorderLayout.NORTH);
}// //GEN-END:initComponents
-
-
+
+
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel menucontainer;
// End of variables declaration//GEN-END:variables
-
+
}
diff --git a/src-pos/uk/chromis/pos/forms/JPanelNull.java b/src-pos/uk/chromis/pos/forms/JPanelNull.java
index f8aed690..2d5ce2ec 100644
--- a/src-pos/uk/chromis/pos/forms/JPanelNull.java
+++ b/src-pos/uk/chromis/pos/forms/JPanelNull.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/JPanelView.java b/src-pos/uk/chromis/pos/forms/JPanelView.java
index a2df8172..92c8dffa 100644
--- a/src-pos/uk/chromis/pos/forms/JPanelView.java
+++ b/src-pos/uk/chromis/pos/forms/JPanelView.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -27,28 +27,9 @@
* @author adrianromero
*/
public interface JPanelView {
-
- /**
- *
- * @return
- */
- public abstract String getTitle();
- /**
- *
- * @throws BasicException
- */
+ public abstract String getTitle();
public abstract void activate() throws BasicException;
-
- /**
- *
- * @return
- */
public abstract boolean deactivate();
-
- /**
- *
- * @return
- */
public abstract JComponent getComponent();
}
diff --git a/src-pos/uk/chromis/pos/forms/JPrincipalApp.form b/src-pos/uk/chromis/pos/forms/JPrincipalApp.form
index 0dd0c7e7..be01ce8b 100644
--- a/src-pos/uk/chromis/pos/forms/JPrincipalApp.form
+++ b/src-pos/uk/chromis/pos/forms/JPrincipalApp.form
@@ -42,7 +42,9 @@
-
+
+
+
diff --git a/src-pos/uk/chromis/pos/forms/JPrincipalApp.java b/src-pos/uk/chromis/pos/forms/JPrincipalApp.java
index 6c68b08f..0d492cdd 100644
--- a/src-pos/uk/chromis/pos/forms/JPrincipalApp.java
+++ b/src-pos/uk/chromis/pos/forms/JPrincipalApp.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
//
// This file is part of chromis oPOS
//
@@ -583,7 +583,8 @@ private void initComponents() {
jPanel2.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2, javax.swing.BoxLayout.Y_AXIS));
- jButton1.setToolTipText("Open/Close Menu");
+ java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N
+ jButton1.setToolTipText(bundle.getString("tiptext.openclosemenu")); // NOI18N
jButton1.setFocusPainted(false);
jButton1.setFocusable(false);
jButton1.setIconTextGap(0);
diff --git a/src-pos/uk/chromis/pos/forms/JRootApp.form b/src-pos/uk/chromis/pos/forms/JRootApp.form
index f2ce6c1f..16f4b6d4 100644
--- a/src-pos/uk/chromis/pos/forms/JRootApp.form
+++ b/src-pos/uk/chromis/pos/forms/JRootApp.form
@@ -94,8 +94,9 @@
-
+
+
@@ -127,6 +128,14 @@
+
+
+
+
+
+
+
+
@@ -137,6 +146,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -154,21 +176,14 @@
-
-
-
-
-
-
-
+
+
-
+
+
-
-
-
@@ -203,18 +218,14 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
@@ -293,13 +304,11 @@
-
-
-
-
-
-
-
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/forms/JRootApp.java b/src-pos/uk/chromis/pos/forms/JRootApp.java
index a7e0bb30..30f45c00 100644
--- a/src-pos/uk/chromis/pos/forms/JRootApp.java
+++ b/src-pos/uk/chromis/pos/forms/JRootApp.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,18 +16,26 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see
+//
package uk.chromis.pos.forms;
import java.awt.CardLayout;
import java.awt.ComponentOrientation;
import java.awt.Cursor;
import java.awt.Dimension;
+import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.io.BufferedReader;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.net.MalformedURLException;
+import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLClassLoader;
import java.sql.Connection;
@@ -52,17 +60,18 @@
import javax.swing.AbstractButton;
import javax.swing.Action;
import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTable;
import javax.swing.SwingConstants;
import javax.swing.SwingUtilities;
-import liquibase.Liquibase;
-import liquibase.database.Database;
-import liquibase.database.DatabaseFactory;
-import liquibase.database.jvm.JdbcConnection;
-import liquibase.exception.DatabaseException;
-import liquibase.exception.LiquibaseException;
-import liquibase.resource.ClassLoaderResourceAccessor;
+import javax.swing.WindowConstants;
+import javax.swing.table.DefaultTableModel;
+import net.miginfocom.swing.MigLayout;
+import org.apache.commons.io.FileUtils;
import uk.chromis.basic.BasicException;
import uk.chromis.beans.JFlowPanel;
import uk.chromis.beans.JPasswordDialog;
@@ -70,13 +79,17 @@
import uk.chromis.data.gui.MessageInf;
import uk.chromis.data.loader.Session;
import uk.chromis.format.Formats;
+import uk.chromis.pos.dialogs.JOpenWarningDlg;
+import uk.chromis.pos.dialogs.JProcessingDlg;
import uk.chromis.pos.printer.DeviceTicket;
import uk.chromis.pos.printer.TicketParser;
import uk.chromis.pos.printer.TicketPrinterException;
import uk.chromis.pos.scale.DeviceScale;
import uk.chromis.pos.scanpal2.DeviceScanner;
import uk.chromis.pos.scanpal2.DeviceScannerFactory;
+import uk.chromis.pos.sync.Sync;
import uk.chromis.pos.util.AltEncrypter;
+import uk.chromis.pos.util.OSValidator;
public class JRootApp extends JPanel implements AppView {
@@ -91,7 +104,7 @@ public class JRootApp extends JPanel implements AppView {
private Date m_dActiveCashDateEnd;
private String m_sInventoryLocation;
private StringBuilder inputtext;
- private DeviceScale m_Scale;
+ public static DeviceScale m_Scale;
private DeviceScanner m_Scanner;
private DeviceTicket m_TP;
private TicketParser m_TTP;
@@ -115,7 +128,7 @@ public class JRootApp extends JPanel implements AppView {
private String db_password;
static {
- initOldClasses();
+ m_oldclasses = new HashMap<>();
}
private class PrintTimeAction implements ActionListener {
@@ -125,34 +138,72 @@ public void actionPerformed(ActionEvent evt) {
m_clock = getLineTimer();
m_date = getLineDate();
m_jLblTitle.setText(m_dlSystem.getResourceAsText("Window.Title"));
- m_jLblTitle.repaint();
jLabel2.setText(" " + m_date + " " + m_clock);
+
}
}
private String getLineTimer() {
- try {
- if ((AppConfig.getInstance().getProperty("clock.time") == "") || (AppConfig.getInstance().getProperty("clock.time") == null)) {
- return Formats.HOURMIN.formatValue(new Date());
- } else {
- formatter = new SimpleDateFormat(AppConfig.getInstance().getProperty("clock.time"));
- return formatter.format(new Date());
- }
- } catch (IllegalArgumentException e) {
- return Formats.HOURMIN.formatValue(new Date());
- }
+ return Formats.TIME.formatValue(new Date());
}
private String getLineDate() {
+ return Formats.DATE.formatValue(new Date());
+ }
+
+ private void runRepair() throws SQLException {
+// this routine checks for a repair script in the folder if it is found then it will execute it
+ String s = new String();
+ StringBuffer sb = new StringBuffer();
+
+ db_user = (AppConfig.getInstance().getProperty("db.user"));
+ db_url = (AppConfig.getInstance().getProperty("db.URL"));
+ db_password = (AppConfig.getInstance().getProperty("db.password"));
+ if (db_user != null && db_password != null && db_password.startsWith("crypt:")) {
+ AltEncrypter cypher = new AltEncrypter("cypherkey" + db_user);
+ db_password = cypher.decrypt(db_password.substring(6));
+ }
+
+ FileReader fr;
+ File file;
try {
- if ((AppConfig.getInstance().getProperty("clock.date") == "") || (AppConfig.getInstance().getProperty("clock.date") == null)) {
- return Formats.SIMPLEDATE.formatValue(new Date());
- } else {
- formatter = new SimpleDateFormat(AppConfig.getInstance().getProperty("clock.date"));
- return formatter.format(new Date());
+ file = new File(System.getProperty("user.dir") + "/repair.sql");
+ fr = new FileReader(file);
+ } catch (FileNotFoundException ex) {
+ return;
+ }
+
+ try {
+ ClassLoader cloader = new URLClassLoader(new URL[]{new File(AppConfig.getInstance().getProperty("db.driverlib")).toURI().toURL()});
+ DriverManager.registerDriver(new DriverWrapper((Driver) Class.forName(AppConfig.getInstance().getProperty("db.driver"), true, cloader).newInstance()));
+ Class.forName(AppConfig.getInstance().getProperty("db.driver"));
+ con = DriverManager.getConnection(db_url, db_user, db_password);
+ stmt = (Statement) con.createStatement();
+
+ BufferedReader br = new BufferedReader(fr);
+
+ while ((s = br.readLine()) != null) {
+ sb.append(s);
}
- } catch (IllegalArgumentException e) {
- return Formats.SIMPLEDATE.formatValue(new Date());
+ br.close();
+ String[] inst = sb.toString().split(";");
+
+ for (int i = 0; i < inst.length; i++) {
+ if (!inst[i].trim().equals("")) {
+ stmt.executeUpdate(inst[i]);
+ System.out.println(">>" + inst[i]);
+ }
+ }
+ file.delete();
+ } catch (Exception e) {
+ System.out.println("*** Error : " + e.toString());
+ System.out.println("*** ");
+ System.out.println("*** Error : ");
+ e.printStackTrace();
+ System.out.println("################################################");
+ System.out.println(sb.toString());
+ } finally {
+ con.close();
}
}
@@ -160,6 +211,14 @@ private String getLineDate() {
* Creates new form JRootApp
*/
public JRootApp() {
+
+ try {
+ //Lets check if there is repair script to execute
+ runRepair();
+ } catch (SQLException ex) {
+ Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
+ }
+
// get some default settings
db_user = (AppConfig.getInstance().getProperty("db.user"));
db_url = (AppConfig.getInstance().getProperty("db.URL"));
@@ -176,12 +235,17 @@ public JRootApp() {
jScrollPane1.getVerticalScrollBar().setPreferredSize(new Dimension(30, 30));
}
+ public static final int INIT_SUCCESS = 0;
+ public static final int INIT_FAIL_CONFIG = 1;
+ public static final int INIT_FAIL_EXIT = 2;
+ public static final int INIT_FAIL_RETRY = 3;
+
/**
*
* @param props
* @return
*/
- public boolean initApp(AppProperties props) {
+ public int initApp(AppProperties props) {
m_props = props;
m_jPanelDown.setVisible(!AppConfig.getInstance().getBoolean("till.hideinfo"));
@@ -190,65 +254,72 @@ public boolean initApp(AppProperties props) {
applyComponentOrientation(ComponentOrientation.getOrientation(Locale.getDefault()));
// Database start
- try {
- session = AppViewConnection.createSession(m_props);
- } catch (BasicException e) {
- JMessageDialog.showMessage(this, new MessageInf(MessageInf.SGN_DANGER, e.getMessage(), e));
- return false;
+ int rc = INIT_FAIL_RETRY;
+ while (rc == INIT_FAIL_RETRY) {
+ rc = INIT_SUCCESS;
+ try {
+ session = AppViewConnection.createSession(m_props);
+ } catch (BasicException e) {
+ JOpenWarningDlg wDlg = new JOpenWarningDlg(e.getMessage(), AppLocal.getIntString("message.retryorconfig"), true, true);
+ wDlg.setModal(true);
+ wDlg.setVisible(true);
+ rc = JOpenWarningDlg.CHOICE;
+ }
+ }
+
+ if (rc != INIT_SUCCESS) {
+ return rc;
}
m_dlSystem = (DataLogicSystem) getBean("uk.chromis.pos.forms.DataLogicSystem");
String sDBVersion = readDataBaseVersion();
+ if (!AppConfig.getInstance().getBoolean("chromis.tickettype") && sDBVersion != null) {
+ UpdateTicketType.updateTicketType();
+ }
if (!AppLocal.APP_VERSION.equals(sDBVersion)) {
+// Lets check if this is a historic version of the jar and it is in the database
+/* if (m_dlSystem.checkHistoricVersion(AppLocal.APP_VERSION) != 0) {
+ StartupDialog dialog = new StartupDialog();
+ JFrame frame = new JFrame("");
+ JPanel dialogPanel = new JPanel();
+ dialogPanel.add(dialog);
+ dialog.jTextArea1.setText("\n Unable to run Chromis. \n \n You are trying to run an incompatible version of Chromis."
+ + "\n\n The database found is v" + sDBVersion);
+ JOptionPane.showMessageDialog(frame,
+ dialogPanel,
+ "Incompatible version ",
+ JOptionPane.PLAIN_MESSAGE);
+ System.exit(1);
+ }
+ */
if (getDbVersion().equals("x")) {
JMessageDialog.showMessage(this, new MessageInf(MessageInf.SGN_DANGER,
AppLocal.getIntString("message.databasenotsupported", session.DB.getName())));
- } else {
+ } else {
String changelog = (sDBVersion == null) || ("0.00".equals(sDBVersion))
- ? "uk/chromis/pos/liquibase/chromis.xml"
- : "uk/chromis/pos/liquibase/updatesystem.xml";
- if (JOptionPane.showConfirmDialog(this, AppLocal.getIntString(sDBVersion == null ? "message.createdatabase" : "message.updatedatabase"), AppLocal.getIntString("message.title"), JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
-
- try {
- ClassLoader cloader = new URLClassLoader(new URL[]{new File(AppConfig.getInstance().getProperty("db.driverlib")).toURI().toURL()});
- DriverManager.registerDriver(new DriverWrapper((Driver) Class.forName(AppConfig.getInstance().getProperty("db.driver"), true, cloader).newInstance()));
-
- Liquibase liquibase = null;
- Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(DriverManager.getConnection(db_url, db_user, db_password)));
- liquibase = new Liquibase(changelog, new ClassLoaderResourceAccessor(), database);
- liquibase.update("implement");
-
- } catch (DatabaseException | MalformedURLException | SQLException | ClassNotFoundException | InstantiationException | IllegalAccessException ex) {
- Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
- } catch (LiquibaseException ex) {
- String txt = ex.getMessage();
- if( ex.getCause() != null ) {
- txt = ex.getCause().toString().replace("liquibase.exception.DatabaseException:", "");
- }
- MessageInf msg = new MessageInf(MessageInf.SGN_NOTICE, "Liquibase Error", txt );
- msg.show(this);
- } finally {
- if (con != null) {
- try {
- con.rollback();
- con.close();
- } catch (SQLException e) {
- //nothing to do
- }
- }
- }
- } else {
+ ? "uk/chromis/pos/liquibase/create/chromis.xml"
+ : "uk/chromis/pos/liquibase/upgradeorig/updatesystem.xml";
+ JProcessingDlg dlg = new JProcessingDlg(AppLocal.getIntString(sDBVersion == null ? "message.createdatabase" : "message.updatedatabase"), (sDBVersion == null), changelog);
+ dlg.setModal(true);
+ dlg.setVisible(true);
+ if (JProcessingDlg.CHOICE == -1 || JProcessingDlg.DBFAILED) {
session.close();
- return false;
+ JOpenWarningDlg wDlg;
+ if (!"".equals(JProcessingDlg.ERRORMSG)) {
+ wDlg = new JOpenWarningDlg(JProcessingDlg.ERRORMSG, AppLocal.getIntString(sDBVersion == null ? "message.createfailure" : "message.updatefailure"), false, false);
+ wDlg.setModal(true);
+ wDlg.setVisible(true);
+ }
+ System.exit(0);
}
}
}
// Clear the cash drawer table as required, by setting
try {
- if (getDbVersion() == "d") {
+ if ("d".equals(getDbVersion())) {
SQL = "DELETE FROM DRAWEROPENED WHERE OPENDATE < {fn TIMESTAMPADD(SQL_TSI_DAY ,-" + AppConfig.getInstance().getProperty("dbtable.retaindays") + ", CURRENT_TIMESTAMP)}";
} else {
SQL = "DELETE FROM DRAWEROPENED WHERE OPENDATE < (NOW() - INTERVAL '" + AppConfig.getInstance().getProperty("dbtable.retaindays") + "' DAY)";
@@ -265,36 +336,34 @@ public boolean initApp(AppProperties props) {
? null
: m_dlSystem.findActiveCash(sActiveCashIndex);
if (valcash == null || !AppConfig.getInstance().getHost().equals(valcash[0])) {
- // no la encuentro o no es de mi host por tanto creo una...
setActiveCash(UUID.randomUUID().toString(), m_dlSystem.getSequenceCash(AppConfig.getInstance().getHost()) + 1, new Date(), null);
-
- // creamos la caja activa
m_dlSystem.execInsertCash(
- new Object[]{getActiveCashIndex(), AppConfig.getInstance().getHost(), getActiveCashSequence(), getActiveCashDateStart(), getActiveCashDateEnd()});
+ new Object[]{getActiveCashIndex(), AppConfig.getInstance().getHost(), getActiveCashSequence(), getActiveCashDateStart(), getActiveCashDateEnd(), 0});
} else {
setActiveCash(sActiveCashIndex, (Integer) valcash[1], (Date) valcash[2], (Date) valcash[3]);
}
} catch (BasicException e) {
- // Casco. Sin caja no hay pos
- MessageInf msg = new MessageInf(MessageInf.SGN_NOTICE, AppLocal.getIntString("message.cannotclosecash"), e);
- msg.show(this);
session.close();
- return false;
+ JOpenWarningDlg wDlg = new JOpenWarningDlg(e.getMessage(), AppLocal.getIntString("message.retryorconfig"), false, true);
+ wDlg.setModal(true);
+ wDlg.setVisible(true);
+ return JOpenWarningDlg.CHOICE;
}
-
- // Leo la localizacion de la caja (Almacen).
+
m_sInventoryLocation = m_propsdb.getProperty("location");
- if (m_sInventoryLocation == null) {
+ if (m_sInventoryLocation
+ == null) {
m_sInventoryLocation = "0";
m_propsdb.setProperty("location", m_sInventoryLocation);
- m_dlSystem.setResourceAsProperties(AppConfig.getInstance().getHost() + "/properties", m_propsdb);
+ m_dlSystem.setResourceAsProperties(AppConfig.getInstance().getHost() + "/properties", m_propsdb);
}
- // Inicializo la impresora...
+ // setup the display
m_TP = new DeviceTicket(this, m_props);
// Inicializamos
m_TTP = new TicketParser(getDeviceTicket(), m_dlSystem);
+
printerStart();
// Inicializamos la bascula
@@ -303,9 +372,11 @@ public boolean initApp(AppProperties props) {
// Inicializamos la scanpal
m_Scanner = DeviceScannerFactory.createInstance(m_props);
- new javax.swing.Timer(250, new PrintTimeAction()).start();
+ new javax.swing.Timer(
+ 250, new PrintTimeAction()).start();
String sWareHouse;
+
try {
sWareHouse = m_dlSystem.findLocationName(m_sInventoryLocation);
} catch (BasicException e) {
@@ -314,16 +385,20 @@ public boolean initApp(AppProperties props) {
// Show Hostname, Warehouse and URL in taskbar
String url;
+
try {
url = session.getURL();
} catch (SQLException e) {
url = "";
}
- m_jHost.setText("" + AppConfig.getInstance().getHost() + " - " + sWareHouse + " " + url);
+
+ m_jHost.setText(
+ "" + AppConfig.getInstance().getHost() + " - " + sWareHouse + " " + url);
// display the new logo if set
String newLogo = AppConfig.getInstance().getProperty("start.logo");
- if (newLogo != null) {
+ if (newLogo
+ != null) {
if ("".equals(newLogo)) {
jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/fixedimages/chromis.png")));
} else {
@@ -333,10 +408,11 @@ public boolean initApp(AppProperties props) {
// change text under logo
String newText = AppConfig.getInstance().getProperty("start.text");
- if (newText != null) {
+ if (newText
+ != null) {
if (newText.equals("")) {
jLabel1.setText("
Chromis POS - The New Face of Open Source POS "
- + "Copyright \u00A9 2015 Chromis "
+ + "Copyright \u00A9 (c) 2015-2016Chromis "
+ " "
+ "http://www.chromis.co.uk "
+ " "
@@ -360,9 +436,57 @@ public boolean initApp(AppProperties props) {
}
}
+// Lets copy any database specific reports to the reports folder
+// Get the database version first
+ File dbReportsSource = null;
+ String currentPath = new File("").getAbsolutePath();
+
+ if (OSValidator.isMac()) {
+ try {
+ currentPath = new File(JRootApp.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath()).toString();
+ currentPath = currentPath.replaceAll("/chromispos.jar", "");
+ } catch (URISyntaxException ex) {
+ currentPath = "/Applications/chromispos";
+ }
+ } else {
+ currentPath = System.getProperty("user.dir");
+ }
+
+ switch (getDbVersion()) {
+ case "d":
+ dbReportsSource = new File(currentPath + "/reports/uk/chromis/derby");
+ break;
+ case "m":
+ dbReportsSource = new File(currentPath + "/reports/uk/chromis/mysql");
+ break;
+ case "p":
+ dbReportsSource = new File(currentPath + "/reports/uk/chromis/postgresql");
+ break;
+ }
+
+ File reportsDestination = new File(currentPath + "/reports/uk/chromis/reports");
+
+ try {
+ File reportsSource = new File(currentPath + "/reports/uk/chromis/default");
+ FileUtils.copyDirectory(reportsSource, new File(currentPath + "/reports/uk/chromis/reports"));
+ if ((dbReportsSource) != null) {
+ FileUtils.copyDirectory(dbReportsSource, new File(currentPath + "/reports/uk/chromis/reports"));
+ }
+ } catch (IOException ex) {
+ Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
+ }
+
showLogin();
- return true;
+ return INIT_SUCCESS;
+ }
+
+ private class doWork implements Runnable {
+
+ @Override
+ public void run() {
+
+ }
}
private String readDataBaseVersion() {
@@ -392,9 +516,6 @@ public String getDbVersion() {
}
}
- /**
- *
- */
public void tryToClose() {
if (closeAppView()) {
// success. continue with the shut down
@@ -405,74 +526,41 @@ public void tryToClose() {
}
}
- // Interfaz de aplicacion
- /**
- *
- * @return
- */
@Override
public DeviceTicket getDeviceTicket() {
return m_TP;
}
- /**
- *
- * @return
- */
@Override
public DeviceScale getDeviceScale() {
return m_Scale;
}
- /**
- *
- * @return
- */
@Override
public DeviceScanner getDeviceScanner() {
return m_Scanner;
}
- /**
- *
- * @return
- */
@Override
public Session getSession() {
return session;
}
- /**
- *
- * @return
- */
@Override
public String getInventoryLocation() {
return m_sInventoryLocation;
}
- /**
- *
- * @return
- */
@Override
public String getActiveCashIndex() {
return m_sActiveCashIndex;
}
- /**
- *
- * @return
- */
@Override
public int getActiveCashSequence() {
return m_iActiveCashSequence;
}
- /**
- *
- * @return
- */
@Override
public Date getActiveCashDateStart() {
return m_dActiveCashDateStart;
@@ -523,35 +611,31 @@ public AppProperties getProperties() {
public Object getBean(String beanfactory) throws BeanFactoryException {
// For backwards compatibility
beanfactory = mapNewClass(beanfactory);
-
BeanFactory bf = m_aBeanFactories.get(beanfactory);
if (bf == null) {
// testing sripts
if (beanfactory.startsWith("/")) {
bf = new BeanFactoryScript(beanfactory);
} else {
- // Class BeanFactory
try {
Class bfclass = Class.forName(beanfactory);
- if (BeanFactory.class.isAssignableFrom(bfclass)) {
+ if (BeanFactory.class
+ .isAssignableFrom(bfclass)) {
bf = (BeanFactory) bfclass.newInstance();
} else {
// the old construction for beans...
- Constructor constMyView = bfclass.getConstructor(new Class[]{AppView.class});
+ Constructor constMyView = bfclass.getConstructor(new Class[]{AppView.class
+ });
Object bean = constMyView.newInstance(new Object[]{this});
-
bf = new BeanFactoryObj(bean);
}
-
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | NoSuchMethodException | SecurityException | IllegalArgumentException | InvocationTargetException e) {
throw new BeanFactoryException(e);
}
}
-
// cache the factory
m_aBeanFactories.put(beanfactory, bf);
-
// Initialize if it is a BeanFactoryApp
if (bf instanceof BeanFactoryApp) {
((BeanFactoryApp) bf).init(this);
@@ -567,32 +651,6 @@ private static String mapNewClass(String classname) {
: newclass;
}
- private static void initOldClasses() {
-
- m_oldclasses = new HashMap<>();
-/*
- // update bean names from 2.00 to 2.20
- m_oldclasses.put("uk.chromis.pos.reports.JReportCustomers", "/uk/chromis/reports/customers.bs");
- m_oldclasses.put("uk.chromis.pos.reports.JReportCustomersB", "/uk/chromis/reports/customersb.bs");
- m_oldclasses.put("uk.chromis.pos.reports.JReportClosedPos", "/uk/chromis/reports/closedpos.bs");
- m_oldclasses.put("uk.chromis.pos.reports.JReportClosedProducts", "/uk/chromis/reports/closedproducts.bs");
- m_oldclasses.put("uk.chromis.pos.reports.JChartSales", "/uk/chromis/reports/chartsales.bs");
- m_oldclasses.put("uk.chromis.pos.reports.JReportInventory", "/uk/chromis/reports/inventory.bs");
- m_oldclasses.put("uk.chromis.pos.reports.JReportInventory2", "/uk/chromis/reports/inventoryb.bs");
- m_oldclasses.put("uk.chromis.pos.reports.JReportInventoryBroken", "/uk/chromis/reports/inventorybroken.bs");
- m_oldclasses.put("uk.chromis.pos.reports.JReportInventoryDiff", "/uk/chromis/reports/inventorydiff.bs");
- m_oldclasses.put("uk.chromis.pos.reports.JReportInventoryReOrder", "/uk/chromis/reports/inventoryreorder.bs");
- m_oldclasses.put("uk.chromis.pos.reports.JReportPeople", "/uk/chromis/reports/people.bs");
- m_oldclasses.put("uk.chromis.pos.reports.JReportTaxes", "/uk/chromis/reports/taxes.bs");
- m_oldclasses.put("uk.chromis.pos.reports.JReportUserSales", "/uk/chromis/reports/usersales.bs");
- m_oldclasses.put("uk.chromis.pos.reports.JReportProducts", "/uk/chromis/reports/products.bs");
- m_oldclasses.put("uk.chromis.pos.reports.JReportCatalog", "/uk/chromis/reports/productscatalog.bs");
-
- // update bean names from 2.10 to 2.20
- m_oldclasses.put("uk.chromis.pos.panels.JPanelTax", "uk.chromis.pos.inventory.TaxPanel");
-*/
- }
-
/**
*
*/
@@ -744,24 +802,18 @@ public boolean closeAppView() {
jPanel3.remove(m_principalapp.getNotificator());
jPanel3.revalidate();
jPanel3.repaint();
-
- // remove the card
m_jPanelContainer.remove(m_principalapp);
m_principalapp = null;
showLogin();
-
return true;
}
}
private void showLogin() {
-
- // Show Login
listPeople();
showView("login");
- // show welcome message
printerStart();
// keyboard listener activation
@@ -816,8 +868,8 @@ private void initComponents() {
m_jPanelContainer = new javax.swing.JPanel();
m_jPanelLogin = new javax.swing.JPanel();
jPanel4 = new javax.swing.JPanel();
- jLabel1 = new javax.swing.JLabel();
filler2 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 0), new java.awt.Dimension(0, 10), new java.awt.Dimension(32767, 0));
+ jLabel1 = new javax.swing.JLabel();
jPanel5 = new javax.swing.JPanel();
m_jLogonName = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
@@ -858,7 +910,8 @@ public void mouseClicked(java.awt.event.MouseEvent evt) {
jLabel2.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
jLabel2.setForeground(new java.awt.Color(102, 102, 102));
- jLabel2.setPreferredSize(new java.awt.Dimension(180, 34));
+ jLabel2.setPreferredSize(new java.awt.Dimension(280, 34));
+ jLabel2.setRequestFocusEnabled(false);
m_jPanelTitle.add(jLabel2, java.awt.BorderLayout.LINE_START);
add(m_jPanelTitle, java.awt.BorderLayout.NORTH);
@@ -867,7 +920,10 @@ public void mouseClicked(java.awt.event.MouseEvent evt) {
m_jPanelLogin.setLayout(new java.awt.BorderLayout());
+ jPanel4.setMinimumSize(new java.awt.Dimension(518, 177));
+ jPanel4.setPreferredSize(new java.awt.Dimension(518, 177));
jPanel4.setLayout(new javax.swing.BoxLayout(jPanel4, javax.swing.BoxLayout.Y_AXIS));
+ jPanel4.add(filler2);
jLabel1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
@@ -880,14 +936,15 @@ public void mouseClicked(java.awt.event.MouseEvent evt) {
" " +
"Chromis POS is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. " +
" " +
- "You should have received a copy of the GNU General Public License along with uniCenta oPOS. If not, see http://www.gnu.org/licenses/ " +
+ "You should have received a copy of the GNU General Public License along with Chromis POS. If not, see http://www.gnu.org/licenses/ " +
"
");
jLabel1.setAlignmentX(0.5F);
jLabel1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jLabel1.setMaximumSize(new java.awt.Dimension(800, 1024));
+ jLabel1.setMinimumSize(new java.awt.Dimension(518, 177));
+ jLabel1.setPreferredSize(new java.awt.Dimension(518, 177));
jLabel1.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
jPanel4.add(jLabel1);
- jPanel4.add(filler2);
m_jPanelLogin.add(jPanel4, java.awt.BorderLayout.CENTER);
@@ -935,12 +992,10 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jPanel1Layout.createSequentialGroup()
- .add(m_txtKeys, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
- .addContainerGap(287, Short.MAX_VALUE))
- .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel1Layout.createSequentialGroup()
- .add(0, 0, Short.MAX_VALUE)
- .add(m_jClose, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 224, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
- .add(19, 19, 19))
+ .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
+ .add(m_txtKeys, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+ .add(m_jClose, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 289, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
+ .addContainerGap(24, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
@@ -967,15 +1022,13 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(jPanel5Layout.createSequentialGroup()
.add(15, 15, 15)
- .add(jPanel5Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
- .add(jPanel5Layout.createSequentialGroup()
- .add(m_jLogonName, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
- .add(434, 434, 434))
- .add(jPanel5Layout.createSequentialGroup()
- .add(jScrollPane1)
- .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
- .add(jPanel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
- .addContainerGap())))
+ .add(m_jLogonName, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+ .add(434, 565, Short.MAX_VALUE))
+ .add(jPanel5Layout.createSequentialGroup()
+ .add(jScrollPane1)
+ .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
+ .add(jPanel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap())
);
m_jPanelLogin.add(jPanel5, java.awt.BorderLayout.EAST);
@@ -1028,13 +1081,15 @@ private void superUserLogin() {
DriverManager.registerDriver(new DriverWrapper((Driver) Class.forName(AppConfig.getInstance().getProperty("db.driver"), true, cloader).newInstance()));
Class.forName(AppConfig.getInstance().getProperty("db.driver"));
con = DriverManager.getConnection(db_url, db_user, db_password);
- PreparedStatement stmt = con.prepareStatement("INSERT INTO PEOPLE (ID, NAME, ROLE, VISIBLE) VALUES ('99', 'SuperAdminUser', '0', 0)");
+ PreparedStatement stmt = con.prepareStatement("INSERT INTO PEOPLE (ID, NAME, ROLE, VISIBLE) VALUES ('99', 'SuperAdminUser', '0', true)");
stmt.executeUpdate();
user = m_dlSystem.getsuperuser();
+
}
} catch (BasicException e) {
} catch (SQLException | MalformedURLException | ClassNotFoundException | InstantiationException | IllegalAccessException ex) {
- Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
+ Logger.getLogger(JRootApp.class
+ .getName()).log(Level.SEVERE, null, ex);
}
openAppView(user);
@@ -1042,9 +1097,93 @@ private void superUserLogin() {
private void poweredbyMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_poweredbyMouseClicked
- if (SwingUtilities.isRightMouseButton(evt)) {
- System.out.println("create system info box here");
+
+ JFrame sampleFrame = new JFrame();
+ final Action exit = new AbstractAction("Exit") {
+ @Override
+ public final void actionPerformed(final ActionEvent e) {
+ sampleFrame.setVisible(false);
+ sampleFrame.dispose();
+ }
+ };
+
+ String currentPath = null;
+
+ if (OSValidator.isMac()) {
+ try {
+ currentPath = new File(JRootApp.class
+ .getProtectionDomain().getCodeSource().getLocation().toURI().getPath()).toString();
+ } catch (URISyntaxException ex) {
+ }
+ } else {
+ currentPath = System.getProperty("user.dir") + "\\chromispos.jar";
}
+
+ String md5 = null;
+ try {
+ FileInputStream fis = new FileInputStream(new File(currentPath));
+ md5 = org.apache.commons.codec.digest.DigestUtils.md5Hex(fis);
+ fis.close();
+
+ } catch (FileNotFoundException ex) {
+ Logger.getLogger(JRootApp.class
+ .getName()).log(Level.SEVERE, null, ex);
+
+ } catch (IOException ex) {
+ Logger.getLogger(JRootApp.class
+ .getName()).log(Level.SEVERE, null, ex);
+ }
+
+ /*
+ int mb = 1024*1024;
+ //Getting the runtime reference from system
+ Runtime runtime = Runtime.getRuntime();
+ System.out.println("##### Heap utilization statistics [MB] #####");
+ //Print used memory
+ System.out.println("Used Memory:"
+ + (runtime.totalMemory() - runtime.freeMemory()) / mb);
+ //Print free memory
+ System.out.println("Free Memory:"
+ + runtime.freeMemory() / mb);
+ //Print total available memory
+ System.out.println("Total Memory:" + runtime.totalMemory() / mb);
+ //Print Maximum available memory
+ System.out.println("Max Memory:" + runtime.maxMemory() / mb);
+ */
+ AboutDialog dialog = new AboutDialog();
+ JPanel dialogPanel = new JPanel();
+ MigLayout layout = new MigLayout("", "[fill]");
+ DefaultTableModel model = new DefaultTableModel();
+ JTable table = new JTable(model);
+ model.addColumn("Details");
+ model.addColumn("Value");
+ model.addRow(new Object[]{"Database Version", readDataBaseVersion()});
+ model.addRow(new Object[]{"Java Version", System.getProperty("java.version")});
+ model.addRow(new Object[]{"Jar MD5", md5});
+ model.addRow(new Object[]{"Operating System", System.getProperty("os.name")});
+ model.addRow(new Object[]{"Sync library", Sync.getVersion()});
+
+ JScrollPane scrollPane = new JScrollPane(table);
+ JPanel mainPanel = new JPanel(layout);
+ JLabel label = new JLabel();
+ JPanel btnPanel = new JPanel();
+ dialogPanel.add(dialog);
+ mainPanel.add(dialogPanel, "wrap");
+ mainPanel.add(scrollPane, "wrap");
+ JButton btnExit = new JButton(exit);
+ btnPanel.add(btnExit, "width 100!");
+ mainPanel.add(btnPanel, "right, wrap");
+ mainPanel.add(new JLabel(), "wrap");
+ sampleFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
+ sampleFrame.setPreferredSize(new Dimension(500, 300));
+ Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
+ sampleFrame.setLocation(dim.width / 2 - 250, dim.height / 2 - 150);
+ sampleFrame.setUndecorated(true);
+ mainPanel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0), 4));
+ sampleFrame.add(mainPanel);
+ sampleFrame.pack();
+ sampleFrame.setVisible(true);
+
}//GEN-LAST:event_poweredbyMouseClicked
diff --git a/src-pos/uk/chromis/pos/forms/JRootFrame.java b/src-pos/uk/chromis/pos/forms/JRootFrame.java
index 18f183c6..b8ed8401 100644
--- a/src-pos/uk/chromis/pos/forms/JRootFrame.java
+++ b/src-pos/uk/chromis/pos/forms/JRootFrame.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,7 +16,6 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.pos.forms;
import java.awt.BorderLayout;
@@ -32,62 +31,68 @@
/**
*
- * @author adrianromero
+ * @author adrianromero
*/
public class JRootFrame extends javax.swing.JFrame implements AppMessage {
-
+
// Gestor de que haya solo una instancia corriendo en cada maquina.
private InstanceManager m_instmanager = null;
-
+
private JRootApp m_rootapp;
private AppProperties m_props;
-
+
private OSValidator m_OS;
-
- /** Creates new form JRootFrame */
+
+ /**
+ * Creates new form JRootFrame
+ */
public JRootFrame() {
-
- initComponents();
+
+ initComponents();
}
-
+
/**
*
* @param props
*/
public void initFrame(AppProperties props) {
-
+
m_OS = new OSValidator();
m_props = props;
-
+
m_rootapp = new JRootApp();
-
- if (m_rootapp.initApp(m_props)) {
- if ("true".equals(AppConfig.getInstance().getProperty("machine.uniqueinstance"))) {
- // Register the running application
+ int result = m_rootapp.initApp(m_props);
+
+ if (result == m_rootapp.INIT_SUCCESS) {
+
+ if ("true".equals(AppConfig.getInstance().getProperty("machine.uniqueinstance"))) {
try {
m_instmanager = new InstanceManager(this);
} catch (RemoteException | AlreadyBoundException e) {
}
}
-
- // Show the application
- add(m_rootapp, BorderLayout.CENTER);
-
+
+ add(m_rootapp, BorderLayout.CENTER);
+
try {
- this.setIconImage(ImageIO.read(JRootFrame.class.getResourceAsStream("/uk/chromis/fixedimages/smllogo.png")));
+ this.setIconImage(ImageIO.read(JRootFrame.class.getResourceAsStream("/uk/chromis/fixedimages/smllogo.png")));
} catch (IOException e) {
- }
- setTitle(AppLocal.APP_NAME + " - V" + AppLocal.APP_VERSION + AppLocal.APP_DEMO);
+ }
+ setTitle(AppLocal.APP_NAME + " - V" + AppLocal.APP_VERSION + AppLocal.APP_DEMO);
pack();
- setLocationRelativeTo(null);
-
- setVisible(true);
+ setLocationRelativeTo(null);
+
+ setVisible(true);
} else {
+ }
+
+ if (result == m_rootapp.INIT_FAIL_CONFIG) {
+
new JFrmConfig(props).setVisible(true); // Show the configuration window.
}
}
-
+
/**
*
* @throws RemoteException
@@ -104,11 +109,11 @@ public void run() {
}
});
}
-
- /** This method is called from within the constructor to
- * initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is
- * always regenerated by the Form Editor.
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
*/
// //GEN-BEGIN:initComponents
private void initComponents() {
@@ -127,15 +132,15 @@ public void windowClosing(java.awt.event.WindowEvent evt) {
private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
m_rootapp.tryToClose();
-
+
}//GEN-LAST:event_formWindowClosing
private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
System.exit(0);
-
+
}//GEN-LAST:event_formWindowClosed
-
+
// Variables declaration - do not modify//GEN-BEGIN:variables
// End of variables declaration//GEN-END:variables
-}
\ No newline at end of file
+}
diff --git a/src-pos/uk/chromis/pos/forms/JRootKiosk.java b/src-pos/uk/chromis/pos/forms/JRootKiosk.java
index 4305e14b..29d49cb1 100644
--- a/src-pos/uk/chromis/pos/forms/JRootKiosk.java
+++ b/src-pos/uk/chromis/pos/forms/JRootKiosk.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -31,22 +31,24 @@
/**
*
- * @author adrianromero
+ * @author adrianromero
*/
public class JRootKiosk extends javax.swing.JFrame implements AppMessage {
-
+
private InstanceManager m_instmanager = null;
-
+
private JRootApp m_rootapp;
private AppProperties m_props;
- private OSValidator m_OS;
-
- /** Creates new form JRootKiosk */
+ private OSValidator m_OS;
+
+ /**
+ * Creates new form JRootKiosk
+ */
public JRootKiosk() {
-
+
setUndecorated(true);
setResizable(false);
-
+
initComponents();
}
@@ -55,36 +57,40 @@ public JRootKiosk() {
* @param props
*/
public void initFrame(AppProperties props) {
-
+
m_OS = new OSValidator();
m_props = props;
-
+
m_rootapp = new JRootApp();
-
- if (m_rootapp.initApp(m_props)) {
-
+
+ int result = m_rootapp.initApp(m_props);
+
+ if (result == m_rootapp.INIT_SUCCESS) {
+
if ("true".equals(AppConfig.getInstance().getProperty("machine.uniqueinstance"))) {
- // Register the running application
try {
m_instmanager = new InstanceManager(this);
} catch (RemoteException | AlreadyBoundException e) {
}
}
-
- // Show the application
- add(m_rootapp, BorderLayout.CENTER);
-
+
+ add(m_rootapp, BorderLayout.CENTER);
+
setTitle(AppLocal.APP_NAME + " - V" + AppLocal.APP_VERSION + AppLocal.APP_DEMO);
-
+
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
- setBounds(0, 0, d.width, d.height);
-
- setVisible(true);
+ setBounds(0, 0, d.width, d.height);
+
+ setVisible(true);
} else {
+ }
+
+ if (result == m_rootapp.INIT_FAIL_CONFIG) {
+
new JFrmConfig(props).setVisible(true); // Show the configuration window.
- }
+ }
}
-
+
/**
*
* @throws RemoteException
@@ -101,11 +107,11 @@ public void run() {
}
});
}
-
- /** This method is called from within the constructor to
- * initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is
- * always regenerated by the Form Editor.
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
*/
// //GEN-BEGIN:initComponents
private void initComponents() {
@@ -130,10 +136,9 @@ private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:even
private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed
System.exit(0);
-
+
}//GEN-LAST:event_formWindowClosed
-
+
// Variables declaration - do not modify//GEN-BEGIN:variables
// End of variables declaration//GEN-END:variables
-
}
diff --git a/src-pos/uk/chromis/pos/forms/MenuDefinition.java b/src-pos/uk/chromis/pos/forms/MenuDefinition.java
index 1d50f335..0a38be46 100644
--- a/src-pos/uk/chromis/pos/forms/MenuDefinition.java
+++ b/src-pos/uk/chromis/pos/forms/MenuDefinition.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/MenuElement.java b/src-pos/uk/chromis/pos/forms/MenuElement.java
index 68a4470b..f5978a27 100644
--- a/src-pos/uk/chromis/pos/forms/MenuElement.java
+++ b/src-pos/uk/chromis/pos/forms/MenuElement.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/MenuExecAction.java b/src-pos/uk/chromis/pos/forms/MenuExecAction.java
index cbee4ad7..a7c78de9 100644
--- a/src-pos/uk/chromis/pos/forms/MenuExecAction.java
+++ b/src-pos/uk/chromis/pos/forms/MenuExecAction.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/MenuItemDefinition.java b/src-pos/uk/chromis/pos/forms/MenuItemDefinition.java
index d96bfc66..cbcc5706 100644
--- a/src-pos/uk/chromis/pos/forms/MenuItemDefinition.java
+++ b/src-pos/uk/chromis/pos/forms/MenuItemDefinition.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/MenuPanelAction.java b/src-pos/uk/chromis/pos/forms/MenuPanelAction.java
index 466d6d78..592f60a1 100644
--- a/src-pos/uk/chromis/pos/forms/MenuPanelAction.java
+++ b/src-pos/uk/chromis/pos/forms/MenuPanelAction.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/MenuTitleDefinition.java b/src-pos/uk/chromis/pos/forms/MenuTitleDefinition.java
index d28b5159..16fbef5c 100644
--- a/src-pos/uk/chromis/pos/forms/MenuTitleDefinition.java
+++ b/src-pos/uk/chromis/pos/forms/MenuTitleDefinition.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/ProcessAction.java b/src-pos/uk/chromis/pos/forms/ProcessAction.java
index 6eaa4a31..2a111ea0 100644
--- a/src-pos/uk/chromis/pos/forms/ProcessAction.java
+++ b/src-pos/uk/chromis/pos/forms/ProcessAction.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/forms/StartPOS.java b/src-pos/uk/chromis/pos/forms/StartPOS.java
index 2a905ed9..2fefa0b8 100644
--- a/src-pos/uk/chromis/pos/forms/StartPOS.java
+++ b/src-pos/uk/chromis/pos/forms/StartPOS.java
@@ -24,6 +24,11 @@
import java.util.Locale;
import java.util.logging.Level;
import java.util.logging.Logger;
+import javax.swing.JButton;
+import javax.swing.JFrame;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
import javax.swing.LookAndFeel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
@@ -34,10 +39,11 @@
import uk.chromis.pos.instance.InstanceQuery;
import uk.chromis.pos.ticket.TicketInfo;
-
public class StartPOS {
private static final Logger logger = Logger.getLogger("uk.chromis.pos.forms.StartPOS");
+ private static JLabel label;
+ private static JButton btnConvert;
/**
* Creates a new instance of StartPOS
@@ -50,8 +56,6 @@ private StartPOS() {
* @return
*/
public static boolean registerApp() {
-
- // vemos si existe alguna instancia
InstanceQuery i = null;
try {
i = new InstanceQuery();
@@ -62,21 +66,36 @@ public static boolean registerApp() {
}
}
- private class OpenApp {
-
- }
-
/**
*
* @param args
*/
public static void main(final String args[]) {
+
+ String sJavaVersion = System.getProperty("java.version");
+ double dJavaVersion = Double.parseDouble(sJavaVersion.substring(0, sJavaVersion.indexOf('.', sJavaVersion.indexOf('.') + 1)));
+
+ if (dJavaVersion < 1.8) {
+ StartupDialog dialog = new StartupDialog();
+ JFrame frame = new JFrame("");
+ JPanel dialogPanel = new JPanel();
+
+ dialogPanel.add(dialog);
+ JOptionPane.showMessageDialog(frame,
+ dialogPanel,
+ "Incorrect Java version ",
+ JOptionPane.PLAIN_MESSAGE);
+
+ System.exit(1);
+
+ }
+
File file = new File(System.getProperty("user.home"), "unicentaopos.properties");
File chromis = new File(System.getProperty("user.home"), "chromispos.properties");
- // File openbravo = new File(System.getProperty("user.home"), "openbravopos.properties");
+ File openbravo = new File(System.getProperty("user.home"), "openbravopos.properties");
if (!chromis.exists()) {
- if (file.exists()) /*|| (openbravo.exists()))*/{
+ if ((file.exists()) || (openbravo.exists())) {
Thread t1 = new Thread(new Runnable() {
public void run() {
Conversion convert = new Conversion() {
@@ -97,6 +116,10 @@ public void run() {
}
}
+ private static void startUpDialog() {
+
+ }
+
private static void startApp(final String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
@@ -105,9 +128,8 @@ public void run() {
if (!registerApp()) {
System.exit(1);
}
-
- AppConfig config = AppConfig.getInstance();
+ AppConfig config = AppConfig.getInstance();
// set Locale.
String slang = AppConfig.getInstance().getProperty("user.language");
String scountry = AppConfig.getInstance().getProperty("user.country");
@@ -144,6 +166,10 @@ public void run() {
if ("fullscreen".equals(screenmode)) {
JRootKiosk rootkiosk = new JRootKiosk();
rootkiosk.initFrame(config);
+ } else if ("windowmaximised".equals(screenmode)) {
+ JRootFrame rootframe = new JRootFrame();
+ rootframe.setExtendedState(JFrame.MAXIMIZED_BOTH);
+ rootframe.initFrame(config);
} else {
JRootFrame rootframe = new JRootFrame();
rootframe.initFrame(config);
diff --git a/src-pos/uk/chromis/pos/forms/StartupDialog.form b/src-pos/uk/chromis/pos/forms/StartupDialog.form
new file mode 100644
index 00000000..ed9d9d47
--- /dev/null
+++ b/src-pos/uk/chromis/pos/forms/StartupDialog.form
@@ -0,0 +1,100 @@
+
+
+
diff --git a/src-pos/uk/chromis/pos/forms/StartupDialog.java b/src-pos/uk/chromis/pos/forms/StartupDialog.java
new file mode 100644
index 00000000..bad90fca
--- /dev/null
+++ b/src-pos/uk/chromis/pos/forms/StartupDialog.java
@@ -0,0 +1,94 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package uk.chromis.pos.forms;
+
+/**
+ *
+ * @author John
+ */
+public class StartupDialog extends javax.swing.JPanel {
+
+
+ /**
+ * Creates new form ConvertDialog
+ */
+ public StartupDialog() {
+ initComponents();
+ // converting.setVisible(false);
+ }
+
+
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
+ */
+ @SuppressWarnings("unchecked")
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ jLabel3 = new javax.swing.JLabel();
+ jLabel2 = new javax.swing.JLabel();
+ jScrollPane1 = new javax.swing.JScrollPane();
+ jTextArea1 = new javax.swing.JTextArea();
+
+ jLabel3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/chromis_main.png"))); // NOI18N
+
+ jLabel2.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
+ jLabel2.setText("www.chromis.co.uk");
+
+ jTextArea1.setEditable(false);
+ jTextArea1.setColumns(20);
+ jTextArea1.setFont(new java.awt.Font("Tahoma", 0, 13)); // NOI18N
+ jTextArea1.setRows(5);
+ jTextArea1.setText("Chromis Pos requires Java version 1.8 or higher. \n\nUnfortuntely, a compatible version was not found on your system so Chromis\nis unable to run.\n \nPlease install Java 1.8 and try again.");
+ jTextArea1.setAutoscrolls(false);
+ jTextArea1.setBorder(null);
+ jTextArea1.setDisabledTextColor(new java.awt.Color(0, 0, 255));
+ jTextArea1.setEnabled(false);
+ jTextArea1.setFocusable(false);
+ jTextArea1.setOpaque(false);
+ jTextArea1.setRequestFocusEnabled(false);
+ jScrollPane1.setViewportView(jTextArea1);
+
+ javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
+ this.setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jScrollPane1)
+ .addGroup(layout.createSequentialGroup()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jLabel3))
+ .addGroup(layout.createSequentialGroup()
+ .addGap(31, 31, 31)
+ .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 132, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addContainerGap(19, Short.MAX_VALUE))
+ );
+ layout.setVerticalGroup(
+ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 66, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(jLabel2)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 123, Short.MAX_VALUE)
+ .addContainerGap())
+ );
+ }// //GEN-END:initComponents
+
+
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JLabel jLabel2;
+ private javax.swing.JLabel jLabel3;
+ private javax.swing.JScrollPane jScrollPane1;
+ public javax.swing.JTextArea jTextArea1;
+ // End of variables declaration//GEN-END:variables
+}
diff --git a/src-pos/uk/chromis/pos/forms/UpdateTicketType.java b/src-pos/uk/chromis/pos/forms/UpdateTicketType.java
new file mode 100644
index 00000000..2f9f49a8
--- /dev/null
+++ b/src-pos/uk/chromis/pos/forms/UpdateTicketType.java
@@ -0,0 +1,109 @@
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package uk.chromis.pos.forms;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.sql.Connection;
+import java.sql.Driver;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.Statement;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import uk.chromis.pos.util.AltEncrypter;
+
+/**
+ *
+ * @author John
+ */
+public class UpdateTicketType {
+
+ private static String db_user;
+ private static String db_url;
+ private static String db_password;
+ private static Connection con;
+ private static ResultSet rs;
+ private static Statement stmt;
+ private static PreparedStatement stmt2;
+ private static String SQL;
+ private static String SQL2;
+
+ public UpdateTicketType() {
+
+ }
+
+ public static void updateTicketType() {
+
+ db_user = (AppConfig.getInstance().getProperty("db.user"));
+ db_url = (AppConfig.getInstance().getProperty("db.URL"));
+ db_password = (AppConfig.getInstance().getProperty("db.password"));
+ if (db_user != null && db_password != null && db_password.startsWith("crypt:")) {
+ AltEncrypter cypher = new AltEncrypter("cypherkey" + db_user);
+ db_password = cypher.decrypt(db_password.substring(6));
+ }
+
+ try {
+ ClassLoader cloader = new URLClassLoader(new URL[]{new File(AppConfig.getInstance().getProperty("db.driverlib")).toURI().toURL()});
+ DriverManager.registerDriver(new DriverWrapper((Driver) Class.forName(AppConfig2.getInstance2().getProperty("db.driver"), true, cloader).newInstance()));
+ Class.forName(AppConfig.getInstance().getProperty("db.driver"));
+ con = DriverManager.getConnection(db_url, db_user, db_password);
+ stmt = (Statement) con.createStatement();
+
+ // Convert the resourse pointers
+ SQL = "SELECT * FROM RESOURCES WHERE RESTYPE = 0 ";
+ rs = stmt.executeQuery(SQL);
+ while (rs.next()) {
+ String decodedData;
+ if (rs.getBytes("CONTENT") != null) {
+ byte[] bytesData = rs.getBytes("CONTENT");
+ if (!"49".equals(rs.getString("ID"))) {
+ decodedData = new String(bytesData);
+
+ decodedData = decodedData.replaceAll(".ticketType} *== *0", ".ticketType} == \"NORMAL\"");
+ decodedData = decodedData.replaceAll(".ticketType} *== *1", ".ticketType} == \"REFUND\"");
+ decodedData = decodedData.replaceAll(".ticketType} *== *2", ".ticketType} == \"PAYMENT\"");
+ decodedData = decodedData.replaceAll(".ticketType} *== *3", ".ticketType} == \"NOSALE\"");
+
+ decodedData = decodedData.replaceAll(".ticketType} *!= *0", ".ticketType} != \"NORMAL\"");
+ decodedData = decodedData.replaceAll(".ticketType} *!= *1", ".ticketType} != \"REFUND\"");
+ decodedData = decodedData.replaceAll(".ticketType} *!= *2", ".ticketType} != \"PAYMENT\"");
+ decodedData = decodedData.replaceAll(".ticketType} *!= *3", ".ticketType} != \"NOSALE\"");
+
+ bytesData = decodedData.getBytes();
+ SQL2 = "DELETE FROM RESOURCES WHERE ID = ? ";
+ stmt2 = con.prepareStatement(SQL2);
+ stmt2.setString(1, rs.getString("ID"));
+ stmt2.executeUpdate();
+
+ SQL2 = "INSERT INTO RESOURCES (ID, NAME, RESTYPE, CONTENT) VALUES (?, ?, ?, ?)";
+ stmt2 = con.prepareStatement(SQL2);
+ stmt2.setString(1, rs.getString("ID"));
+ stmt2.setString(2, rs.getString("NAME"));
+ stmt2.setInt(3, rs.getInt("RESTYPE"));
+ stmt2.setBytes(4, bytesData);
+ stmt2.executeUpdate();
+ ;
+ }
+ }
+ }
+ } catch (Exception e) {
+ System.out.println("*******************************************************");
+ System.out.println("Error : = " + e);
+ System.out.println("");
+ }
+ AppConfig.getInstance().setBoolean("chromis.tickettype", true);
+ try {
+ AppConfig.getInstance().save();
+ } catch (IOException ex) {
+ Logger.getLogger(UpdateTicketType.class.getName()).log(Level.SEVERE, null, ex);
+ }
+
+ }
+}
diff --git a/src-pos/uk/chromis/pos/imports/JPanelCSV.java b/src-pos/uk/chromis/pos/imports/JPanelCSV.java
index 5dd940e0..1663448f 100644
--- a/src-pos/uk/chromis/pos/imports/JPanelCSV.java
+++ b/src-pos/uk/chromis/pos/imports/JPanelCSV.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -19,15 +19,8 @@
package uk.chromis.pos.imports;
-/**
- *
- *
- */
public class JPanelCSV extends javax.swing.JPanel {
- /**
- *
- */
public JPanelCSV() {
initComponents();
}
diff --git a/src-pos/uk/chromis/pos/imports/JPanelCSVCleardb.java b/src-pos/uk/chromis/pos/imports/JPanelCSVCleardb.java
index 2c7dcd63..919943aa 100644
--- a/src-pos/uk/chromis/pos/imports/JPanelCSVCleardb.java
+++ b/src-pos/uk/chromis/pos/imports/JPanelCSVCleardb.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/imports/JPanelCSVImport.form b/src-pos/uk/chromis/pos/imports/JPanelCSVImport.form
index 9ecc5869..7dbfd53a 100644
--- a/src-pos/uk/chromis/pos/imports/JPanelCSVImport.form
+++ b/src-pos/uk/chromis/pos/imports/JPanelCSVImport.form
@@ -32,12 +32,15 @@
+
+
+
+
+
+
+
-
-
-
-
@@ -49,9 +52,11 @@
-
-
+
+
+
+
@@ -154,8 +159,8 @@
-
-
+
+
@@ -635,9 +640,12 @@
-
+
-
+
+
+
+
@@ -662,7 +670,9 @@
-
+
+
+
@@ -791,6 +801,13 @@
+
+
+
+
+
+
+
@@ -1732,9 +1749,8 @@
-
-
+
@@ -1743,7 +1759,7 @@
-
+
@@ -1751,7 +1767,6 @@
-
@@ -1778,5 +1793,7 @@
+
+
diff --git a/src-pos/uk/chromis/pos/imports/JPanelCSVImport.java b/src-pos/uk/chromis/pos/imports/JPanelCSVImport.java
index 65720df1..d6241a87 100644
--- a/src-pos/uk/chromis/pos/imports/JPanelCSVImport.java
+++ b/src-pos/uk/chromis/pos/imports/JPanelCSVImport.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk 3.81
//
// This file is part of Chromis POS
@@ -28,6 +28,7 @@
import java.sql.Connection;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.UUID;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -36,6 +37,7 @@
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
+import javax.swing.SwingWorker;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.filechooser.FileNameExtensionFilter;
@@ -88,8 +90,8 @@ public class JPanelCSVImport extends JPanel implements JPanelView {
private CsvReader products;
private double oldSellPrice = 0;
private double oldBuyPrice = 0;
- private int currentRecord;
- private int rowCount = 0;
+ private double currentRecord;
+ private double rowCount = 0.0;
private String last_folder;
private File config_file;
private static String category_disable_text = "[ USE DEFAULT CATEGORY ]";
@@ -125,6 +127,7 @@ public class JPanelCSVImport extends JPanel implements JPanelView {
private int noChanges = 0;
private int badPrice = 0;
private double dTaxRate;
+ private Integer progress = 0;
// Addtional Items
private String buttonText;
@@ -152,11 +155,7 @@ public JPanelCSVImport(AppView app) {
initComponents();
- /*
- * Create new datalogocsales & DataLogicSystem instances to allow access to sql routines.
- */
m_dlSales = (DataLogicSales) m_App.getBean("uk.chromis.pos.forms.DataLogicSales");
-
m_dlSystem = (DataLogicSystem) m_App.getBean("uk.chromis.pos.forms.DataLogicSystem");
spr = new SaveProvider(
@@ -224,7 +223,7 @@ private void GetheadersFromFile(String CSVFileName) throws IOException {
products.close();
return;
}
- rowCount = 0;
+ rowCount = 0.0;
int i = 0;
Headers.clear();
Headers.add("");
@@ -290,7 +289,7 @@ private void GetheadersFromFile(String CSVFileName) throws IOException {
++rowCount;
}
- jTextRecords.setText(Long.toString(rowCount));
+ jTextRecords.setText(Integer.toString((int) rowCount));
// close the file we will open again when required
products.close();
@@ -345,157 +344,172 @@ private void enableCheckBoxes() {
* @param CSVFileName Name of the file (including path) to import.
* @throws IOException If there are file reading issues.
*/
- private void ImportCsvFile(String CSVFileName) throws IOException {
-
- File f = new File(CSVFileName);
- if (f.exists()) {
-
- // Read file
- //products = new CsvReader(CSVFileName);
- products = new CsvReader(new InputStreamReader(new FileInputStream(CSVFileName), "UTF-8"));
- products.setDelimiter(((String) jComboSeparator.getSelectedItem()).charAt(0));
- products.readHeaders();
+ private class workProcess implements Runnable {
+ @Override
+ public void run() {
try {
- stockLocation = (String) ((Object[]) jParamsLocation.createValue())[1];
- } catch (BasicException ex) {
- jCheckAddStockLevels.setSelected(false);
+ ImportCsvFile(jFileName.getText());
+ } catch (IOException ex) {
+ Logger.getLogger(JPanelCSVImport.class.getName()).log(Level.SEVERE, null, ex);
}
- currentRecord = 0;
- while (products.readRecord()) {
- productReference = products.get((String) jComboReference.getSelectedItem());
- productName = products.get((String) jComboName.getSelectedItem());
- productBarcode = products.get((String) jComboBarcode.getSelectedItem());
- String BuyPrice = products.get((String) jComboBuy.getSelectedItem());
- String SellPrice = products.get((String) jComboSell.getSelectedItem());
- Category = products.get((String) jComboCategory.getSelectedItem());
- String StockSecurity = products.get((String) jComboSecurity.getSelectedItem());
- String StockMaximum = products.get((String) jComboMaximum.getSelectedItem());
- //additional items
- buttonText = products.get((String) jComboBoxButtonText.getSelectedItem());
- remotePrint = products.get((String) jComboBoxRemotePrint.getSelectedItem());
- service = products.get((String) jComboBoxService.getSelectedItem());
- varPrice = products.get((String) jComboBoxVarPrice.getSelectedItem());
- warranty = products.get((String) jComboBoxWarranty.getSelectedItem());
- textTip = products.get((String) jComboBoxTextTip.getSelectedItem());
- prop = products.get((String) jComboBoxProp.getSelectedItem());
- aux = products.get((String) jComboBoxAux.getSelectedItem());
- shortName = products.get((String) jComboBoxShortName.getSelectedItem());
- isPack = products.get((String) jComboBoxIspack.getSelectedItem());
- String boxPackSize = products.get((String) jComboBoxPackSize.getSelectedItem());
- packOf = products.get((String) jComboBoxPackOf.getSelectedItem());
-
- currentRecord++;
-
- // Strip Currency Symbols
- BuyPrice = StringUtils.replaceChars(BuyPrice, "$", ""); // Remove Dolar, Euro and Pound sign Sign
- SellPrice = StringUtils.replaceChars(SellPrice, "$", ""); // Remove Dolar, Euro and Pound Sign
- BuyPrice = StringUtils.replaceChars(BuyPrice, "£", ""); // Remove Dolar, Euro and Pound sign Sign
- SellPrice = StringUtils.replaceChars(SellPrice, "£", ""); // Remove Dolar, Euro and Pound Sign
- BuyPrice = StringUtils.replaceChars(BuyPrice, "€", ""); // Remove Dolar, Euro and Pound sign Sign
- SellPrice = StringUtils.replaceChars(SellPrice, "€", ""); // Remove Dolar, Euro and Pound Sign
-
- dCategory = getCategory();
-
- // set the csvMessage to a default value
- if ("Bad Category".equals(dCategory)) {
- csvMessage = "Bad category details";
- } else {
- csvMessage = "Missing data or Invalid number";
- }
+ }
- // Validate and convert the prices or change them to null
- if (validateNumber(BuyPrice)) {
- productBuyPrice = Double.parseDouble(BuyPrice);
- } else {
- productBuyPrice = null;
- }
+ private void ImportCsvFile(String CSVFileName) throws IOException {
- if (validateNumber(SellPrice)) {
- productSellPrice = getSellPrice(SellPrice);
- } else {
- productSellPrice = null;
- }
+ File f = new File(CSVFileName);
+ if (f.exists()) {
- if (validateNumber(StockSecurity)) {
- stockSecurity = Double.parseDouble(StockSecurity);
- } else {
- stockSecurity = null;
- }
+ // Read file
+ //products = new CsvReader(CSVFileName);
+ products = new CsvReader(new InputStreamReader(new FileInputStream(CSVFileName), "UTF-8"));
+ products.setDelimiter(((String) jComboSeparator.getSelectedItem()).charAt(0));
+ products.readHeaders();
- if (validateNumber(StockMaximum)) {
- stockMaximum = Double.parseDouble(StockMaximum);
- } else {
- stockMaximum = null;
+ try {
+ stockLocation = (String) ((Object[]) jParamsLocation.createValue())[1];
+ } catch (BasicException ex) {
+ jCheckAddStockLevels.setSelected(false);
}
- /**
- * Check to make sure our entries aren't bad or blank or the
- * category is not bad
- *
- */
- if ("".equals(productReference)
- && "".equals(productName)
- && "".equals(productBarcode)
- && "".equals(BuyPrice)
- && "".equals(SellPrice)) {
- // Ignore blank lines in the import file
- } else if ("".equals(productReference)
- | "".equals(productName)
- | "".equals(productBarcode)
- | "".equals(BuyPrice)
- | "".equals(SellPrice)
- | productBuyPrice == null
- | productSellPrice == null
- | "Bad Category".equals(dCategory)) {
- if (productBuyPrice == null | productSellPrice == null) {
- badPrice++;
+ currentRecord = 0;
+ while (products.readRecord()) {
+ productReference = products.get((String) jComboReference.getSelectedItem());
+ productName = products.get((String) jComboName.getSelectedItem());
+ productBarcode = products.get((String) jComboBarcode.getSelectedItem());
+ String BuyPrice = products.get((String) jComboBuy.getSelectedItem());
+ String SellPrice = products.get((String) jComboSell.getSelectedItem());
+ Category = products.get((String) jComboCategory.getSelectedItem());
+ String StockSecurity = products.get((String) jComboSecurity.getSelectedItem());
+ String StockMaximum = products.get((String) jComboMaximum.getSelectedItem());
+ //additional items
+ buttonText = products.get((String) jComboBoxButtonText.getSelectedItem());
+ remotePrint = products.get((String) jComboBoxRemotePrint.getSelectedItem());
+ service = products.get((String) jComboBoxService.getSelectedItem());
+ varPrice = products.get((String) jComboBoxVarPrice.getSelectedItem());
+ warranty = products.get((String) jComboBoxWarranty.getSelectedItem());
+ textTip = products.get((String) jComboBoxTextTip.getSelectedItem());
+ prop = products.get((String) jComboBoxProp.getSelectedItem());
+ aux = products.get((String) jComboBoxAux.getSelectedItem());
+ shortName = products.get((String) jComboBoxShortName.getSelectedItem());
+ isPack = products.get((String) jComboBoxIspack.getSelectedItem());
+ String boxPackSize = products.get((String) jComboBoxPackSize.getSelectedItem());
+ packOf = products.get((String) jComboBoxPackOf.getSelectedItem());
+
+ currentRecord++;
+
+ progress = ((int) ((currentRecord / rowCount) * 100));
+
+ // Strip Currency Symbols
+ BuyPrice = StringUtils.replaceChars(BuyPrice, "$", ""); // Remove Dolar, Euro and Pound sign Sign
+ SellPrice = StringUtils.replaceChars(SellPrice, "$", ""); // Remove Dolar, Euro and Pound Sign
+ BuyPrice = StringUtils.replaceChars(BuyPrice, "£", ""); // Remove Dolar, Euro and Pound sign Sign
+ SellPrice = StringUtils.replaceChars(SellPrice, "£", ""); // Remove Dolar, Euro and Pound Sign
+ BuyPrice = StringUtils.replaceChars(BuyPrice, "€", ""); // Remove Dolar, Euro and Pound sign Sign
+ SellPrice = StringUtils.replaceChars(SellPrice, "€", ""); // Remove Dolar, Euro and Pound Sign
+
+ dCategory = getCategory();
+
+ // set the csvMessage to a default value
+ if ("Bad Category".equals(dCategory)) {
+ csvMessage = "Bad category details";
+ } else {
+ csvMessage = "Missing data or Invalid number";
+ }
+
+ // Validate and convert the prices or change them to null
+ if (validateNumber(BuyPrice)) {
+ productBuyPrice = Double.parseDouble(BuyPrice);
+ } else {
+ productBuyPrice = null;
+ }
+
+ if (validateNumber(SellPrice)) {
+ productSellPrice = getSellPrice(SellPrice);
+ } else {
+ productSellPrice = null;
+ }
+
+ if (validateNumber(StockSecurity)) {
+ stockSecurity = Double.parseDouble(StockSecurity);
+ } else {
+ stockSecurity = null;
+ }
+
+ if (validateNumber(StockMaximum)) {
+ stockMaximum = Double.parseDouble(StockMaximum);
} else {
- missingData++;
+ stockMaximum = null;
}
- createCSVEntry(csvMessage, null, null);
- } else {
+
+ /**
+ * Check to make sure our entries aren't bad or blank or the
+ * category is not bad
+ *
+ */
+ if ("".equals(productReference)
+ && "".equals(productName)
+ && "".equals(productBarcode)
+ && "".equals(BuyPrice)
+ && "".equals(SellPrice)) {
+ // Ignore blank lines in the import file
+ } else if ("".equals(productReference)
+ | "".equals(productName)
+ | "".equals(productBarcode)
+ | "".equals(BuyPrice)
+ | "".equals(SellPrice)
+ | productBuyPrice == null
+ | productSellPrice == null
+ | "Bad Category".equals(dCategory)) {
+ if (productBuyPrice == null | productSellPrice == null) {
+ badPrice++;
+ } else {
+ missingData++;
+ }
+ createCSVEntry(csvMessage, null, null);
+ } else {
// We know that the data passes the basic checks, so get more details about the product
- recordType = getRecord();
- switch (recordType) {
- case "new":
- createProduct("new");
- newRecords++;
- createCSVEntry("New product", null, null);
- break;
- case "name error":
- case "barcode error":
- case "reference error":
- case "Duplicate Reference found.":
- case "Duplicate Barcode found.":
- case "Duplicate Description found.":
- case "Exception":
- invalidRecords++;
- createCSVEntry(recordType, null, null);
- break;
- default:
- updateRecord(recordType);
- break;
+ recordType = getRecord();
+ switch (recordType) {
+ case "new":
+ createProduct("new");
+ newRecords++;
+ createCSVEntry("New product", null, null);
+ break;
+ case "name error":
+ case "barcode error":
+ case "reference error":
+ case "Duplicate Reference found.":
+ case "Duplicate Barcode found.":
+ case "Duplicate Description found.":
+ case "Exception":
+ invalidRecords++;
+ createCSVEntry(recordType, null, null);
+ break;
+ default:
+ updateRecord(recordType);
+ break;
+ }
}
}
+ products.close();
+ } else {
+ JOptionPane.showMessageDialog(null, "Unable to locate " + CSVFileName, "File not found", JOptionPane.WARNING_MESSAGE);
}
- products.close();
- } else {
- JOptionPane.showMessageDialog(null, "Unable to locate " + CSVFileName, "File not found", JOptionPane.WARNING_MESSAGE);
- }
- // update the record fields on the form
- jTextNew.setText(Integer.toString(newRecords));
- jTextUpdate.setText(Integer.toString(priceUpdates));
- jTextInvalid.setText(Integer.toString(invalidRecords));
- jTextMissing.setText(Integer.toString(missingData));
- jTextNoChange.setText(Integer.toString(noChanges));
- jTextBadPrice.setText(Integer.toString(badPrice));
- if (badCategories.size() == 1 && badCategories.get(0) == "") {
- jTextBadCats.setText("0");
- } else {
- jTextBadCats.setText(Integer.toString(badCategories.size()));
+ // update the record fields on the form
+ jTextNew.setText(Integer.toString(newRecords));
+ jTextUpdate.setText(Integer.toString(priceUpdates));
+ jTextInvalid.setText(Integer.toString(invalidRecords));
+ jTextMissing.setText(Integer.toString(missingData));
+ jTextNoChange.setText(Integer.toString(noChanges));
+ jTextBadPrice.setText(Integer.toString(badPrice));
+ if (badCategories.size() == 1 && badCategories.get(0) == "") {
+ jTextBadCats.setText("0");
+ } else {
+ jTextBadCats.setText(Integer.toString(badCategories.size()));
+ }
}
}
@@ -528,6 +542,30 @@ private String getCategory() {
return (cat);
}
}
+
+ if (jCreateCat.isSelected()) {
+ if (!Category.equals("")) {
+ // lets create the category if it does not exist.
+ Object[] newcat = new Object[3];
+ newcat[0] = UUID.randomUUID().toString();
+ newcat[1] = Category;
+ newcat[2] = true;
+
+ try {
+ m_dlSales.insertCategory(newcat);
+ cat_list = new HashMap<>();
+ for (Object category : m_sentcat.list()) {
+ m_CategoryModel.setSelectedItem(category);
+ cat_list.put(category.toString(), m_CategoryModel.getSelectedKey().toString());
+ }
+ String cat = (String) cat_list.get(Category);
+ return (cat);
+ } catch (BasicException ex) {
+ Logger.getLogger(JPanelCSVImport.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+ }
+
if (!badCategories.contains(Category)) {
badCategories.add(Category.trim()); // Save a list of the bad categories so we can tell the user later
}
@@ -568,9 +606,10 @@ private void updateRecord(String pID) {
dCategory = ((String) cat_list.get(prodInfo.getCategoryID()) == null) ? prodInfo.getCategoryID() : (String) cat_list.get(prodInfo.getCategoryID());
oldBuyPrice = prodInfo.getPriceBuy();
oldSellPrice = prodInfo.getPriceSell();
- productSellPrice *= (1 + dOriginalRate);
+ // productSellPrice *= (1 + dOriginalRate);
if ((oldBuyPrice != productBuyPrice) || (oldSellPrice != productSellPrice)) {
- createCSVEntry("Updated Price Details", oldBuyPrice, oldSellPrice * (1 + dOriginalRate));
+ // createCSVEntry("Updated Price Details", oldBuyPrice, oldSellPrice * (1 + dOriginalRate));
+ createCSVEntry("Updated Price Details", oldBuyPrice, (jCheckSellIncTax.isSelected()) ? oldSellPrice * (1 + dOriginalRate) : oldSellPrice);
createProduct("update");
priceUpdates++;
} else {
@@ -644,6 +683,30 @@ public void activate() throws BasicException {
jParamsLocation.activate();
}
+ private void setWorker() {
+ progress = 0;
+ pb.setStringPainted(true);
+ final SwingWorker backgroundWork = new SwingWorker() {
+ @Override
+ protected final Integer doInBackground() throws Exception {
+ while ((progress >= 0) && (progress < 100)) {
+ Thread.sleep(50);
+ this.publish(progress);
+ }
+ this.publish(100);
+ this.done();
+ return 100;
+ }
+
+ @Override
+ protected final void process(final List chunks) {
+ pb.setValue(chunks.get(0));
+ pb.setString("Processed " + progress + "% of import");
+ }
+ };
+ backgroundWork.execute();
+ }
+
/**
* Resets all the form fields, update 7.4.14 JDL To fix display error if
* user does not exit before running next import
@@ -703,6 +766,7 @@ public void resetFields() {
jCheckSellIncTax.setEnabled(false);
jCheckAddStockLevels.setSelected(false);
jCheckAddStockLevels.setEnabled(false);
+ jCreateCat.setSelected(false);
jFileName.setText(null);
csvFileName = "";
jTextNew.setText("");
@@ -752,6 +816,7 @@ public void checkFieldMapping() {
@Override
public boolean deactivate() {
resetFields();
+ progress = -1;
return (true);
}
@@ -871,8 +936,9 @@ public void createProduct(String pType) {
myprod[DataLogicSales.INDEX_CANDISCOUNT] = false;
myprod[DataLogicSales.INDEX_ISPACK] = ((isPack != null) && !isPack.isEmpty() && (isPack.equals("1") || isPack.equalsIgnoreCase("yes"))); // Is a pack
myprod[DataLogicSales.INDEX_PACKQUANTITY] = packSize; // PackQuantity
- myprod[DataLogicSales.INDEX_PACKPRODUCT] = packOf; // Pack Product
+ myprod[DataLogicSales.INDEX_PACKPRODUCT] = (packOf.equals("") ? null : packOf); // Pack Product
myprod[DataLogicSales.INDEX_PROMOTIONID] = null;
+ myprod[DataLogicSales.INDEX_MANAGESTOCK] = true;
try {
if ("new".equals(pType)) {
@@ -905,7 +971,7 @@ public void createCSVEntry(String csvError, Double PreviousBuy, Double previousS
// create a new csv entry and save it using DataLogicSystem
Object[] myprod = new Object[11];
myprod[0] = UUID.randomUUID().toString(); // ID string
- myprod[1] = Integer.toString(currentRecord); // Record number
+ myprod[1] = Integer.toString((int) currentRecord); // Record number
myprod[2] = csvError; // Error description
myprod[3] = productReference; // Reference string
myprod[4] = productBarcode; // Barcode String
@@ -1019,6 +1085,7 @@ private void initComponents() {
jCheckAddStockLevels = new eu.hansolo.custom.SteelCheckBox();
jCheckInCatalogue = new eu.hansolo.custom.SteelCheckBox();
jCheckSellIncTax = new eu.hansolo.custom.SteelCheckBox();
+ jCreateCat = new eu.hansolo.custom.SteelCheckBox();
jCustom = new javax.swing.JPanel();
jCustom1 = new javax.swing.JPanel();
jLabelButtonText = new javax.swing.JLabel();
@@ -1065,6 +1132,7 @@ private void initComponents() {
jFooter = new javax.swing.JPanel();
jParamsLocation = new uk.chromis.pos.reports.JParamsLocation();
jImport = new javax.swing.JButton();
+ pb = new javax.swing.JProgressBar();
setOpaque(false);
setPreferredSize(new java.awt.Dimension(630, 430));
@@ -1110,8 +1178,8 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jFileName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(jbtnDbDriverLib, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(116, 116, 116))
+ .addComponent(jbtnDbDriverLib, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(99, 99, 99))
);
jFileChooserPanelLayout.setVerticalGroup(
jFileChooserPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -1425,6 +1493,8 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jCheckSellIncTax.setText(bundle.getString("label.csvsellingintax")); // NOI18N
+ jCreateCat.setText(bundle.getString("label.createcat")); // NOI18N
+
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
@@ -1450,7 +1520,9 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addComponent(jComboCategory, 0, 1, Short.MAX_VALUE)))
.addGroup(jPanel3Layout.createSequentialGroup()
.addGap(114, 114, 114)
- .addComponent(jCheckAddStockLevels, javax.swing.GroupLayout.DEFAULT_SIZE, 220, Short.MAX_VALUE)))
+ .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jCheckAddStockLevels, javax.swing.GroupLayout.DEFAULT_SIZE, 220, Short.MAX_VALUE)
+ .addComponent(jCreateCat, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
.addContainerGap())
);
jPanel3Layout.setVerticalGroup(
@@ -1468,7 +1540,9 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jComboTax, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 140, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 110, Short.MAX_VALUE)
+ .addComponent(jCreateCat, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jCheckAddStockLevels, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jCheckInCatalogue, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
@@ -1878,22 +1952,20 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jFooterLayout.setHorizontalGroup(
jFooterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jFooterLayout.createSequentialGroup()
- .addGap(20, 20, 20)
.addComponent(jParamsLocation, javax.swing.GroupLayout.PREFERRED_SIZE, 361, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 232, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 175, Short.MAX_VALUE)
.addComponent(jImport, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
jFooterLayout.setVerticalGroup(
jFooterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jFooterLayout.createSequentialGroup()
- .addContainerGap()
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jFooterLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jParamsLocation, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jFooterLayout.createSequentialGroup()
.addGap(14, 14, 14)
- .addComponent(jImport, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
- .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addComponent(jImport, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))))
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
@@ -1908,10 +1980,12 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 666, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
- .addGroup(layout.createSequentialGroup()
- .addComponent(jFooter, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(0, 0, Short.MAX_VALUE))
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addGroup(layout.createSequentialGroup()
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jFooter, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(pb, javax.swing.GroupLayout.PREFERRED_SIZE, 666, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addGap(0, 0, Short.MAX_VALUE))))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -1921,9 +1995,11 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(pb, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jFooter, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addContainerGap())
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
}// //GEN-END:initComponents
@@ -1939,11 +2015,9 @@ private void jImportActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST
// prevent any more key presses
jImport.setEnabled(false);
- try {
- ImportCsvFile(jFileName.getText());
- } catch (IOException ex) {
- Logger.getLogger(JPanelCSVImport.class.getName()).log(Level.SEVERE, null, ex);
- }
+ workProcess work = new workProcess();
+ Thread thread2 = new Thread(work);
+ thread2.start();
}//GEN-LAST:event_jImportActionPerformed
@@ -1954,7 +2028,7 @@ private void jFileNameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIR
private void jbtnDbDriverLibActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnDbDriverLibActionPerformed
resetFields();
-
+ setWorker();
// If CSV.last_file is null then use c:\ otherwise use saved dir
JFileChooser chooser = new JFileChooser(last_folder == null ? "C:\\" : last_folder);
FileNameExtensionFilter filter = new FileNameExtensionFilter("csv files", "csv");
@@ -2052,6 +2126,7 @@ private void jComboItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:e
private javax.swing.JComboBox jComboSell;
private javax.swing.JComboBox jComboSeparator;
private javax.swing.JComboBox jComboTax;
+ private eu.hansolo.custom.SteelCheckBox jCreateCat;
private javax.swing.JPanel jCustom;
private javax.swing.JPanel jCustom1;
private javax.swing.JPanel jCustom2;
@@ -2110,5 +2185,6 @@ private void jComboItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:e
private javax.swing.JTextField jTextUpdate;
private javax.swing.JLabel jTextUpdates;
private javax.swing.JButton jbtnDbDriverLib;
+ private javax.swing.JProgressBar pb;
// End of variables declaration//GEN-END:variables
}
diff --git a/src-pos/uk/chromis/pos/imports/StockChangesPanel.java b/src-pos/uk/chromis/pos/imports/StockChangesPanel.java
index 4fdfa459..b4003ca5 100644
--- a/src-pos/uk/chromis/pos/imports/StockChangesPanel.java
+++ b/src-pos/uk/chromis/pos/imports/StockChangesPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/instance/AppMessage.java b/src-pos/uk/chromis/pos/instance/AppMessage.java
index a68fe9fa..f333042d 100644
--- a/src-pos/uk/chromis/pos/instance/AppMessage.java
+++ b/src-pos/uk/chromis/pos/instance/AppMessage.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/instance/InstanceManager.java b/src-pos/uk/chromis/pos/instance/InstanceManager.java
index 0e9f4507..224589ab 100644
--- a/src-pos/uk/chromis/pos/instance/InstanceManager.java
+++ b/src-pos/uk/chromis/pos/instance/InstanceManager.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/instance/InstanceQuery.java b/src-pos/uk/chromis/pos/instance/InstanceQuery.java
index 8dc067fe..6c974b7c 100644
--- a/src-pos/uk/chromis/pos/instance/InstanceQuery.java
+++ b/src-pos/uk/chromis/pos/instance/InstanceQuery.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/AttributeFilter.form b/src-pos/uk/chromis/pos/inventory/AttributeFilter.form
index 088a7688..b155dbcc 100644
--- a/src-pos/uk/chromis/pos/inventory/AttributeFilter.form
+++ b/src-pos/uk/chromis/pos/inventory/AttributeFilter.form
@@ -33,7 +33,7 @@
-
+
@@ -52,9 +52,10 @@
-
+
+
diff --git a/src-pos/uk/chromis/pos/inventory/AttributeFilter.java b/src-pos/uk/chromis/pos/inventory/AttributeFilter.java
index a638caec..59222f08 100644
--- a/src-pos/uk/chromis/pos/inventory/AttributeFilter.java
+++ b/src-pos/uk/chromis/pos/inventory/AttributeFilter.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -138,7 +138,7 @@ private void initComponents() {
jLabel8.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel8.setText(AppLocal.getIntString("label.attribute")); // NOI18N
- jAttr.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+ jAttr.setFont(new java.awt.Font("Arial", 0, 13)); // NOI18N
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
@@ -158,7 +158,7 @@ private void initComponents() {
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jAttr, javax.swing.GroupLayout.DEFAULT_SIZE, 25, Short.MAX_VALUE)
.addComponent(jLabel8, javax.swing.GroupLayout.DEFAULT_SIZE, 25, Short.MAX_VALUE))
- .addContainerGap(22, Short.MAX_VALUE))
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
}// //GEN-END:initComponents
@@ -169,3 +169,4 @@ private void initComponents() {
// End of variables declaration//GEN-END:variables
}
+
diff --git a/src-pos/uk/chromis/pos/inventory/AttributeInfo.java b/src-pos/uk/chromis/pos/inventory/AttributeInfo.java
index 414a19e2..39d7bb07 100644
--- a/src-pos/uk/chromis/pos/inventory/AttributeInfo.java
+++ b/src-pos/uk/chromis/pos/inventory/AttributeInfo.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/AttributeSetFilter.java b/src-pos/uk/chromis/pos/inventory/AttributeSetFilter.java
index f8590da1..cfdb7c1f 100644
--- a/src-pos/uk/chromis/pos/inventory/AttributeSetFilter.java
+++ b/src-pos/uk/chromis/pos/inventory/AttributeSetFilter.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/AttributeSetInfo.java b/src-pos/uk/chromis/pos/inventory/AttributeSetInfo.java
index db0eda67..c3fd00bd 100644
--- a/src-pos/uk/chromis/pos/inventory/AttributeSetInfo.java
+++ b/src-pos/uk/chromis/pos/inventory/AttributeSetInfo.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/AttributeSetsEditor.java b/src-pos/uk/chromis/pos/inventory/AttributeSetsEditor.java
index 2922e03e..4a0c9102 100644
--- a/src-pos/uk/chromis/pos/inventory/AttributeSetsEditor.java
+++ b/src-pos/uk/chromis/pos/inventory/AttributeSetsEditor.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/AttributeSetsPanel.java b/src-pos/uk/chromis/pos/inventory/AttributeSetsPanel.java
index 002e4045..9d36a435 100644
--- a/src-pos/uk/chromis/pos/inventory/AttributeSetsPanel.java
+++ b/src-pos/uk/chromis/pos/inventory/AttributeSetsPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/AttributeUseEditor.java b/src-pos/uk/chromis/pos/inventory/AttributeUseEditor.java
index 3b5f2d83..2a6cfcf6 100644
--- a/src-pos/uk/chromis/pos/inventory/AttributeUseEditor.java
+++ b/src-pos/uk/chromis/pos/inventory/AttributeUseEditor.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/AttributeUsePanel.java b/src-pos/uk/chromis/pos/inventory/AttributeUsePanel.java
index 2c1b792f..cedca514 100644
--- a/src-pos/uk/chromis/pos/inventory/AttributeUsePanel.java
+++ b/src-pos/uk/chromis/pos/inventory/AttributeUsePanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/AttributeValuesEditor.java b/src-pos/uk/chromis/pos/inventory/AttributeValuesEditor.java
index ebeee20a..ed17e1ad 100644
--- a/src-pos/uk/chromis/pos/inventory/AttributeValuesEditor.java
+++ b/src-pos/uk/chromis/pos/inventory/AttributeValuesEditor.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/AttributeValuesPanel.java b/src-pos/uk/chromis/pos/inventory/AttributeValuesPanel.java
index 5579bd06..3b391de0 100644
--- a/src-pos/uk/chromis/pos/inventory/AttributeValuesPanel.java
+++ b/src-pos/uk/chromis/pos/inventory/AttributeValuesPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/AttributesEditor.java b/src-pos/uk/chromis/pos/inventory/AttributesEditor.java
index 078c3738..c05a5e6e 100644
--- a/src-pos/uk/chromis/pos/inventory/AttributesEditor.java
+++ b/src-pos/uk/chromis/pos/inventory/AttributesEditor.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/AttributesPanel.java b/src-pos/uk/chromis/pos/inventory/AttributesPanel.java
index f36ac3be..75c65f8e 100644
--- a/src-pos/uk/chromis/pos/inventory/AttributesPanel.java
+++ b/src-pos/uk/chromis/pos/inventory/AttributesPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/AuxiliarEditor.java b/src-pos/uk/chromis/pos/inventory/AuxiliarEditor.java
index e212f9f3..4cdc6c3a 100644
--- a/src-pos/uk/chromis/pos/inventory/AuxiliarEditor.java
+++ b/src-pos/uk/chromis/pos/inventory/AuxiliarEditor.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/AuxiliarPanel.java b/src-pos/uk/chromis/pos/inventory/AuxiliarPanel.java
index ab162b5f..ac33e281 100644
--- a/src-pos/uk/chromis/pos/inventory/AuxiliarPanel.java
+++ b/src-pos/uk/chromis/pos/inventory/AuxiliarPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/CategoriesEditor.java b/src-pos/uk/chromis/pos/inventory/CategoriesEditor.java
index 98ec380d..6b6fe20e 100644
--- a/src-pos/uk/chromis/pos/inventory/CategoriesEditor.java
+++ b/src-pos/uk/chromis/pos/inventory/CategoriesEditor.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk liquibase
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/CategoriesPanel.java b/src-pos/uk/chromis/pos/inventory/CategoriesPanel.java
index 6f61be27..19c3d81d 100644
--- a/src-pos/uk/chromis/pos/inventory/CategoriesPanel.java
+++ b/src-pos/uk/chromis/pos/inventory/CategoriesPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/CodeType.java b/src-pos/uk/chromis/pos/inventory/CodeType.java
index 3bc35844..d5a896cd 100644
--- a/src-pos/uk/chromis/pos/inventory/CodeType.java
+++ b/src-pos/uk/chromis/pos/inventory/CodeType.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/InventoryLine.java b/src-pos/uk/chromis/pos/inventory/InventoryLine.java
index fdf28a53..e557e3a5 100644
--- a/src-pos/uk/chromis/pos/inventory/InventoryLine.java
+++ b/src-pos/uk/chromis/pos/inventory/InventoryLine.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/InventoryRecord.java b/src-pos/uk/chromis/pos/inventory/InventoryRecord.java
index 3551a31c..0be0da22 100644
--- a/src-pos/uk/chromis/pos/inventory/InventoryRecord.java
+++ b/src-pos/uk/chromis/pos/inventory/InventoryRecord.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/JDlgEditProduct.form b/src-pos/uk/chromis/pos/inventory/JDlgEditProduct.form
new file mode 100644
index 00000000..94772f50
--- /dev/null
+++ b/src-pos/uk/chromis/pos/inventory/JDlgEditProduct.form
@@ -0,0 +1,99 @@
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/inventory/JDlgEditProduct.java b/src-pos/uk/chromis/pos/inventory/JDlgEditProduct.java
new file mode 100644
index 00000000..cd3446b1
--- /dev/null
+++ b/src-pos/uk/chromis/pos/inventory/JDlgEditProduct.java
@@ -0,0 +1,219 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) 2015
+// http://www.chromis.co.uk
+//
+// This file is part of Chromis POS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+package uk.chromis.pos.inventory;
+
+import java.awt.Component;
+import java.awt.Dialog;
+import java.awt.Frame;
+import java.awt.Window;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.JFrame;
+import uk.chromis.basic.BasicException;
+import uk.chromis.data.loader.LocalRes;
+import uk.chromis.data.user.DirtyManager;
+import uk.chromis.data.user.SaveProvider;
+import uk.chromis.pos.forms.AppLocal;
+import uk.chromis.pos.forms.DataLogicSales;
+
+/**
+ *
+ * @author adrianromero
+ */
+public class JDlgEditProduct extends javax.swing.JDialog {
+
+ // private AppView m_App;
+ private ProductsEditor producteditor;
+ private DataLogicSales m_dlSales;
+ private DirtyManager m_dirty;
+ private SaveProvider m_SaveProvider;
+ private CompletionCallback m_CallBacks;
+ static private int STATE_INSERT = 0;
+ static private int STATE_UPDATE = 1;
+
+ private int state = STATE_INSERT;
+
+ interface CompletionCallback
+ {
+ void notifyCompletionOk( String reference );
+ void notifyCompletionCancel();
+ }
+
+ /** Creates new form JDlgUploadProducts */
+ public JDlgEditProduct(JFrame parent, boolean modal) {
+ super(parent, modal);
+ m_CallBacks = null;
+ }
+
+ public void setCallbacks( CompletionCallback callBacks ) {
+ m_CallBacks = callBacks;
+ }
+
+ public void init( DataLogicSales dlSales, DirtyManager dirty, String productID, String barcode ) {
+ m_dlSales = dlSales;
+ m_dirty = dirty;
+ initComponents();
+
+ m_SaveProvider = new SaveProvider(
+ m_dlSales.getProductCatUpdate(),
+ m_dlSales.getProductCatInsert(),
+ m_dlSales.getProductCatDelete());
+
+ getRootPane().setDefaultButton(jcmdOK);
+
+ producteditor = new ProductsEditor(m_dlSales, m_dirty);
+
+ try {
+ producteditor.activate();
+
+ if( productID == null ) {
+ state = STATE_INSERT;
+ } else {
+ state = STATE_UPDATE;
+ }
+
+ producteditor.setProduct( productID, barcode );
+ } catch (BasicException ex) {
+ Logger.getLogger(JDlgEditProduct.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ jPanelEditor.add( producteditor );
+
+ }
+
+ private static Window getWindow(Component parent) {
+ if (parent == null) {
+ return new JFrame();
+ } else if (parent instanceof Frame || parent instanceof Dialog) {
+ return (Window)parent;
+ } else {
+ return getWindow(parent.getParent());
+ }
+ }
+
+ /** This method is called from within the constructor to
+ * initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is
+ * always regenerated by the Form Editor.
+ */
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ jPanel2 = new javax.swing.JPanel();
+ jcmdOK = new javax.swing.JButton();
+ jcmdCancel = new javax.swing.JButton();
+ jPanel1 = new javax.swing.JPanel();
+ jPanelEditor = new javax.swing.JPanel();
+
+ setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
+ setTitle(AppLocal.getIntString("caption.upload")); // NOI18N
+ setResizable(false);
+
+ jPanel2.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.RIGHT));
+
+ jcmdOK.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jcmdOK.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/ok.png"))); // NOI18N
+ jcmdOK.setText(AppLocal.getIntString("Button.OK")); // NOI18N
+ jcmdOK.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jcmdOKActionPerformed(evt);
+ }
+ });
+ jPanel2.add(jcmdOK);
+
+ jcmdCancel.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jcmdCancel.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/cancel.png"))); // NOI18N
+ jcmdCancel.setText(AppLocal.getIntString("Button.Cancel")); // NOI18N
+ jcmdCancel.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jcmdCancelActionPerformed(evt);
+ }
+ });
+ jPanel2.add(jcmdCancel);
+
+ getContentPane().add(jPanel2, java.awt.BorderLayout.SOUTH);
+
+ jPanel1.setLayout(null);
+ jPanel1.add(jPanelEditor);
+ jPanelEditor.setBounds(0, 0, 620, 480);
+
+ getContentPane().add(jPanel1, java.awt.BorderLayout.CENTER);
+
+ setSize(new java.awt.Dimension(634, 566));
+ setLocationRelativeTo(null);
+ }// //GEN-END:initComponents
+
+ private void jcmdCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcmdCancelActionPerformed
+ if( m_CallBacks != null ) {
+ m_CallBacks.notifyCompletionCancel();
+ }
+ dispose();
+ }//GEN-LAST:event_jcmdCancelActionPerformed
+
+ private void jcmdOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcmdOKActionPerformed
+ boolean bOK = false;
+ String reference = null;
+
+ if( producteditor != null ) {
+ try {
+ Object values = producteditor.createValue();
+ if( state == STATE_INSERT ) {
+ if (m_SaveProvider.insertData(values) > 0) {
+ bOK = true;
+ } else {
+ throw new BasicException(LocalRes.getIntString("exception.noupdate"));
+ }
+ } else {
+ if (m_SaveProvider.updateData(values) > 0 ) {
+ bOK = true;
+ } else {
+ throw new BasicException(LocalRes.getIntString("exception.noupdate"));
+ }
+ }
+
+ Object [] aValues = (Object [] ) values;
+ reference = (String) aValues[DataLogicSales.INDEX_REFERENCE];
+
+ } catch (BasicException ex) {
+ Logger.getLogger(JDlgEditProduct.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+
+ if( m_CallBacks != null ) {
+ if( bOK && producteditor != null ) {
+ m_CallBacks.notifyCompletionOk( reference );
+ } else {
+ m_CallBacks.notifyCompletionCancel();
+ }
+ }
+ dispose();
+
+ }//GEN-LAST:event_jcmdOKActionPerformed
+
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JPanel jPanel1;
+ private javax.swing.JPanel jPanel2;
+ private javax.swing.JPanel jPanelEditor;
+ private javax.swing.JButton jcmdCancel;
+ private javax.swing.JButton jcmdOK;
+ // End of variables declaration//GEN-END:variables
+
+}
+
diff --git a/src-pos/uk/chromis/pos/inventory/JDlgUploadProducts.java b/src-pos/uk/chromis/pos/inventory/JDlgUploadProducts.java
index 31b07435..8ef9b908 100644
--- a/src-pos/uk/chromis/pos/inventory/JDlgUploadProducts.java
+++ b/src-pos/uk/chromis/pos/inventory/JDlgUploadProducts.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/JInventoryLines.java b/src-pos/uk/chromis/pos/inventory/JInventoryLines.java
index 800e47f5..46978f6e 100644
--- a/src-pos/uk/chromis/pos/inventory/JInventoryLines.java
+++ b/src-pos/uk/chromis/pos/inventory/JInventoryLines.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/LocationInfo.java b/src-pos/uk/chromis/pos/inventory/LocationInfo.java
index e1994676..284fad6d 100644
--- a/src-pos/uk/chromis/pos/inventory/LocationInfo.java
+++ b/src-pos/uk/chromis/pos/inventory/LocationInfo.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/LocationsPanel.java b/src-pos/uk/chromis/pos/inventory/LocationsPanel.java
index a240a2f3..c3f1477b 100644
--- a/src-pos/uk/chromis/pos/inventory/LocationsPanel.java
+++ b/src-pos/uk/chromis/pos/inventory/LocationsPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/LocationsView.java b/src-pos/uk/chromis/pos/inventory/LocationsView.java
index a17c52c2..ddf62ceb 100644
--- a/src-pos/uk/chromis/pos/inventory/LocationsView.java
+++ b/src-pos/uk/chromis/pos/inventory/LocationsView.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/MovementReason.java b/src-pos/uk/chromis/pos/inventory/MovementReason.java
index fd3d5015..b470a698 100644
--- a/src-pos/uk/chromis/pos/inventory/MovementReason.java
+++ b/src-pos/uk/chromis/pos/inventory/MovementReason.java
@@ -16,7 +16,6 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.pos.inventory;
import uk.chromis.pos.panels.ComboItemLocal;
@@ -26,57 +25,28 @@
* @author adrianromero
*/
public class MovementReason extends ComboItemLocal {
-
- // public static final MovementReason NULL = new MovementReason(null, "");
-
- /**
- *
- */
- public static final MovementReason IN_PURCHASE = new MovementReason(+1, "stock.in.purchase");
- /**
- *
- */
+ // The numeric key indicates whether this is an increase or decrease in stock level
+ // It is important to get the sign right.
+ public static final MovementReason IN_PURCHASE = new MovementReason(+1, "stock.in.purchase");
public static final MovementReason IN_REFUND = new MovementReason(+2, "stock.in.refund");
-
- /**
- *
- */
public static final MovementReason IN_MOVEMENT = new MovementReason(+4, "stock.in.movement");
+ public static final MovementReason IN_OPEN_PACK = new MovementReason(+5, "stock.in.openpack");
+ public static final MovementReason IN_STOCKCHANGE = new MovementReason(+7, "stock.in.stockchange");
+ public static final MovementReason IN_RECIPES = new MovementReason(+8, "stock.in.recipes");
- /**
- *
- */
public static final MovementReason OUT_SALE = new MovementReason(-1, "stock.out.sale");
-
- /**
- *
- */
public static final MovementReason OUT_REFUND = new MovementReason(-2, "stock.out.refund");
-
- /**
- *
- */
public static final MovementReason OUT_BREAK = new MovementReason(-3, "stock.out.break");
-
- /**
- *
- */
public static final MovementReason OUT_MOVEMENT = new MovementReason(-4, "stock.out.movement");
-
- public static final MovementReason IN_OPEN_PACK = new MovementReason(-5, "stock.in.openpack");
-
- public static final MovementReason OUT_OPEN_PACK = new MovementReason(-6, "stock.out.openpack");
-
- public static final MovementReason IN_STOCKCHANGE = new MovementReason(-7, "stock.in.stockchange");
-
- public static final MovementReason OUT_STOCKCHANGE = new MovementReason(-8, "stock.out.stockchange");
-
+ public static final MovementReason OUT_OPEN_PACK = new MovementReason(-5, "stock.out.openpack");
+ public static final MovementReason OUT_STOCKCHANGE = new MovementReason(-7, "stock.out.stockchange");
+ public static final MovementReason OUT_RECIPES = new MovementReason(-8, "stock.out.recipes");
/**
*
*/
public static final MovementReason OUT_CROSSING = new MovementReason(1000, "stock.out.crossing");
-
+
private MovementReason(Integer iKey, String sKeyValue) {
super(iKey, sKeyValue);
}
@@ -95,15 +65,15 @@ public boolean isInput() {
* @return
*/
public Double samesignum(Double d) {
-
+
if (d == null || m_iKey == null) {
return d;
- } else if ((m_iKey > 0 && d < 0.0) ||
- (m_iKey < 0 && d > 0.0)) {
+ } else if ((m_iKey > 0 && d < 0.0)
+ || (m_iKey < 0 && d > 0.0)) {
return -d;
} else {
return d;
- }
+ }
}
/**
@@ -113,8 +83,10 @@ public Double samesignum(Double d) {
* @return
*/
public Double getPrice(Double dBuyPrice, Double dSellPrice) {
-
- if (this == IN_PURCHASE || this == OUT_REFUND || this == OUT_BREAK) {
+
+ if (this == IN_PURCHASE || this == OUT_REFUND || this == OUT_BREAK
+ || this == IN_OPEN_PACK || this == OUT_OPEN_PACK || this == OUT_BREAK
+ || this == IN_STOCKCHANGE || this == OUT_STOCKCHANGE) {
return dBuyPrice;
} else if (this == OUT_SALE || this == IN_REFUND) {
return dSellPrice;
diff --git a/src-pos/uk/chromis/pos/inventory/PackProductInfo.java b/src-pos/uk/chromis/pos/inventory/PackProductInfo.java
index 9f8db9ef..4a2a25ec 100644
--- a/src-pos/uk/chromis/pos/inventory/PackProductInfo.java
+++ b/src-pos/uk/chromis/pos/inventory/PackProductInfo.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/PriceImportPanel.java b/src-pos/uk/chromis/pos/inventory/PriceImportPanel.java
index a002a5f5..cdffa5c9 100644
--- a/src-pos/uk/chromis/pos/inventory/PriceImportPanel.java
+++ b/src-pos/uk/chromis/pos/inventory/PriceImportPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// Portions Contributed by: John D L 2013
// http://www.chromis.co.uk
//
diff --git a/src-pos/uk/chromis/pos/inventory/ProductListInfo.java b/src-pos/uk/chromis/pos/inventory/ProductListInfo.java
new file mode 100644
index 00000000..6b7f60db
--- /dev/null
+++ b/src-pos/uk/chromis/pos/inventory/ProductListInfo.java
@@ -0,0 +1,100 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016
+// http://www.chromis.co.uk
+//
+// This file is part of Chromis POS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+package uk.chromis.pos.inventory;
+
+import uk.chromis.basic.BasicException;
+import uk.chromis.data.loader.DataRead;
+import uk.chromis.data.loader.IKeyed;
+import uk.chromis.data.loader.SerializableRead;
+
+/**
+ *
+ * @author adrianromero
+ * Created on February 13, 2007, 10:13 AM
+ *
+ */
+public class ProductListInfo implements SerializableRead, IKeyed {
+
+ private static final long serialVersionUID = 9032683595244L;
+ private String m_sName;
+
+ /** Creates a new instance of LocationInfo */
+ public ProductListInfo() {
+ m_sName = null;
+ }
+
+ /** Creates a new instance of LocationInfo */
+ public ProductListInfo( String name ) {
+ m_sName = name;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public Object getKey() {
+ return m_sName;
+ }
+
+ /**
+ *
+ * @param dr
+ * @throws BasicException
+ */
+ public void readValues(DataRead dr) throws BasicException {
+ m_sName = dr.getString(1);
+ }
+
+ /**
+ *
+ * @param sID
+ */
+ public void setID(String sID) {
+ m_sName = sID;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public String getID() {
+ return m_sName;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public String getName() {
+ return m_sName;
+ }
+
+ /**
+ *
+ * @param sName
+ */
+ public void setName(String sName) {
+ m_sName = sName;
+ }
+
+ public String toString(){
+ return m_sName;
+ }
+}
diff --git a/src-pos/uk/chromis/pos/inventory/ProductListItem.java b/src-pos/uk/chromis/pos/inventory/ProductListItem.java
new file mode 100644
index 00000000..225e0f7b
--- /dev/null
+++ b/src-pos/uk/chromis/pos/inventory/ProductListItem.java
@@ -0,0 +1,134 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016
+// http://www.chromis.co.uk
+//
+// This file is part of Chromis POS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+package uk.chromis.pos.inventory;
+
+import uk.chromis.basic.BasicException;
+import uk.chromis.data.loader.DataRead;
+import uk.chromis.data.loader.IKeyed;
+import uk.chromis.data.loader.SerializableRead;
+
+/**
+ *
+ * @author adrianromero
+ * Created on February 13, 2007, 10:13 AM
+ *
+ */
+public class ProductListItem implements SerializableRead, IKeyed {
+
+ private static final long serialVersionUID = 9032683595445L;
+ private String m_sName;
+ private String m_sProduct;
+ private String m_sReference;
+
+ /** Creates a new instance of LocationInfo */
+ public ProductListItem() {
+ m_sName = null;
+ m_sProduct = null;
+ m_sReference = null;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public Object getKey() {
+ return m_sProduct;
+ }
+
+ /**
+ *
+ * @param dr
+ * @throws BasicException
+ */
+ public void readValues(DataRead dr) throws BasicException {
+ m_sProduct = dr.getString(1);
+ m_sReference = dr.getString(2);
+ m_sName = dr.getString(3);
+ }
+
+ /**
+ *
+ * @param sID
+ */
+ public void setID(String sID) {
+ m_sProduct = sID;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public String getID() {
+ return m_sProduct;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public String getName() {
+ return m_sName;
+ }
+
+ /**
+ *
+ * @param sName
+ */
+ public void setName(String sName) {
+ m_sName = sName;
+ }
+
+ /**
+ *
+ * @return
+ */
+ public String getReference() {
+ return m_sReference;
+ }
+
+ /**
+ *
+ * @param sReference
+ */
+ public void setReference(String sReference) {
+ m_sReference = sReference;
+ }
+
+
+ /**
+ *
+ * @return
+ */
+ public String getProduct() {
+ return m_sProduct;
+ }
+
+ /**
+ *
+ * @param sName
+ */
+ public void setProduct(String sName) {
+ m_sProduct = sName;
+ }
+
+ public String toString(){
+ return m_sReference + "-" + m_sName;
+ }
+}
diff --git a/src-pos/uk/chromis/pos/inventory/ProductListsPanel.form b/src-pos/uk/chromis/pos/inventory/ProductListsPanel.form
new file mode 100644
index 00000000..34841c15
--- /dev/null
+++ b/src-pos/uk/chromis/pos/inventory/ProductListsPanel.form
@@ -0,0 +1,381 @@
+
+
+
diff --git a/src-pos/uk/chromis/pos/inventory/ProductListsPanel.java b/src-pos/uk/chromis/pos/inventory/ProductListsPanel.java
new file mode 100644
index 00000000..c190b320
--- /dev/null
+++ b/src-pos/uk/chromis/pos/inventory/ProductListsPanel.java
@@ -0,0 +1,656 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) 2015
+// http://www.chromis.co.uk
+//
+// This file is part of Chromis POS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+package uk.chromis.pos.inventory;
+
+import uk.chromis.basic.BasicException;
+import uk.chromis.data.gui.ComboBoxValModel;
+import uk.chromis.data.gui.MessageInf;
+import uk.chromis.data.loader.SentenceList;
+import uk.chromis.pos.catalog.CatalogSelector;
+import uk.chromis.pos.catalog.JCatalog;
+import uk.chromis.pos.forms.AppLocal;
+import uk.chromis.pos.forms.AppView;
+import uk.chromis.pos.forms.DataLogicSales;
+import uk.chromis.pos.panels.JProductFinder;
+import uk.chromis.pos.ticket.ProductInfoExt;
+import java.awt.BorderLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileReader;
+import java.io.IOException;
+import javax.swing.*;
+import javax.swing.filechooser.FileNameExtensionFilter;
+import uk.chromis.data.gui.ListValModel;
+import uk.chromis.pos.forms.AppConfig;
+import uk.chromis.pos.forms.BeanFactoryApp;
+import uk.chromis.pos.forms.JPanelView;
+import uk.chromis.pos.ticket.PlayWave;
+
+/**
+ *
+ * @author adrianromero
+ */
+public final class ProductListsPanel extends JPanel implements JPanelView, BeanFactoryApp {
+
+ private CatalogSelector m_cat;
+
+ private String productid;
+ private String productcode;
+ private String productref;
+ private String productname;
+
+ private ComboBoxValModel m_NameListModel;
+ private SentenceList m_sentNameLists;
+
+ private ListValModel m_ProductsListModel;
+ private SentenceList m_sentProductsList;
+
+ private AppView m_App;
+ private DataLogicSales m_dlSales;
+
+ public ProductListsPanel() {
+ }
+
+ /**
+ *
+ * @param app
+ */
+ @Override
+ public void init(AppView app) {
+ m_App = app;
+ initComponents();
+
+ m_App = app;
+ m_dlSales = (DataLogicSales) m_App.getBean("uk.chromis.pos.forms.DataLogicSales");
+
+ m_sentNameLists = m_dlSales.getProductListList();
+ m_NameListModel = new ComboBoxValModel();
+ m_jList.setModel(m_NameListModel);
+
+ m_cat = new JCatalog(m_dlSales);
+ m_cat.addActionListener(new CatalogListener());
+
+ catcontainer.add(m_cat.getComponent(), BorderLayout.CENTER);
+
+ setControls();
+
+ }
+
+ private void setControls() {
+
+ jButtonNewList.setEnabled(true);
+ jButtonImport.setEnabled(true);
+ jListProducts.setEnabled(true);
+ jproduct.setEnabled(false);
+
+ if( m_jList.getItemCount() == 0 || m_jList.getSelectedIndex() == -1 ) {
+ // List is empty or no item selected
+ m_cat.setComponentEnabled(false);
+ jButtonRemoveProduct.setEnabled(false);
+ jButtonAddProduct.setEnabled(false);
+ jButtonDeleteList.setEnabled(false);
+ m_FindProduct.setEnabled(false);
+ m_jEnter1.setEnabled(false);
+ m_jbarcode.setEnabled(false);
+ m_jreference.setEnabled(false);
+ } else {
+ // List has an entry selected
+ m_cat.setComponentEnabled(true);
+ jButtonDeleteList.setEnabled(true);
+ m_FindProduct.setEnabled(true);
+ m_jEnter1.setEnabled(true);
+ m_jbarcode.setEnabled(true);
+ m_jreference.setEnabled(true);
+
+ if( productid != null && !productid.isEmpty() ) {
+ jButtonAddProduct.setEnabled(true);
+ } else {
+ jButtonAddProduct.setEnabled(false);
+ }
+
+ if( jListProducts.getSelectedIndex() == -1 ) {
+ jButtonRemoveProduct.setEnabled(false);
+ } else {
+ jButtonRemoveProduct.setEnabled(true);
+ }
+ }
+ }
+
+ @Override
+ public Object getBean() {
+ return this;
+ }
+
+ @Override
+ public JComponent getComponent() {
+ return this;
+ }
+
+ /**
+ *
+ * @return
+ */
+ @Override
+ public String getTitle() {
+ return null;
+ }
+
+
+ /**
+ *
+ * @throws BasicException
+ */
+ public void activate() throws BasicException {
+ m_cat.loadCatalog();
+
+ m_NameListModel = new ComboBoxValModel(m_sentNameLists.list());
+ m_jList.setModel(m_NameListModel);
+
+ setControls();
+ }
+
+ @Override
+ public boolean deactivate() {
+ return true;
+ }
+
+ private void assignProduct(ProductInfoExt prod) {
+
+ if (prod == null) {
+ productid = null;
+ productref = null;
+ productcode = null;
+ productname = null;
+ jproduct.setText(null);
+ m_jreference.setText(null);
+ m_jbarcode.setText(null);
+ } else {
+ productid = prod.getID();
+ productref = prod.getReference();
+ productcode = prod.getCode();
+ productname = prod.getName();
+ jproduct.setText(productname);
+ m_jreference.setText(productref);
+ m_jbarcode.setText(productcode);
+
+ }
+
+ setControls();
+ }
+
+ private void assignProductById( String Id ) {
+ try {
+ ProductInfoExt oProduct = m_dlSales.getProductInfo(Id);
+ if (oProduct == null) {
+ assignProduct(null);
+ new PlayWave("error.wav").start(); // playing WAVE file
+ } else {
+ assignProduct(oProduct);
+ }
+ } catch (BasicException eData) {
+ assignProduct(null);
+ MessageInf msg = new MessageInf(eData);
+ msg.show(this);
+ }
+ }
+
+ private void assignProductByCode() {
+ try {
+ String code = m_jreference.getText();
+ ProductInfoExt oProduct = m_dlSales.getProductInfoByCode( code );
+ if (oProduct == null && code.startsWith("977")) {
+ // This is an ISSN barcode (news and magazines)
+ // the first 3 digits correspond to the 977 prefix assigned to serial publications,
+ // the next 7 digits correspond to the ISSN of the publication
+ // Anything after that is publisher dependant - we strip everything after
+ // the 10th character
+ code = code.substring(0, 10);
+ oProduct = m_dlSales.getProductInfoByCode( code );
+ }
+
+ if (oProduct != null) {
+ assignProduct(oProduct);
+ }
+ } catch (BasicException eData) {
+ assignProduct(null);
+ MessageInf msg = new MessageInf(eData);
+ msg.show(this);
+ }
+ }
+
+ private class CatalogListener implements ActionListener {
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ assignProduct((ProductInfoExt) e.getSource());
+ addProduct();
+ }
+ }
+
+ private void updateProductList() {
+ ProductListInfo info = (ProductListInfo) m_jList.getSelectedItem();
+ if( info != null ) {
+ String name = info.getName();
+ if( name != null && !name.isEmpty() ) {
+ m_sentProductsList = m_dlSales.getProductListItems( name );
+ try {
+ m_ProductsListModel = new ListValModel( m_sentProductsList.list() );
+ } catch (BasicException ex) {
+ MessageInf msg = new MessageInf(ex);
+ msg.show(this);
+ m_ProductsListModel = new ListValModel();
+ }
+ } else {
+ m_ProductsListModel = new ListValModel();
+ }
+ } else {
+ m_ProductsListModel = new ListValModel();
+ }
+ jListProducts.setModel( m_ProductsListModel );
+ }
+
+ private void addProduct() {
+ ProductListInfo info = (ProductListInfo) m_jList.getSelectedItem();
+ String name = info.getName();
+
+ if( name != null && !name.isEmpty() && productid != null && !productid.isEmpty() ) {
+ try {
+ m_dlSales.addProductListItem( name, productid );
+ updateProductList();
+ } catch (BasicException ex) {
+ MessageInf msg = new MessageInf(ex);
+ msg.show(this);
+ }
+ }
+ }
+
+ private boolean startNewList() {
+ boolean bResult = false;
+ String name = JOptionPane.showInputDialog( this, AppLocal.getIntString("message.asklistname"));
+
+ if( name != null && !name.isEmpty() ) {
+ // Find out if already exists
+ int n = m_jList.getItemCount();
+ boolean bExists = false;
+ for( int i = 0; !bExists && i < m_jList.getItemCount(); ++i ) {
+ ProductListInfo info = (ProductListInfo) m_jList.getItemAt(i);
+ if( name.equalsIgnoreCase(info.getName())) {
+ bExists = true;
+ m_jList.setSelectedItem(info);
+ }
+ }
+
+ if( bExists ) {
+ JOptionPane.showMessageDialog(null,
+ AppLocal.getIntString("message.nameexists"),
+ AppLocal.getIntString("Menu.ProductLists"),
+ JOptionPane.WARNING_MESSAGE);
+ } else {
+ ProductListInfo info = new ProductListInfo( name );
+ m_NameListModel.add( info );
+ m_jList.setSelectedItem(info);
+ bResult = true;
+ }
+
+ setControls();
+ }
+
+ return bResult;
+ }
+
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
+ */
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ jPanel1 = new javax.swing.JPanel();
+ jLabel8 = new javax.swing.JLabel();
+ jproduct = new javax.swing.JTextField();
+ m_FindProduct = new javax.swing.JButton();
+ jLabel7 = new javax.swing.JLabel();
+ m_jreference = new javax.swing.JTextField();
+ m_jList = new javax.swing.JComboBox();
+ jScrollPane1 = new javax.swing.JScrollPane();
+ jListProducts = new javax.swing.JList<>();
+ jButtonRemoveProduct = new javax.swing.JButton();
+ jButtonAddProduct = new javax.swing.JButton();
+ jLabel10 = new javax.swing.JLabel();
+ jButtonNewList = new javax.swing.JButton();
+ jButtonDeleteList = new javax.swing.JButton();
+ jButtonImport = new javax.swing.JButton();
+ jLabel9 = new javax.swing.JLabel();
+ m_jbarcode = new javax.swing.JTextField();
+ m_jEnter1 = new javax.swing.JButton();
+ catcontainer = new javax.swing.JPanel();
+
+ setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ setMinimumSize(new java.awt.Dimension(550, 250));
+ setPreferredSize(new java.awt.Dimension(550, 270));
+ setLayout(new java.awt.BorderLayout());
+
+ jPanel1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jPanel1.setMaximumSize(new java.awt.Dimension(2147483647, 2147483647));
+ jPanel1.setMinimumSize(new java.awt.Dimension(780, 260));
+ jPanel1.setPreferredSize(new java.awt.Dimension(780, 200));
+ jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
+
+ jLabel8.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel8.setText(AppLocal.getIntString("Label.List")); // NOI18N
+ jLabel8.setMaximumSize(new java.awt.Dimension(40, 20));
+ jLabel8.setMinimumSize(new java.awt.Dimension(40, 20));
+ jLabel8.setPreferredSize(new java.awt.Dimension(40, 20));
+ jPanel1.add(jLabel8, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 10, 80, 25));
+
+ jproduct.setEditable(false);
+ jproduct.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jPanel1.add(jproduct, new org.netbeans.lib.awtextra.AbsoluteConstraints(80, 50, 270, 25));
+
+ m_FindProduct.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/search24.png"))); // NOI18N
+ java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N
+ m_FindProduct.setToolTipText(bundle.getString("tiptext.searchproductlist")); // NOI18N
+ m_FindProduct.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ m_FindProductActionPerformed(evt);
+ }
+ });
+ jPanel1.add(m_FindProduct, new org.netbeans.lib.awtextra.AbsoluteConstraints(260, 120, 40, -1));
+
+ jLabel7.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel7.setText(AppLocal.getIntString("label.prodref")); // NOI18N
+ jLabel7.setMaximumSize(new java.awt.Dimension(40, 20));
+ jLabel7.setMinimumSize(new java.awt.Dimension(40, 20));
+ jLabel7.setPreferredSize(new java.awt.Dimension(40, 20));
+ jPanel1.add(jLabel7, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 120, 70, 25));
+
+ m_jreference.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ m_jreference.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ m_jreferenceActionPerformed(evt);
+ }
+ });
+ jPanel1.add(m_jreference, new org.netbeans.lib.awtextra.AbsoluteConstraints(80, 120, 170, 25));
+
+ m_jList.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
+ m_jList.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ m_jListActionPerformed(evt);
+ }
+ });
+ jPanel1.add(m_jList, new org.netbeans.lib.awtextra.AbsoluteConstraints(80, 10, 330, 25));
+
+ jListProducts.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
+ public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
+ jListProductsValueChanged(evt);
+ }
+ });
+ jScrollPane1.setViewportView(jListProducts);
+
+ jPanel1.add(jScrollPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(430, 0, 310, 200));
+
+ jButtonRemoveProduct.setText("<--");
+ jButtonRemoveProduct.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jButtonRemoveProductActionPerformed(evt);
+ }
+ });
+ jPanel1.add(jButtonRemoveProduct, new org.netbeans.lib.awtextra.AbsoluteConstraints(360, 70, -1, -1));
+
+ jButtonAddProduct.setText("-->");
+ jButtonAddProduct.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jButtonAddProductActionPerformed(evt);
+ }
+ });
+ jPanel1.add(jButtonAddProduct, new org.netbeans.lib.awtextra.AbsoluteConstraints(360, 40, -1, -1));
+
+ jLabel10.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel10.setText(AppLocal.getIntString("label.warehouse")); // NOI18N
+ jLabel10.setMaximumSize(new java.awt.Dimension(40, 20));
+ jLabel10.setMinimumSize(new java.awt.Dimension(40, 20));
+ jLabel10.setPreferredSize(new java.awt.Dimension(40, 20));
+ jPanel1.add(jLabel10, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 50, 70, 25));
+
+ jButtonNewList.setText(bundle.getString("label.newlist")); // NOI18N
+ jButtonNewList.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jButtonNewListActionPerformed(evt);
+ }
+ });
+ jPanel1.add(jButtonNewList, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 170, -1, -1));
+
+ jButtonDeleteList.setText(bundle.getString("label.deletelist")); // NOI18N
+ jButtonDeleteList.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jButtonDeleteListActionPerformed(evt);
+ }
+ });
+ jPanel1.add(jButtonDeleteList, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 170, -1, -1));
+
+ jButtonImport.setText(bundle.getString("label.importlist")); // NOI18N
+ jButtonImport.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ jButtonImportActionPerformed(evt);
+ }
+ });
+ jPanel1.add(jButtonImport, new org.netbeans.lib.awtextra.AbsoluteConstraints(90, 170, -1, -1));
+
+ jLabel9.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel9.setText(AppLocal.getIntString("label.prodbarcode")); // NOI18N
+ jLabel9.setMaximumSize(new java.awt.Dimension(40, 20));
+ jLabel9.setMinimumSize(new java.awt.Dimension(40, 20));
+ jLabel9.setPreferredSize(new java.awt.Dimension(40, 20));
+ jPanel1.add(jLabel9, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 80, 70, 25));
+
+ m_jbarcode.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ m_jbarcode.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ m_jbarcodeActionPerformed(evt);
+ }
+ });
+ jPanel1.add(m_jbarcode, new org.netbeans.lib.awtextra.AbsoluteConstraints(80, 80, 170, 25));
+
+ m_jEnter1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/barcode.png"))); // NOI18N
+ m_jEnter1.setToolTipText(bundle.getString("tiptext.getbarcode")); // NOI18N
+ m_jEnter1.setFocusPainted(false);
+ m_jEnter1.setFocusable(false);
+ m_jEnter1.setMaximumSize(new java.awt.Dimension(54, 33));
+ m_jEnter1.setMinimumSize(new java.awt.Dimension(54, 33));
+ m_jEnter1.setPreferredSize(new java.awt.Dimension(54, 33));
+ m_jEnter1.setRequestFocusEnabled(false);
+ m_jEnter1.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ m_jEnter1ActionPerformed(evt);
+ }
+ });
+ jPanel1.add(m_jEnter1, new org.netbeans.lib.awtextra.AbsoluteConstraints(260, 80, 40, -1));
+
+ add(jPanel1, java.awt.BorderLayout.PAGE_START);
+
+ catcontainer.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ catcontainer.setMaximumSize(new java.awt.Dimension(2147483647, 2147483647));
+ catcontainer.setMinimumSize(new java.awt.Dimension(0, 250));
+ catcontainer.setPreferredSize(new java.awt.Dimension(0, 250));
+ catcontainer.setLayout(new java.awt.BorderLayout());
+ add(catcontainer, java.awt.BorderLayout.CENTER);
+ catcontainer.getAccessibleContext().setAccessibleParent(jPanel1);
+ }// //GEN-END:initComponents
+
+ private void m_jreferenceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jreferenceActionPerformed
+
+ assignProductById( m_jreference.getText() );
+
+ }//GEN-LAST:event_m_jreferenceActionPerformed
+
+ private void m_FindProductActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_FindProductActionPerformed
+ assignProduct(JProductFinder.showMessage(this, m_dlSales));
+
+}//GEN-LAST:event_m_FindProductActionPerformed
+
+ private void jButtonImportActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonImportActionPerformed
+
+ String last_folder = AppConfig.getInstance().getProperty("CSV.last_folder");
+ JFileChooser chooser = new JFileChooser(last_folder == null ? "C:\\" : last_folder);
+ FileNameExtensionFilter filter = new FileNameExtensionFilter("csv files", "csv");
+ chooser.setFileFilter(filter);
+ chooser.showOpenDialog(null);
+ File csvFile = chooser.getSelectedFile();
+
+ // check if a file was selected
+ if (csvFile == null) {
+ return;
+ }
+
+ File current_folder = chooser.getCurrentDirectory();
+ // If we have a file lets save the directory for later use if it's different from the old
+ if (last_folder == null || !last_folder.equals(current_folder.getAbsolutePath())) {
+ AppConfig.getInstance().setProperty("CSV.last_folder", current_folder.getAbsolutePath());
+ try {
+ AppConfig.getInstance().save();
+ } catch (IOException ex) {
+ MessageInf msg = new MessageInf(ex);
+ msg.show(this);
+ }
+ }
+
+ String csv = csvFile.getName();
+ if (!(csv.trim().equals(""))) {
+ String csvFileName = csvFile.getAbsolutePath();
+ if( startNewList() ) {
+ try {
+ // Get the data and store in the list
+ FileReader fr = new FileReader( csvFileName );
+ BufferedReader br = new BufferedReader( fr );
+
+ String line;
+ while( (line = br.readLine()) != null ) {
+ line.trim();
+ m_jreference.setText( line );
+ assignProductByCode();
+ addProduct();
+ }
+ } catch (FileNotFoundException ex) {
+ MessageInf msg = new MessageInf(ex);
+ msg.show(this);
+ } catch (IOException ex) {
+ MessageInf msg = new MessageInf(ex);
+ msg.show(this);
+ }
+
+ }
+ }
+
+ }//GEN-LAST:event_jButtonImportActionPerformed
+
+ private void m_jbarcodeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jbarcodeActionPerformed
+ assignProductByCode();
+ }//GEN-LAST:event_m_jbarcodeActionPerformed
+
+ private void m_jEnter1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jEnter1ActionPerformed
+ assignProductByCode();
+ }//GEN-LAST:event_m_jEnter1ActionPerformed
+
+ private void jButtonNewListActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonNewListActionPerformed
+ startNewList();
+ }//GEN-LAST:event_jButtonNewListActionPerformed
+
+ private void jButtonAddProductActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAddProductActionPerformed
+ addProduct();
+ }//GEN-LAST:event_jButtonAddProductActionPerformed
+
+ private void jButtonRemoveProductActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonRemoveProductActionPerformed
+ ProductListInfo info = (ProductListInfo) m_jList.getSelectedItem();
+ String name = info.getName();
+ if( name != null && !name.isEmpty() ) {
+ int[] list = jListProducts.getSelectedIndices();
+ for (int entry : list) {
+ ProductListItem item = (ProductListItem) m_ProductsListModel.getElementAt(entry);
+ if( item != null ) {
+ try {
+ m_dlSales.removeProductListItem( name, item.getID() );
+ updateProductList();
+ } catch (BasicException ex) {
+ MessageInf msg = new MessageInf(ex);
+ msg.show(this);
+ }
+ }
+ }
+ }
+ }//GEN-LAST:event_jButtonRemoveProductActionPerformed
+
+ private void m_jListActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jListActionPerformed
+ updateProductList();
+ setControls();
+ }//GEN-LAST:event_m_jListActionPerformed
+
+ private void jListProductsValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_jListProductsValueChanged
+ setControls();
+ }//GEN-LAST:event_jListProductsValueChanged
+
+ private void jButtonDeleteListActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonDeleteListActionPerformed
+ ProductListInfo info = (ProductListInfo) m_jList.getSelectedItem();
+ String name = info.getName();
+ if( name != null && !name.isEmpty() ) {
+ if (JOptionPane.showConfirmDialog(this, AppLocal.getIntString( "message.confirmdeletelist"),
+ AppLocal.getIntString("Menu.ProductLists"),
+ JOptionPane.YES_NO_OPTION,
+ JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
+ try {
+ m_dlSales.removeProductList( name );
+ m_NameListModel.del( info );
+ m_jList.setSelectedIndex(-1);
+ } catch (BasicException ex) {
+ MessageInf msg = new MessageInf(ex);
+ msg.show(this);
+ }
+ updateProductList();
+ setControls();
+ }
+ }
+ }//GEN-LAST:event_jButtonDeleteListActionPerformed
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JPanel catcontainer;
+ private javax.swing.JButton jButtonAddProduct;
+ private javax.swing.JButton jButtonDeleteList;
+ private javax.swing.JButton jButtonImport;
+ private javax.swing.JButton jButtonNewList;
+ private javax.swing.JButton jButtonRemoveProduct;
+ private javax.swing.JLabel jLabel10;
+ private javax.swing.JLabel jLabel7;
+ private javax.swing.JLabel jLabel8;
+ private javax.swing.JLabel jLabel9;
+ private javax.swing.JList jListProducts;
+ private javax.swing.JPanel jPanel1;
+ private javax.swing.JScrollPane jScrollPane1;
+ private javax.swing.JTextField jproduct;
+ private javax.swing.JButton m_FindProduct;
+ private javax.swing.JButton m_jEnter1;
+ private javax.swing.JComboBox m_jList;
+ private javax.swing.JTextField m_jbarcode;
+ private javax.swing.JTextField m_jreference;
+ // End of variables declaration//GEN-END:variables
+
+}
diff --git a/src-pos/uk/chromis/pos/inventory/ProductPacksEditor.java b/src-pos/uk/chromis/pos/inventory/ProductPacksEditor.java
index 0fbbd623..4dc08e48 100644
--- a/src-pos/uk/chromis/pos/inventory/ProductPacksEditor.java
+++ b/src-pos/uk/chromis/pos/inventory/ProductPacksEditor.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/ProductPacksPanel.java b/src-pos/uk/chromis/pos/inventory/ProductPacksPanel.java
index c8bbabe1..d9f7b744 100644
--- a/src-pos/uk/chromis/pos/inventory/ProductPacksPanel.java
+++ b/src-pos/uk/chromis/pos/inventory/ProductPacksPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/ProductsEditor.form b/src-pos/uk/chromis/pos/inventory/ProductsEditor.form
index 1eb6a710..9da8f8f7 100644
--- a/src-pos/uk/chromis/pos/inventory/ProductsEditor.form
+++ b/src-pos/uk/chromis/pos/inventory/ProductsEditor.form
@@ -23,11 +23,11 @@
-
+
-
+
@@ -39,7 +39,7 @@
-
+
@@ -135,9 +135,6 @@
-
-
-
@@ -249,9 +246,6 @@
-
-
-
@@ -280,9 +274,6 @@
-
-
-
@@ -521,13 +512,16 @@
-
+
+
+
+
-
+
@@ -692,9 +686,6 @@
-
-
-
@@ -840,6 +831,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -931,7 +934,6 @@
-
@@ -1045,9 +1047,6 @@
-
-
-
diff --git a/src-pos/uk/chromis/pos/inventory/ProductsEditor.java b/src-pos/uk/chromis/pos/inventory/ProductsEditor.java
index fc4c475f..3bf18c23 100644
--- a/src-pos/uk/chromis/pos/inventory/ProductsEditor.java
+++ b/src-pos/uk/chromis/pos/inventory/ProductsEditor.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,6 +16,7 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
+//
package uk.chromis.pos.inventory;
import java.awt.Component;
@@ -39,11 +40,12 @@
import uk.chromis.data.user.DirtyManager;
import uk.chromis.data.user.EditorRecord;
import uk.chromis.format.Formats;
-import uk.chromis.pos.forms.AppConfig;
import uk.chromis.pos.forms.AppLocal;
import uk.chromis.pos.forms.DataLogicSales;
import uk.chromis.pos.sales.TaxesLogic;
import uk.chromis.pos.util.BarcodeValidator;
+import uk.chromis.pos.ticket.ProductInfoExt;
+import uk.chromis.pos.util.AutoCompleteComboBox;
/**
*
@@ -69,6 +71,7 @@ public final class ProductsEditor extends JPanel implements EditorRecord {
private boolean priceselllock = false;
private boolean reportlock = false;
private BarcodeValidator validate;
+ private DataLogicSales m_dlSales;
/**
* Creates new form JEditProduct
@@ -79,18 +82,20 @@ public final class ProductsEditor extends JPanel implements EditorRecord {
public ProductsEditor(DataLogicSales dlSales, DirtyManager dirty) {
initComponents();
+ m_dlSales = dlSales;
+
// Taxes sentence
taxsent = dlSales.getTaxList();
// Categories model
- m_sentcat = dlSales.getCategoriesList();
+ m_sentcat = dlSales.getCategoriesList();
m_CategoryModel = new ComboBoxValModel();
// Promotions model
m_sentpromotion = dlSales.getPromotionsList();
m_PromotionModel = new ComboBoxValModel();
-
+
// Taxes model
taxcatsent = dlSales.getTaxCategoriesList();
taxcatmodel = new ComboBoxValModel();
@@ -151,7 +156,8 @@ public ProductsEditor(DataLogicSales dlSales, DirtyManager dirty) {
m_jAlias.getDocument().addDocumentListener(dirty);
m_jAlwaysAvailable.addActionListener(dirty);
m_jDiscounted.addActionListener(dirty);
-
+ m_jManageStock.addActionListener(dirty);
+
writeValueEOF();
}
@@ -166,10 +172,10 @@ public void activate() throws BasicException {
m_CategoryModel = new ComboBoxValModel(m_sentcat.list());
m_jCategory.setModel(m_CategoryModel);
-
+
m_PromotionModel = new ComboBoxValModel(m_sentpromotion.list());
- jComboBoxPromotion.setModel(m_PromotionModel);
-
+ jComboBoxPromotion.setModel(m_PromotionModel);
+
taxcatmodel = new ComboBoxValModel(taxcatsent.list());
m_jTax.setModel(taxcatmodel);
@@ -180,6 +186,76 @@ public void activate() throws BasicException {
packproductmodel = new ComboBoxValModel(packproductsent.list());
m_jPackProduct.setModel(packproductmodel);
+ AutoCompleteComboBox.enable(m_jPackProduct);
+ }
+
+// Set the product to be edited.
+ public void setProduct(String productID, String barcode) {
+ try {
+ if (productID != null) {
+ ProductInfoExt info = m_dlSales.getProductInfo(productID);
+
+ Object[] myprod = new Object[DataLogicSales.FIELD_COUNT];
+
+ m_id = productID;
+ m_jRef.setText(info.getReference());
+ m_jCode.setText(info.getCode());
+ m_jName.setText(info.getName());
+ m_jComment.setSelected(info.isCom());
+ m_jScale.setSelected(info.isScale());
+ m_jPriceBuy.setText(Formats.CURRENCY.formatValue(info.getPriceBuy()));
+ m_jPriceSell.setText(Formats.CURRENCY.formatValue(info.getPriceSell()));
+ setPriceSell(info.getPriceSell());
+ m_CategoryModel.setSelectedKey(info.getCategoryID());
+ jComboBoxPromotion.setEnabled(true);
+
+ String promID = info.getPromotionID();
+ if (promID != null && !promID.isEmpty()) {
+ jCheckBoxPromotion.setSelected(true);
+ } else {
+ jCheckBoxPromotion.setSelected(false);
+ }
+ m_PromotionModel.setSelectedKey(promID);
+
+ m_PromotionModel.setSelectedKey(info.getPromotionID());
+ taxcatmodel.setSelectedKey(info.getTaxCategoryID());
+ attmodel.setSelectedKey(info.getAttributeSetID());
+ m_jImage.setImage(info.getImage());
+ m_jstockcost.setText(Formats.CURRENCY.formatValue(info.getStockCost()));
+ m_jstockvolume.setText(Formats.DOUBLE.formatValue(info.getStockVolume()));
+ m_jInCatalog.setSelected(info.getInCatalog());
+ m_jCatalogOrder.setText(Formats.INT.formatValue(info.getCatOrder()));
+ m_jKitchen.setSelected(info.isKitchen());
+ m_jService.setSelected(info.isService());
+ m_jDisplay.setText(info.getDisplay());
+ m_jVprice.setSelected(info.isVprice());
+ m_jVerpatrib.setSelected(info.isVerpatrib());
+ m_jTextTip.setText(info.getTextTip());
+ m_jCheckWarrantyReceipt.setSelected(info.getWarranty());
+ m_jStockUnits.setText(Formats.DOUBLE.formatValue(info.getStockUnits()));
+ m_jAlias.setText(info.getAlias());
+ m_jAlwaysAvailable.setSelected(info.getAlwaysAvailable());
+ m_jDiscounted.setSelected(info.getCanDiscount());
+ m_jManageStock.setSelected( info.getManageStock() );
+ m_jIsPack.setSelected(info.getIsPack());
+ m_jPackQuantity.setText(Formats.DOUBLE.formatValue(info.getPackQuantity()));
+ packproductmodel.setSelectedKey(info.getPromotionID());
+ } else if (barcode != null) {
+ m_jRef.setText(barcode);
+ m_jCode.setText(barcode);
+ }
+ } catch (BasicException ex) {
+ Logger.getLogger(ProductsEditor.class.getName()).log(Level.SEVERE, null, ex);
+ }
+
+ }
+
+ public String getID() {
+ return (String) m_id;
+ }
+
+ // Save the currently edited product.
+ public void saveProduct() {
}
/**
@@ -228,6 +304,7 @@ public void writeValueEOF() {
m_jAlias.setText(null);
m_jAlwaysAvailable.setSelected(false);
m_jDiscounted.setSelected(false);
+ m_jManageStock.setSelected( false );
reportlock = false;
@@ -269,6 +346,7 @@ public void writeValueEOF() {
jLabelPackProduct.setEnabled(false);
m_jDiscounted.setEnabled(false);
+ m_jManageStock.setEnabled( false );
calculateMargin();
calculatePriceSellTax();
@@ -313,6 +391,7 @@ public void writeValueInsert() {
m_jAlias.setText(null);
m_jAlwaysAvailable.setSelected(false);
m_jDiscounted.setSelected(true);
+ m_jManageStock.setSelected( true );
reportlock = false;
@@ -353,6 +432,7 @@ public void writeValueInsert() {
jLabelPackProduct.setEnabled(false);
m_jDiscounted.setEnabled(true);
+ m_jManageStock.setEnabled( true );
m_jIsPack.setSelected(false);
m_jPackQuantity.setText(null);
@@ -364,10 +444,8 @@ public void writeValueInsert() {
}
- private void extractValues( Object[] myprod ) {
- m_jTitle.setText(Formats.STRING.formatValue(myprod[DataLogicSales.INDEX_REFERENCE]) + " - " +
- Formats.STRING.formatValue(myprod[DataLogicSales.INDEX_NAME]) + " "
- + AppLocal.getIntString("label.recorddeleted"));
+ private void extractValues(Object[] myprod) {
+ m_jTitle.setText(Formats.STRING.formatValue(myprod[DataLogicSales.INDEX_NAME]));
m_id = myprod[DataLogicSales.INDEX_ID];
m_jRef.setText(Formats.STRING.formatValue(myprod[DataLogicSales.INDEX_REFERENCE]));
m_jCode.setText(Formats.STRING.formatValue(myprod[DataLogicSales.INDEX_CODE]));
@@ -377,17 +455,17 @@ private void extractValues( Object[] myprod ) {
m_jPriceBuy.setText(Formats.CURRENCY.formatValue(myprod[DataLogicSales.INDEX_PRICEBUY]));
setPriceSell(myprod[DataLogicSales.INDEX_PRICESELL]);
m_CategoryModel.setSelectedKey(myprod[DataLogicSales.INDEX_CATEGORY]);
-
+
Object prom = myprod[DataLogicSales.INDEX_PROMOTIONID];
- if( prom == null ) {
+ if (prom == null) {
jComboBoxPromotion.setEnabled(false);
jCheckBoxPromotion.setSelected(false);
} else {
- jComboBoxPromotion.setEnabled(true);
+ jComboBoxPromotion.setEnabled(true);
jCheckBoxPromotion.setSelected(true);
}
- m_PromotionModel.setSelectedKey( prom );
-
+ m_PromotionModel.setSelectedKey(prom);
+
taxcatmodel.setSelectedKey(myprod[DataLogicSales.INDEX_TAXCAT]);
attmodel.setSelectedKey(myprod[DataLogicSales.INDEX_ATTRIBUTESET_ID]);
m_jImage.setImage((BufferedImage) myprod[DataLogicSales.INDEX_IMAGE]);
@@ -410,7 +488,7 @@ private void extractValues( Object[] myprod ) {
m_jIsPack.setSelected(((Boolean) myprod[DataLogicSales.INDEX_ISPACK]));
m_jPackQuantity.setText(Formats.DOUBLE.formatValue(myprod[DataLogicSales.INDEX_PACKQUANTITY]));
packproductmodel.setSelectedKey(myprod[DataLogicSales.INDEX_PACKPRODUCT]);
-
+ m_jManageStock.setSelected( ((Boolean) myprod[DataLogicSales.INDEX_MANAGESTOCK]) );
}
/**
@@ -422,12 +500,15 @@ public void writeValueDelete(Object value) {
reportlock = true;
Object[] myprod = (Object[]) value;
- extractValues( myprod );
+ extractValues(myprod);
+ m_jTitle.setText(Formats.STRING.formatValue(myprod[DataLogicSales.INDEX_REFERENCE]) + " - "
+ + Formats.STRING.formatValue(myprod[DataLogicSales.INDEX_NAME]) + " "
+ + AppLocal.getIntString("label.recorddeleted"));
txtAttributes.setCaretPosition(0);
reportlock = false;
- // Los habilitados
+ // Los habilitados
m_jRef.setEnabled(false);
m_jCode.setEnabled(false);
m_jName.setEnabled(false);
@@ -460,6 +541,7 @@ public void writeValueDelete(Object value) {
m_jAlwaysAvailable.setEnabled(false);
m_jDiscounted.setEnabled(false);
m_jIsPack.setEnabled(true);
+ m_jManageStock.setEnabled( false );
m_jPackQuantity.setEnabled(m_jIsPack.isSelected());
m_jPackProduct.setEnabled(m_jIsPack.isSelected());
@@ -480,7 +562,7 @@ public void writeValueEdit(Object value) {
reportlock = true;
Object[] myprod = (Object[]) value;
- extractValues( myprod );
+ extractValues(myprod);
txtAttributes.setCaretPosition(0);
reportlock = false;
@@ -492,7 +574,7 @@ public void writeValueEdit(Object value) {
m_jComment.setEnabled(true);
m_jScale.setEnabled(true);
m_jCategory.setEnabled(true);
- jCheckBoxPromotion.setEnabled(true);
+ jCheckBoxPromotion.setEnabled(true);
m_jTax.setEnabled(true);
m_jAtt.setEnabled(true);
m_jPriceBuy.setEnabled(true);
@@ -524,7 +606,7 @@ public void writeValueEdit(Object value) {
jLabelPackQuantity.setEnabled(m_jIsPack.isSelected());
jLabelPackProduct.setEnabled(m_jIsPack.isSelected());
- m_jDiscounted.setEnabled(true);
+
calculateMargin();
calculatePriceSellTax();
calculateGP();
@@ -540,7 +622,9 @@ public Object createValue() throws BasicException {
Object[] myprod = new Object[DataLogicSales.FIELD_COUNT];
myprod[DataLogicSales.INDEX_ID] = m_id;
myprod[DataLogicSales.INDEX_REFERENCE] = m_jRef.getText();
- myprod[DataLogicSales.INDEX_CODE] = m_jCode.getText();
+
+ String code = m_jCode.getText();
+ myprod[DataLogicSales.INDEX_CODE] = code;
myprod[DataLogicSales.INDEX_CODETYPE] = BarcodeValidator.BarcodeValidate(m_jCode.getText());
myprod[DataLogicSales.INDEX_NAME] = m_jName.getText();
myprod[DataLogicSales.INDEX_ISCOM] = m_jComment.isSelected();
@@ -572,7 +656,7 @@ public Object createValue() throws BasicException {
myprod[DataLogicSales.INDEX_ISPACK] = m_jIsPack.isSelected();
myprod[DataLogicSales.INDEX_PACKQUANTITY] = Formats.DOUBLE.parseValue(m_jPackQuantity.getText());
myprod[DataLogicSales.INDEX_PACKPRODUCT] = packproductmodel.getSelectedKey();
-
+ myprod[DataLogicSales.INDEX_MANAGESTOCK] = m_jManageStock.isSelected();
return myprod;
}
@@ -947,7 +1031,7 @@ private void initComponents() {
m_jCheckWarrantyReceipt = new eu.hansolo.custom.SteelCheckBox();
jLabel36 = new javax.swing.JLabel();
jComboBoxPromotion = new javax.swing.JComboBox();
- jCheckBoxPromotion = new javax.swing.JCheckBox();
+ jCheckBoxPromotion = new eu.hansolo.custom.SteelCheckBox();
jPanel2 = new javax.swing.JPanel();
jLabel9 = new javax.swing.JLabel();
m_jstockcost = new javax.swing.JTextField();
@@ -970,6 +1054,7 @@ private void initComponents() {
m_jVprice = new eu.hansolo.custom.SteelCheckBox();
m_jService = new eu.hansolo.custom.SteelCheckBox();
m_jComment = new eu.hansolo.custom.SteelCheckBox();
+ m_jManageStock = new eu.hansolo.custom.SteelCheckBox();
m_jImage = new uk.chromis.data.gui.JImageEditor();
jPanel4 = new javax.swing.JPanel();
jLabel28 = new javax.swing.JLabel();
@@ -993,12 +1078,11 @@ private void initComponents() {
jLabel27.setText("jLabel27");
- setLayout(null);
+ setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
m_jTitle.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
m_jTitle.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
- add(m_jTitle);
- m_jTitle.setBounds(310, 0, 240, 20);
+ add(m_jTitle, new org.netbeans.lib.awtextra.AbsoluteConstraints(270, 0, 330, 30));
jTabbedPane1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
@@ -1028,11 +1112,6 @@ public void focusLost(java.awt.event.FocusEvent evt) {
m_jCode.setBounds(130, 40, 170, 25);
m_jCodetype.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
- m_jCodetype.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- m_jCodetypeActionPerformed(evt);
- }
- });
jPanel1.add(m_jCodetype);
m_jCodetype.setBounds(310, 40, 90, 25);
@@ -1074,11 +1153,6 @@ public void focusLost(java.awt.event.FocusEvent evt) {
jLabel7.setBounds(10, 190, 110, 25);
m_jTax.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
- m_jTax.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- m_jTaxActionPerformed(evt);
- }
- });
jPanel1.add(m_jTax);
m_jTax.setBounds(130, 190, 170, 25);
@@ -1089,11 +1163,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
m_jPriceSellTax.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
m_jPriceSellTax.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
- m_jPriceSellTax.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- m_jPriceSellTaxActionPerformed(evt);
- }
- });
jPanel1.add(m_jPriceSellTax);
m_jPriceSellTax.setBounds(130, 220, 80, 25);
@@ -1181,13 +1250,14 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel1.add(jComboBoxPromotion);
jComboBoxPromotion.setBounds(160, 280, 380, 30);
+ jCheckBoxPromotion.setText(" ");
jCheckBoxPromotion.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jCheckBoxPromotionActionPerformed(evt);
}
});
jPanel1.add(jCheckBoxPromotion);
- jCheckBoxPromotion.setBounds(130, 290, 30, 21);
+ jCheckBoxPromotion.setBounds(130, 280, 30, 30);
jTabbedPane1.addTab(AppLocal.getIntString("label.prodgeneral"), jPanel1); // NOI18N
@@ -1252,11 +1322,6 @@ public void focusLost(java.awt.event.FocusEvent evt) {
m_jPackQuantity.setBounds(350, 270, 80, 25);
m_jPackProduct.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
- m_jPackProduct.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- m_jPackProductActionPerformed(evt);
- }
- });
jPanel2.add(m_jPackProduct);
m_jPackProduct.setBounds(350, 300, 220, 25);
@@ -1323,6 +1388,11 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel2.add(m_jComment);
m_jComment.setBounds(20, 110, 200, 30);
+ m_jManageStock.setText(bundle.getString("label.managestock")); // NOI18N
+ jPanel2.add(m_jManageStock);
+ m_jManageStock.setBounds(20, 290, 200, 30);
+
+
jTabbedPane1.addTab(AppLocal.getIntString("label.prodstock"), jPanel2); // NOI18N
jTabbedPane1.addTab("Image", m_jImage);
@@ -1351,11 +1421,6 @@ public void mouseClicked(java.awt.event.MouseEvent evt) {
jButtonHTMLMouseClicked(evt);
}
});
- jButtonHTML.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- jButtonHTMLActionPerformed(evt);
- }
- });
jPanel4.add(jButtonHTML);
jButtonHTML.setBounds(205, 90, 110, 70);
@@ -1375,11 +1440,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jLabel32.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel32.setText(bundle.getString("label.fontexample")); // NOI18N
jLabel32.setToolTipText(bundle.getString("tooltip.fontexample")); // NOI18N
- jLabel32.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
- public void mouseDragged(java.awt.event.MouseEvent evt) {
- jLabel32MouseDragged(evt);
- }
- });
jLabel25.setFont(new java.awt.Font("Arial", 0, 14)); // NOI18N
jLabel25.setText(bundle.getString("label.fontcolour")); // NOI18N
@@ -1465,20 +1525,10 @@ public void mouseDragged(java.awt.event.MouseEvent evt) {
jTabbedPane1.addTab(AppLocal.getIntString("label.properties"), jPanel3); // NOI18N
- add(jTabbedPane1);
- jTabbedPane1.setBounds(10, 10, 600, 420);
+ add(jTabbedPane1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 10, 600, 420));
}// //GEN-END:initComponents
- private void m_jTaxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jTaxActionPerformed
-
- }//GEN-LAST:event_m_jTaxActionPerformed
-
- private void m_jPriceSellTaxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jPriceSellTaxActionPerformed
-
- }//GEN-LAST:event_m_jPriceSellTaxActionPerformed
-
private void m_jRefFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_m_jRefFocusLost
-
setCode();
}//GEN-LAST:event_m_jRefFocusLost
@@ -1490,36 +1540,6 @@ private void jButtonHTMLMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST
setButtonHTML();
}//GEN-LAST:event_jButtonHTMLMouseClicked
- private void jButtonHTMLActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonHTMLActionPerformed
-
- }//GEN-LAST:event_jButtonHTMLActionPerformed
-
- private void jLabel32MouseDragged(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jLabel32MouseDragged
- // TODO for later
- }//GEN-LAST:event_jLabel32MouseDragged
-
- private void m_jCodetypeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jCodetypeActionPerformed
- // TODO add your handling code here:
- }//GEN-LAST:event_m_jCodetypeActionPerformed
-private void m_jPackProductActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jPackProductActionPerformed
- // TODO add your handling code here:
- }//GEN-LAST:event_m_jPackProductActionPerformed
-
-private void jCheckBoxPromotionActionPerformed(java.awt.event.ActionEvent evt) {
- if( jCheckBoxPromotion.isSelected() ) {
- jComboBoxPromotion.setEnabled(true);
- } else {
- jComboBoxPromotion.setEnabled(false);
- jComboBoxPromotion.getModel().setSelectedItem(null);
- }
- } private void m_jPackQuantityFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_m_jPackQuantityFocusLost
- try {
- packproductmodel = new ComboBoxValModel(packproductsent.list());
- } catch (BasicException ex) {
- Logger.getLogger(ProductsEditor.class.getName()).log(Level.SEVERE, null, ex);
- }
- m_jPackProduct.setModel(packproductmodel);
- }//GEN-LAST:event_m_jPackQuantityFocusLost
private void m_jAlwaysAvailableActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jAlwaysAvailableActionPerformed
if (m_jAlwaysAvailable.isSelected()) {
@@ -1547,9 +1567,33 @@ private void m_jIsPackActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIR
jLabelPackProduct.setEnabled(m_jIsPack.isSelected());
}//GEN-LAST:event_m_jIsPackActionPerformed
+ private void jCheckBoxPromotionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBoxPromotionActionPerformed
+ if (jCheckBoxPromotion.isSelected()) {
+ jComboBoxPromotion.setEnabled(true);
+ } else {
+ jComboBoxPromotion.setEnabled(false);
+ jComboBoxPromotion.getModel().setSelectedItem(null);
+ }
+ }//GEN-LAST:event_jCheckBoxPromotionActionPerformed
+
+ private void m_jPackQuantityFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_m_jPackQuantityFocusLost
+ Object selectItem = m_jPackProduct.getSelectedItem();
+ Object selectIndex = m_jPackProduct.getSelectedItem();
+ try {
+ packproductmodel = new ComboBoxValModel(packproductsent.list());
+ } catch (BasicException ex) {
+ Logger.getLogger(ProductsEditor.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ m_jPackProduct.setModel(packproductmodel);
+ if (selectItem != null) {
+ m_jPackProduct.setSelectedItem(selectItem);
+ m_jPackProduct.setSelectedItem(selectIndex);
+ }
+ }//GEN-LAST:event_m_jPackQuantityFocusLost
+
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButtonHTML;
- private javax.swing.JCheckBox jCheckBoxPromotion;
+ private eu.hansolo.custom.SteelCheckBox jCheckBoxPromotion;
private javax.swing.JComboBox jComboBoxPromotion;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
@@ -1606,6 +1650,7 @@ private void m_jIsPackActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIR
private eu.hansolo.custom.SteelCheckBox m_jInCatalog;
private eu.hansolo.custom.SteelCheckBox m_jIsPack;
private eu.hansolo.custom.SteelCheckBox m_jKitchen;
+ private eu.hansolo.custom.SteelCheckBox m_jManageStock;
private javax.swing.JTextField m_jName;
private javax.swing.JComboBox m_jPackProduct;
private javax.swing.JTextField m_jPackQuantity;
diff --git a/src-pos/uk/chromis/pos/inventory/ProductsPanel.java b/src-pos/uk/chromis/pos/inventory/ProductsPanel.java
index 5607f04a..3661751e 100644
--- a/src-pos/uk/chromis/pos/inventory/ProductsPanel.java
+++ b/src-pos/uk/chromis/pos/inventory/ProductsPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,7 +16,6 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.pos.inventory;
import java.awt.Component;
@@ -26,6 +25,7 @@
import uk.chromis.data.user.EditorRecord;
import uk.chromis.data.user.ListProviderCreator;
import uk.chromis.data.user.SaveProvider;
+import uk.chromis.pos.forms.AppConfig;
import uk.chromis.pos.forms.AppLocal;
import uk.chromis.pos.forms.DataLogicSales;
import uk.chromis.pos.panels.JPanelTable2;
@@ -33,46 +33,55 @@
/**
*
- * @author adrianromero
- * Created on 1 de marzo de 2007, 22:15
+ * @author adrianromero Created on 1 de marzo de 2007, 22:15
*
*/
public class ProductsPanel extends JPanelTable2 implements EditorListener {
private ProductsEditor jeditor;
- private ProductFilter jproductfilter;
-
+ private ProductFilter jproductfilter;
+ private String m_initialFilter = "";
private DataLogicSales m_dlSales = null;
-
- /** Creates a new instance of ProductsPanel2 */
+
+ /**
+ * Creates a new instance of ProductsPanel2
+ */
public ProductsPanel() {
}
-
+
+ public ProductsPanel(String szFilter) {
+ // Set initial filter
+ m_initialFilter = szFilter;
+ }
+
/**
*
*/
@Override
- protected void init() {
+ protected void init() {
m_dlSales = (DataLogicSales) app.getBean("uk.chromis.pos.forms.DataLogicSales");
-
+
// el panel del filtro
jproductfilter = new ProductFilter();
jproductfilter.init(app);
row = m_dlSales.getProductsRow();
- lpr = new ListProviderCreator(m_dlSales.getProductCatQBF(), jproductfilter);
+ lpr = new ListProviderCreator(m_dlSales.getProductCatQBF(), jproductfilter);
spr = new SaveProvider(
- m_dlSales.getProductCatUpdate(),
- m_dlSales.getProductCatInsert(),
- m_dlSales.getProductCatDelete());
+ m_dlSales.getProductCatUpdate(),
+ m_dlSales.getProductCatInsert(),
+ m_dlSales.getProductCatDelete());
-
// el panel del editor
- jeditor = new ProductsEditor(m_dlSales, dirty);
+ jeditor = new ProductsEditor(m_dlSales, dirty);
+
+ if (AppConfig.getInstance().getBoolean("display.longnames")) {
+ setListWidth(300);
+ }
}
-
+
/**
*
* @return value
@@ -81,7 +90,7 @@ protected void init() {
public EditorRecord getEditor() {
return jeditor;
}
-
+
/**
*
* @return value
@@ -97,7 +106,7 @@ public Component getFilter() {
*/
@Override
public Component getToolbarExtras() {
-
+
JButton btnScanPal = new JButton();
btnScanPal.setText("ScanPal");
btnScanPal.setVisible(app.getDeviceScanner() != null);
@@ -106,13 +115,13 @@ public Component getToolbarExtras() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnScanPalActionPerformed(evt);
}
- });
-
+ });
+
return btnScanPal;
}
-
- private void btnScanPalActionPerformed(java.awt.event.ActionEvent evt) {
-
+
+ private void btnScanPalActionPerformed(java.awt.event.ActionEvent evt) {
+
JDlgUploadProducts.showMessage(this, app.getDeviceScanner(), bd);
}
@@ -131,10 +140,14 @@ public String getTitle() {
*/
@Override
public void activate() throws BasicException {
-
- jeditor.activate();
+
+ jeditor.activate();
jproductfilter.activate();
-
+
+ // Speed up loading with large product sets - only load after refresh
+ // is hit which is usually after a filter is set up
+ setLoadOnActivation(false);
+
super.activate();
}
@@ -144,5 +157,5 @@ public void activate() throws BasicException {
*/
@Override
public void updateValue(Object value) {
- }
+ }
}
diff --git a/src-pos/uk/chromis/pos/inventory/ProductsRecipeInfo.java b/src-pos/uk/chromis/pos/inventory/ProductsRecipeInfo.java
new file mode 100644
index 00000000..b1aa9cdd
--- /dev/null
+++ b/src-pos/uk/chromis/pos/inventory/ProductsRecipeInfo.java
@@ -0,0 +1,96 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016
+// http://www.chromis.co.uk
+//
+// This file is part of Chromis POS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+package uk.chromis.pos.inventory;
+
+import uk.chromis.basic.BasicException;
+import uk.chromis.data.loader.DataRead;
+import uk.chromis.data.loader.ImageUtils;
+import uk.chromis.data.loader.SerializerRead;
+import uk.chromis.pos.ticket.CategoryInfo;
+
+/**
+ *
+ * @author dpn
+ */
+public class ProductsRecipeInfo {
+ private static final long serialVersionUID = 7587646873036L;
+
+ protected String id;
+ protected String productId;
+ protected String productKitId;
+ protected Double quantity;
+
+ /**
+ *
+ * @param id
+ * @param product
+ * @param productKit
+ * @param quantity
+ */
+ public ProductsRecipeInfo(String id, String productId, String productKitId, Double quantity) {
+ this.id = id;
+ this.productId = productId;
+ this.productKitId = productKitId;
+ this.quantity = quantity;
+ }
+
+
+ public void setM_ID(String id) {
+ this.id = id;
+ }
+
+ public void setM_sProduct(String productId) {
+ this.productId = productId;
+ }
+
+ public void setM_sProductKit(String productKitId) {
+ this.productKitId = productKitId;
+ }
+
+ public void setM_dQuantity(Double m_dQuantity) {
+ this.quantity = quantity;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public String getProductId() {
+ return productId;
+ }
+
+ public String getProductKitId() {
+ return productKitId;
+ }
+
+ public Double getQuantity() {
+ return quantity;
+ }
+
+
+ public static SerializerRead getSerializerRead() {
+ return new SerializerRead() {
+ @Override
+ public Object readValues(DataRead dr) throws BasicException {
+ return new ProductsRecipeInfo(dr.getString(1), dr.getString(2), dr.getString(3), dr.getDouble(4));
+ }};
+ }
+
+}
diff --git a/src-pos/uk/chromis/pos/inventory/ProductsWarehouseEditor.java b/src-pos/uk/chromis/pos/inventory/ProductsWarehouseEditor.java
index 4f228de7..a2582297 100644
--- a/src-pos/uk/chromis/pos/inventory/ProductsWarehouseEditor.java
+++ b/src-pos/uk/chromis/pos/inventory/ProductsWarehouseEditor.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/ProductsWarehousePanel.java b/src-pos/uk/chromis/pos/inventory/ProductsWarehousePanel.java
index 4a2549b4..208dd403 100644
--- a/src-pos/uk/chromis/pos/inventory/ProductsWarehousePanel.java
+++ b/src-pos/uk/chromis/pos/inventory/ProductsWarehousePanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/RecipeEditor.form b/src-pos/uk/chromis/pos/inventory/RecipeEditor.form
new file mode 100644
index 00000000..84791b42
--- /dev/null
+++ b/src-pos/uk/chromis/pos/inventory/RecipeEditor.form
@@ -0,0 +1,180 @@
+
+
+
diff --git a/src-pos/uk/chromis/pos/inventory/RecipeEditor.java b/src-pos/uk/chromis/pos/inventory/RecipeEditor.java
new file mode 100644
index 00000000..3dfb0625
--- /dev/null
+++ b/src-pos/uk/chromis/pos/inventory/RecipeEditor.java
@@ -0,0 +1,376 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016
+// http://www.chromis.co.uk
+//
+// This file is part of Chromis POS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+package uk.chromis.pos.inventory;
+
+import uk.chromis.basic.BasicException;
+import uk.chromis.data.gui.MessageInf;
+import uk.chromis.data.user.DirtyManager;
+import uk.chromis.data.user.EditorRecord;
+import uk.chromis.format.Formats;
+import uk.chromis.pos.forms.AppLocal;
+import uk.chromis.pos.forms.AppView;
+import uk.chromis.pos.forms.DataLogicSales;
+import uk.chromis.pos.panels.JProductFinder;
+import uk.chromis.pos.ticket.ProductInfoExt;
+import java.awt.Component;
+import java.awt.Toolkit;
+import java.util.UUID;
+
+/**
+ *
+ * @author jaroslawwozniak
+ */
+public class RecipeEditor extends javax.swing.JPanel implements EditorRecord {
+
+ private DataLogicSales m_dlSales;
+
+ private Object id;
+ private Object product;
+ private Object productKit;
+ private Object name;
+ private Object quantity;
+
+ private Object insertproduct;
+
+ /** Creates new form KitEditor */
+ public RecipeEditor(AppView app, DirtyManager dirty) {
+
+ m_dlSales = (DataLogicSales) app.getBean("uk.chromis.pos.forms.DataLogicSales");
+
+ initComponents();
+
+ m_jProduct.getDocument().addDocumentListener(dirty);
+ m_jQuantity.getDocument().addDocumentListener(dirty);
+ }
+
+ public void setInsertProduct(ProductInfoExt prod) {
+
+ if (prod == null) {
+ insertproduct = null;
+ } else {
+ insertproduct = prod.getID();
+ }
+ }
+
+ @Override
+ public void refresh() {
+ }
+
+ @Override
+ public void writeValueEOF() {
+
+ id = null;
+ product = null;
+ productKit = null;
+ quantity = null;
+ name = null;
+ m_jReference.setText(null);
+ m_jBarcode.setText(null);
+ m_jProduct.setText(null);
+ m_jQuantity.setText(null);
+
+ m_jReference.setEnabled(false);
+ m_jBarcode.setEnabled(false);
+ m_jProduct.setEnabled(false);
+ m_jQuantity.setEnabled(false);
+ m_jEnter1.setEnabled(false);
+ m_jEnter2.setEnabled(false);
+ m_jSearch.setEnabled(false);
+ }
+
+ @Override
+ public void writeValueInsert() {
+
+ id = UUID.randomUUID().toString();
+ product = insertproduct;
+ productKit = null;
+ name = null;
+ quantity = null;
+ m_jReference.setText(null);
+ m_jBarcode.setText(null);
+ m_jProduct.setText(null);
+ m_jQuantity.setText(null);
+
+ m_jReference.setEnabled(true);
+ m_jBarcode.setEnabled(true);
+ m_jProduct.setEnabled(true);
+ m_jQuantity.setEnabled(true);
+ m_jEnter1.setEnabled(true);
+ m_jEnter2.setEnabled(true);
+ m_jSearch.setEnabled(true);
+ }
+
+ @Override
+ public void writeValueEdit(Object value) {
+ Object[] obj = (Object[]) value;
+
+ id = obj[0];
+ product = obj[1];
+ productKit = obj[2];
+ quantity = obj[3];
+ name = obj[6];
+ m_jReference.setText(Formats.STRING.formatValue(obj[4]));
+ m_jBarcode.setText(Formats.STRING.formatValue(obj[5]));
+ m_jProduct.setText(Formats.STRING.formatValue(obj[4]) + " - " + Formats.STRING.formatValue(obj[6]));
+ m_jQuantity.setText(Formats.DOUBLE.formatValue(obj[3]));
+
+ m_jReference.setEnabled(true);
+ m_jBarcode.setEnabled(true);
+ m_jProduct.setEnabled(true);
+ m_jQuantity.setEnabled(true);
+ m_jEnter1.setEnabled(true);
+ m_jEnter2.setEnabled(true);
+ m_jSearch.setEnabled(true);
+ }
+
+ @Override
+ public void writeValueDelete(Object value) {
+ Object[] obj = (Object[]) value;
+
+ id = obj[0];
+ product = obj[1];
+ productKit = obj[2];
+ quantity = obj[3];
+ name = obj[6];
+ m_jReference.setText(Formats.STRING.formatValue(obj[4]));
+ m_jBarcode.setText(Formats.STRING.formatValue(obj[5]));
+ m_jProduct.setText(Formats.STRING.formatValue(obj[4]) + " - " + Formats.STRING.formatValue(obj[6]));
+ m_jQuantity.setText(Formats.DOUBLE.formatValue(obj[3]));
+
+ m_jReference.setEnabled(false);
+ m_jBarcode.setEnabled(false);
+ m_jProduct.setEnabled(false);
+ m_jEnter1.setEnabled(false);
+ m_jEnter2.setEnabled(false);
+ m_jSearch.setEnabled(false);
+ }
+
+ @Override
+ public Object createValue() throws BasicException {
+ return new Object[] {
+ id,
+ product,
+ productKit,
+ Formats.DOUBLE.parseValue(m_jQuantity.getText()),
+ m_jReference.getText(),
+ m_jBarcode.getText(),
+ name,
+ };
+ }
+
+ @Override
+ public Component getComponent() {
+ return this;
+ }
+
+ private void assignProduct(ProductInfoExt prod) {
+
+ if (m_jSearch.isEnabled()) {
+ if (prod == null) {
+ productKit = null;
+ quantity = null;
+ m_jReference.setText(null);
+ m_jBarcode.setText(null);
+ m_jProduct.setText(null);
+ name = null;
+ } else {
+ productKit = prod.getID();
+ quantity = null;
+ m_jReference.setText(prod.getReference());
+ m_jBarcode.setText(prod.getCode());
+ m_jProduct.setText(prod.getReference() + " - " + prod.getName());
+ name = prod.getName();
+ }
+ }
+
+ }
+
+ private void assignProductByCode() {
+ try {
+ ProductInfoExt prod = m_dlSales.getProductInfoByCode(m_jBarcode.getText());
+ assignProduct(prod);
+ if (prod == null) {
+ Toolkit.getDefaultToolkit().beep();
+ }
+ } catch (BasicException eData) {
+ assignProduct(null);
+ MessageInf msg = new MessageInf(eData);
+ msg.show(this);
+ }
+ }
+
+
+ private void assignProductByReference() {
+ try {
+ ProductInfoExt prod = m_dlSales.getProductInfoByReference(m_jReference.getText());
+ assignProduct(prod);
+ if (prod == null) {
+ Toolkit.getDefaultToolkit().beep();
+ }
+ } catch (BasicException eData) {
+ assignProduct(null);
+ MessageInf msg = new MessageInf(eData);
+ msg.show(this);
+ }
+ }
+
+ /** This method is called from within the constructor to
+ * initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is
+ * always regenerated by the Form Editor.
+ */
+ @SuppressWarnings("unchecked")
+ // //GEN-BEGIN:initComponents
+ private void initComponents() {
+
+ jLabel3 = new javax.swing.JLabel();
+ m_jReference = new javax.swing.JTextField();
+ m_jEnter1 = new javax.swing.JButton();
+ m_jEnter2 = new javax.swing.JButton();
+ m_jSearch = new javax.swing.JButton();
+ m_jProduct = new javax.swing.JTextField();
+ m_jBarcode = new javax.swing.JTextField();
+ jLabel4 = new javax.swing.JLabel();
+ jLabel1 = new javax.swing.JLabel();
+ m_jQuantity = new javax.swing.JTextField();
+
+ setPreferredSize(new java.awt.Dimension(700, 100));
+ setLayout(null);
+
+ jLabel3.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel3.setText(AppLocal.getIntString("label.prodref")); // NOI18N
+ jLabel3.setPreferredSize(new java.awt.Dimension(70, 25));
+ add(jLabel3);
+ jLabel3.setBounds(10, 11, 70, 25);
+
+ m_jReference.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ m_jReference.setPreferredSize(new java.awt.Dimension(150, 25));
+ m_jReference.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ m_jReferenceActionPerformed(evt);
+ }
+ });
+ add(m_jReference);
+ m_jReference.setBounds(90, 11, 150, 25);
+
+ m_jEnter1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/ok.png"))); // NOI18N
+ m_jEnter1.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ m_jEnter1ActionPerformed(evt);
+ }
+ });
+ add(m_jEnter1);
+ m_jEnter1.setBounds(250, 11, 57, 33);
+
+ m_jEnter2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/barcode.png"))); // NOI18N
+ m_jEnter2.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ m_jEnter2ActionPerformed(evt);
+ }
+ });
+ add(m_jEnter2);
+ m_jEnter2.setBounds(557, 11, 55, 31);
+
+ m_jSearch.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/search24.png"))); // NOI18N
+ m_jSearch.setPreferredSize(new java.awt.Dimension(58, 34));
+ m_jSearch.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ m_jSearchActionPerformed(evt);
+ }
+ });
+ add(m_jSearch);
+ m_jSearch.setBounds(10, 50, 58, 34);
+
+ m_jProduct.setEditable(false);
+ m_jProduct.setPreferredSize(new java.awt.Dimension(200, 25));
+ m_jProduct.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ m_jProductActionPerformed(evt);
+ }
+ });
+ add(m_jProduct);
+ m_jProduct.setBounds(90, 50, 217, 25);
+
+ m_jBarcode.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ m_jBarcode.setPreferredSize(new java.awt.Dimension(150, 25));
+ m_jBarcode.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ m_jBarcodeActionPerformed(evt);
+ }
+ });
+ add(m_jBarcode);
+ m_jBarcode.setBounds(397, 11, 150, 25);
+
+ jLabel4.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel4.setText(AppLocal.getIntString("label.prodbarcode")); // NOI18N
+ jLabel4.setPreferredSize(new java.awt.Dimension(70, 25));
+ add(jLabel4);
+ jLabel4.setBounds(317, 11, 70, 25);
+
+ jLabel1.setText("Quantity");
+ add(jLabel1);
+ jLabel1.setBounds(320, 50, 60, 14);
+ add(m_jQuantity);
+ m_jQuantity.setBounds(400, 50, 150, 20);
+ }// //GEN-END:initComponents
+
+ private void m_jSearchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jSearchActionPerformed
+
+ assignProduct(JProductFinder.showMessage(this, m_dlSales, JProductFinder.PRODUCT_RECIPE));
+
+}//GEN-LAST:event_m_jSearchActionPerformed
+
+ private void m_jReferenceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jReferenceActionPerformed
+ this.assignProductByReference();
+ }//GEN-LAST:event_m_jReferenceActionPerformed
+
+ private void m_jEnter2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jEnter2ActionPerformed
+ this.assignProductByCode();
+ }//GEN-LAST:event_m_jEnter2ActionPerformed
+
+ private void m_jEnter1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jEnter1ActionPerformed
+ this.assignProductByReference();
+ }//GEN-LAST:event_m_jEnter1ActionPerformed
+
+ private void m_jBarcodeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jBarcodeActionPerformed
+ this.assignProductByCode();
+ }//GEN-LAST:event_m_jBarcodeActionPerformed
+
+ private void m_jProductActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jProductActionPerformed
+
+ }//GEN-LAST:event_m_jProductActionPerformed
+
+
+
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private javax.swing.JLabel jLabel1;
+ private javax.swing.JLabel jLabel3;
+ private javax.swing.JLabel jLabel4;
+ private javax.swing.JTextField m_jBarcode;
+ private javax.swing.JButton m_jEnter1;
+ private javax.swing.JButton m_jEnter2;
+ private javax.swing.JTextField m_jProduct;
+ private javax.swing.JTextField m_jQuantity;
+ private javax.swing.JTextField m_jReference;
+ private javax.swing.JButton m_jSearch;
+ // End of variables declaration//GEN-END:variables
+
+}
diff --git a/src-pos/uk/chromis/pos/inventory/RecipeKitInfo.java b/src-pos/uk/chromis/pos/inventory/RecipeKitInfo.java
new file mode 100644
index 00000000..9e1b4cd8
--- /dev/null
+++ b/src-pos/uk/chromis/pos/inventory/RecipeKitInfo.java
@@ -0,0 +1,96 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016
+// http://www.chromis.co.uk
+//
+// This file is part of Chromis POS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+//
+package uk.chromis.pos.inventory;
+
+import uk.chromis.basic.BasicException;
+import uk.chromis.data.loader.DataRead;
+import uk.chromis.data.loader.SerializerRead;
+
+
+/**
+ *
+ * @author John
+ */
+public class RecipeKitInfo {
+ private static final long serialVersionUID = 7587646873036L;
+
+ protected String id;
+ protected String productId;
+ protected String productKitId;
+ protected Double quantity;
+
+ /**
+ *
+ * @param id
+ * @param product
+ * @param productKit
+ * @param quantity
+ */
+ public RecipeKitInfo(String id, String productId, String productKitId, Double quantity) {
+ this.id = id;
+ this.productId = productId;
+ this.productKitId = productKitId;
+ this.quantity = quantity;
+ }
+
+
+ public void setM_ID(String id) {
+ this.id = id;
+ }
+
+ public void setM_sProduct(String productId) {
+ this.productId = productId;
+ }
+
+ public void setM_sProductKit(String productKitId) {
+ this.productKitId = productKitId;
+ }
+
+ public void setM_dQuantity(Double m_dQuantity) {
+ this.quantity = quantity;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public String getProductId() {
+ return productId;
+ }
+
+ public String getProductKitId() {
+ return productKitId;
+ }
+
+ public Double getQuantity() {
+ return quantity;
+ }
+
+
+ public static SerializerRead getSerializerRead() {
+ return new SerializerRead() {
+ @Override
+ public Object readValues(DataRead dr) throws BasicException {
+ return new RecipeKitInfo(dr.getString(1), dr.getString(2), dr.getString(3), dr.getDouble(4));
+ }};
+ }
+
+}
+
diff --git a/src-pos/uk/chromis/pos/inventory/RecipePanel.java b/src-pos/uk/chromis/pos/inventory/RecipePanel.java
new file mode 100644
index 00000000..442ebf7f
--- /dev/null
+++ b/src-pos/uk/chromis/pos/inventory/RecipePanel.java
@@ -0,0 +1,113 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016
+// http://www.chromis.co.uk
+//
+// This file is part of Chromis POS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+
+package uk.chromis.pos.inventory;
+
+import uk.chromis.basic.BasicException;
+import uk.chromis.data.loader.Datas;
+import uk.chromis.data.model.*;
+import uk.chromis.data.user.EditorRecord;
+import uk.chromis.format.Formats;
+import uk.chromis.pos.forms.AppLocal;
+import uk.chromis.pos.panels.RecipeFilter;
+import uk.chromis.pos.panels.JPanelTable2;
+import uk.chromis.pos.ticket.ProductInfoExt;
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+
+
+public class RecipePanel extends JPanelTable2 {
+
+ private RecipeEditor editor;
+ private RecipeFilter filter;
+
+ @Override
+ protected void init() {
+
+ filter = new RecipeFilter();
+ filter.init(app);
+ filter.addActionListener(new ReloadActionListener());
+
+ row = new Row(
+ new Field("ID", Datas.STRING, Formats.STRING),
+ new Field("PRODUCT", Datas.STRING, Formats.STRING),
+ new Field("PRODUCT_KIT", Datas.STRING, Formats.STRING),
+ new Field("QUANTITY", Datas.DOUBLE, Formats.DOUBLE),
+ new Field(AppLocal.getIntString("label.prodref"), Datas.STRING, Formats.STRING, true, true, true),
+ new Field(AppLocal.getIntString("label.prodbarcode"), Datas.STRING, Formats.STRING, false, true, true),
+ new Field(AppLocal.getIntString("label.prodname"), Datas.STRING, Formats.STRING, true, true, true)
+ );
+ Table table = new Table(
+ "PRODUCTS_KIT",
+ new PrimaryKey("ID"),
+ new Column("PRODUCT"),
+ new Column("PRODUCT_KIT"),
+ new Column("QUANTITY"));
+
+ lpr = row.getListProvider(app.getSession(),
+ "SELECT KIT.ID, KIT.PRODUCT, KIT.PRODUCT_KIT, KIT.QUANTITY, P.REFERENCE, P.CODE, P.NAME " +
+ "FROM PRODUCTS_KIT KIT, PRODUCTS P " +
+ "WHERE KIT.PRODUCT_KIT = P.ID AND KIT.PRODUCT = ?", filter);
+ spr = row.getSaveProvider(app.getSession(), table);
+
+ editor = new RecipeEditor(app, dirty);
+ }
+
+ @Override
+ public void activate() throws BasicException {
+ filter.activate();
+
+ //super.activate();
+ startNavigation();
+ reload(filter);
+ }
+
+ @Override
+ public Component getFilter(){
+ return filter.getComponent();
+ }
+
+ @Override
+ public EditorRecord getEditor() {
+ return editor;
+ }
+
+ @Override
+ public String getTitle() {
+ return AppLocal.getIntString("Menu.Recipe");
+ }
+
+ private void reload(RecipeFilter filter) throws BasicException {
+ ProductInfoExt prod = filter.getProductInfoExt();
+ editor.setInsertProduct(prod); // must be set before load
+ bd.setEditable(prod != null);
+ bd.actionLoad();
+ }
+
+ private class ReloadActionListener implements ActionListener {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ try {
+ reload((RecipeFilter) e.getSource());
+ } catch (BasicException w) {
+ }
+ }
+ }
+}
diff --git a/src-pos/uk/chromis/pos/inventory/StockDiaryEditor.form b/src-pos/uk/chromis/pos/inventory/StockDiaryEditor.form
index 4d8a08f9..96236e8b 100644
--- a/src-pos/uk/chromis/pos/inventory/StockDiaryEditor.form
+++ b/src-pos/uk/chromis/pos/inventory/StockDiaryEditor.form
@@ -99,7 +99,9 @@
-
+
+
+
@@ -183,15 +185,17 @@
-
+
-
+
+
+
-
+
@@ -268,7 +272,9 @@
-
+
+
+
@@ -297,7 +303,7 @@
-
+
@@ -311,7 +317,7 @@
-
+
@@ -330,12 +336,14 @@
-
+
-
+
+
+
+
-
@@ -350,11 +358,11 @@
-
+
-
+
@@ -378,7 +386,7 @@
-
+
@@ -391,7 +399,7 @@
-
+
@@ -400,7 +408,9 @@
-
+
+
+
@@ -416,7 +426,7 @@
-
+
@@ -440,11 +450,11 @@
-
+
-
+
@@ -453,7 +463,7 @@
-
+
@@ -468,7 +478,7 @@
-
+
@@ -481,7 +491,195 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/inventory/StockDiaryEditor.java b/src-pos/uk/chromis/pos/inventory/StockDiaryEditor.java
index d26f5da9..4528f964 100644
--- a/src-pos/uk/chromis/pos/inventory/StockDiaryEditor.java
+++ b/src-pos/uk/chromis/pos/inventory/StockDiaryEditor.java
@@ -16,7 +16,6 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.pos.inventory;
import uk.chromis.basic.BasicException;
@@ -43,12 +42,20 @@
import java.awt.event.ActionListener;
import java.util.Date;
import java.util.UUID;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.JFrame;
+import javax.swing.JOptionPane;
+import javax.swing.SwingUtilities;
+import uk.chromis.pos.forms.AppConfig;
+import uk.chromis.pos.ticket.PlayWave;
/**
*
* @author adrianromero
*/
-public final class StockDiaryEditor extends javax.swing.JPanel implements EditorRecord {
+public final class StockDiaryEditor extends javax.swing.JPanel
+ implements EditorRecord, JDlgEditProduct.CompletionCallback {
private final CatalogSelector m_cat;
@@ -58,53 +65,62 @@ public final class StockDiaryEditor extends javax.swing.JPanel implements Editor
private String productref;
private String productcode;
private String productname;
+ private String unitsinstock;
+ private Double buyprice;
+ private Double sellprice;
+ private Double stocksecurity;
+ private Double stockmaximum;
private String attsetid;
private String attsetinstid;
private String attsetinstdesc;
private String sAppUser;
-
+
private final ComboBoxValModel m_ReasonModel;
-
+
private final SentenceList m_sentlocations;
- private ComboBoxValModel m_LocationsModel;
+ private ComboBoxValModel m_LocationsModel;
private final AppView m_App;
private final DataLogicSales m_dlSales;
+ private DirtyManager m_Dirty;
+
/** Creates new form StockDiaryEditor
* @param app
- * @param dirty */
+ * @param dirty
+ */
public StockDiaryEditor(AppView app, DirtyManager dirty) {
-
+
m_App = app;
m_dlSales = (DataLogicSales) m_App.getBean("uk.chromis.pos.forms.DataLogicSales");
+ m_Dirty = dirty;
initComponents();
-
+
// El modelo de locales
m_sentlocations = m_dlSales.getLocationsList();
m_LocationsModel = new ComboBoxValModel();
-
+
m_ReasonModel = new ComboBoxValModel();
m_ReasonModel.add(MovementReason.IN_PURCHASE);
- m_ReasonModel.add(MovementReason.IN_REFUND);
- m_ReasonModel.add(MovementReason.IN_MOVEMENT);
m_ReasonModel.add(MovementReason.OUT_SALE);
- m_ReasonModel.add(MovementReason.OUT_REFUND);
+ m_ReasonModel.add(MovementReason.IN_STOCKCHANGE);
+ m_ReasonModel.add(MovementReason.OUT_STOCKCHANGE);
m_ReasonModel.add(MovementReason.OUT_BREAK);
+ m_ReasonModel.add(MovementReason.IN_REFUND);
+ m_ReasonModel.add(MovementReason.OUT_REFUND);
+ m_ReasonModel.add(MovementReason.IN_MOVEMENT);
m_ReasonModel.add(MovementReason.OUT_MOVEMENT);
m_ReasonModel.add(MovementReason.IN_OPEN_PACK);
m_ReasonModel.add(MovementReason.OUT_OPEN_PACK);
- m_ReasonModel.add(MovementReason.IN_STOCKCHANGE);
- m_ReasonModel.add(MovementReason.OUT_STOCKCHANGE);
m_jreason.setModel(m_ReasonModel);
m_cat = new JCatalog(m_dlSales);
m_cat.addActionListener(new CatalogListener());
- catcontainer.add(m_cat.getComponent(), BorderLayout.CENTER);
-
+ catcontainer.add(m_cat.getComponent(), BorderLayout.CENTER);
+
m_jdate.getDocument().addDocumentListener(dirty);
m_jreason.addActionListener(dirty);
m_jLocation.addActionListener(dirty);
@@ -112,28 +128,30 @@ public StockDiaryEditor(AppView app, DirtyManager dirty) {
jattributes.getDocument().addDocumentListener(dirty);
m_junits.getDocument().addDocumentListener(dirty);
m_jprice.getDocument().addDocumentListener(dirty);
-
+ m_jminimum.getDocument().addDocumentListener(dirty);
+ m_jmaximum.getDocument().addDocumentListener(dirty);
+
writeValueEOF();
}
-
+
/**
*
* @throws BasicException
*/
public void activate() throws BasicException {
m_cat.loadCatalog();
-
+
m_LocationsModel = new ComboBoxValModel(m_sentlocations.list());
m_jLocation.setModel(m_LocationsModel); // para que lo refresque
}
-
+
/**
*
*/
@Override
public void refresh() {
}
-
+
/**
*
*/
@@ -147,9 +165,19 @@ public void writeValueEOF() {
productref = null;
productcode = null;
productname = null;
+ unitsinstock = null;
+ buyprice = null;
+ sellprice = null;
+ stocksecurity = null;
+ stockmaximum = null;
m_jreference.setText(null);
m_jcodebar.setText(null);
jproduct.setText(null);
+ m_junitsinstock.setText(null);
+ m_jbuyprice.setText(null);
+ m_jsellprice.setText(null);
+ m_jminimum.setText(null);
+ m_jmaximum.setText(null);
attsetid = null;
attsetinstid = null;
attsetinstdesc = null;
@@ -160,19 +188,25 @@ public void writeValueEOF() {
m_jbtndate.setEnabled(false);
m_jreason.setEnabled(false);
m_jreference.setEnabled(false);
- m_jEnter1.setEnabled(false);
+ m_EditProduct.setEnabled(false);
m_jcodebar.setEnabled(false);
m_jEnter.setEnabled(false);
m_jLocation.setEnabled(false);
jproduct.setEnabled(false);
- jEditProduct.setEnabled(false);
+ m_junitsinstock.setEnabled(false);
+ m_jbuyprice.setEnabled(false);
+ m_jsellprice.setEnabled(false);
+ m_jminimum.setEnabled(false);
+ m_jmaximum.setEnabled(false);
+ m_FindProduct.setEnabled(false);
jattributes.setEnabled(false);
jEditAttributes.setEnabled(false);
m_junits.setEnabled(false);
m_jprice.setEnabled(false);
m_cat.setComponentEnabled(false);
+ m_EditProduct.setEnabled(false);
}
-
+
/**
*
*/
@@ -186,9 +220,20 @@ public void writeValueInsert() {
productref = null;
productcode = null;
productname = null;
+ unitsinstock = null;
+ buyprice = null;
+ sellprice = null;
+ stocksecurity = null;
+ stockmaximum = null;
+
m_jreference.setText(null);
m_jcodebar.setText(null);
jproduct.setText(null);
+ m_junitsinstock.setText(null);
+ m_jbuyprice.setText(null);
+ m_jsellprice.setText(null);
+ m_jminimum.setText(null);
+ m_jmaximum.setText(null);
attsetid = null;
attsetinstid = null;
attsetinstdesc = null;
@@ -200,17 +245,20 @@ public void writeValueInsert() {
m_jbtndate.setEnabled(true);
m_jreason.setEnabled(true);
m_jreference.setEnabled(true);
- m_jEnter1.setEnabled(true);
m_jcodebar.setEnabled(true);
m_jEnter.setEnabled(true);
m_jLocation.setEnabled(true);
jproduct.setEnabled(true);
- jEditProduct.setEnabled(true);
+ m_jminimum.setEnabled(true);
+ m_jmaximum.setEnabled(true);
+ m_FindProduct.setEnabled(true);
jattributes.setEnabled(true);
jEditAttributes.setEnabled(true);
m_junits.setEnabled(true);
- m_jprice.setEnabled(true);
+ m_jprice.setEnabled(true);
m_cat.setComponentEnabled(true);
+ getRootPane().setDefaultButton(m_jEnter);
+ m_jcodebar.requestFocusInWindow();
}
/**
@@ -228,9 +276,20 @@ public void writeValueDelete(Object value) {
productref = (String) diary[8];
productcode = (String) diary[9];
productname =(String) diary[10];
+ unitsinstock = (String) diary[14];
+ stocksecurity = (Double) diary[15];
+ stockmaximum = (Double) diary[16];
+ buyprice = (Double) diary[17];
+ sellprice = (Double) diary[18];
m_jreference.setText(productref);
m_jcodebar.setText(productcode);
jproduct.setText(productname);
+ m_junitsinstock.setText(unitsinstock);
+ m_jbuyprice.setText(Formats.CURRENCY.formatValue(buyprice ) );
+ m_jsellprice.setText(Formats.CURRENCY.formatValue(sellprice) );
+
+ m_jminimum.setText(Formats.DOUBLE.formatValue(stocksecurity));
+ m_jmaximum.setText(Formats.DOUBLE.formatValue(stockmaximum));
attsetid = (String) diary[11];
attsetinstid = (String) diary[5];
attsetinstdesc = (String) diary[12];
@@ -241,19 +300,25 @@ public void writeValueDelete(Object value) {
m_jbtndate.setEnabled(false);
m_jreason.setEnabled(false);
m_jreference.setEnabled(false);
- m_jEnter1.setEnabled(false);
+ m_EditProduct.setEnabled(false);
m_jcodebar.setEnabled(false);
m_jEnter.setEnabled(false);
m_jLocation.setEnabled(false);
jproduct.setEnabled(false);
- jEditProduct.setEnabled(false);
+ m_junitsinstock.setEnabled(false);
+ m_jbuyprice.setEnabled(false);
+ m_jsellprice.setEnabled(false);
+
+ m_jminimum.setEnabled(false);
+ m_jmaximum.setEnabled(false);
+ m_FindProduct.setEnabled(false);
jattributes.setEnabled(false);
jEditAttributes.setEnabled(false);
m_junits.setEnabled(false);
- m_jprice.setEnabled(false);
+ m_jprice.setEnabled(false);
m_cat.setComponentEnabled(false);
}
-
+
/**
*
* @param value
@@ -270,9 +335,21 @@ public void writeValueEdit(Object value) {
productref = (String) diary[9];
productcode = (String) diary[10];
productname =(String) diary[11];
+ unitsinstock = (String) diary[14];
+ stocksecurity = (Double) diary[15];
+ stockmaximum = (Double) diary[16];
+ buyprice = (Double) diary[17];
+ sellprice = (Double) diary[18];
+
m_jreference.setText(productref);
m_jcodebar.setText(productcode);
jproduct.setText(productname);
+ m_junitsinstock.setText(unitsinstock);
+ m_jbuyprice.setText(Formats.CURRENCY.formatValue(buyprice ) );
+ m_jsellprice.setText(Formats.CURRENCY.formatValue(sellprice) );
+
+ m_jminimum.setText(Formats.DOUBLE.formatValue(stocksecurity));
+ m_jmaximum.setText(Formats.DOUBLE.formatValue(stockmaximum));
attsetid = (String) diary[12];
attsetinstid = (String) diary[5];
attsetinstdesc = (String) diary[13];
@@ -283,26 +360,31 @@ public void writeValueEdit(Object value) {
m_jbtndate.setEnabled(false);
m_jreason.setEnabled(false);
m_jreference.setEnabled(false);
- m_jEnter1.setEnabled(false);
+ m_EditProduct.setEnabled(false);
m_jcodebar.setEnabled(false);
m_jEnter.setEnabled(false);
m_jLocation.setEnabled(false);
jproduct.setEnabled(true);
- jEditProduct.setEnabled(true);
+ m_jminimum.setEnabled(true);
+ m_jmaximum.setEnabled(true);
+ m_FindProduct.setEnabled(true);
jattributes.setEnabled(false);
jEditAttributes.setEnabled(false);
m_junits.setEnabled(false);
- m_jprice.setEnabled(false);
+ m_jprice.setEnabled(false);
m_cat.setComponentEnabled(false);
+ m_EditProduct.setEnabled(true);
}
-
+
/**
*
- * @return
- * @throws BasicException
+ * @return @throws BasicException
*/
@Override
public Object createValue() throws BasicException {
+ stocksecurity = (Double) Formats.DOUBLE.parseValue(m_jminimum.getText());
+ stockmaximum = (Double) Formats.DOUBLE.parseValue(m_jmaximum.getText());
+
return new Object[] {
m_sID,
Formats.TIMESTAMP.parseValue(m_jdate.getText()),
@@ -317,11 +399,15 @@ public Object createValue() throws BasicException {
productcode,
productname,
attsetid,
- attsetinstdesc
-
+ attsetinstdesc,
+ unitsinstock,
+ stocksecurity,
+ stockmaximum,
+ buyprice,
+ sellprice
};
}
-
+
/**
*
* @return
@@ -330,14 +416,6 @@ public Object createValue() throws BasicException {
public Component getComponent() {
return this;
}
-// private ProductInfoExt getProduct(String id) {
-// try {
-// return m_dlSales.getProductInfo(id);
-// } catch (BasicException e) {
-// return null;
-// }
-// }
-
private Double signum(Double d, Integer i) {
if (d == null || i == null) {
return d;
@@ -345,29 +423,34 @@ private Double signum(Double d, Integer i) {
return -d;
} else {
return d;
- }
+ }
}
-
+
private Double samesignum(Double d, Integer i) {
-
+
if (d == null || i == null) {
return d;
- } else if ((i > 0 && d < 0.0) ||
- (i < 0 && d > 0.0)) {
+ } else if ((i > 0 && d < 0.0)
+ || (i < 0 && d > 0.0)) {
return -d;
} else {
return d;
- }
+ }
}
-
+
private void assignProduct(ProductInfoExt prod) {
-
+
if (jproduct.isEnabled()) {
if (prod == null) {
productid = null;
productref = null;
productcode = null;
productname = null;
+ unitsinstock = null;
+ buyprice = null;
+ sellprice = null;
+ stocksecurity = null;
+ stockmaximum = null;
attsetid = null;
attsetinstid = null;
attsetinstdesc = null;
@@ -375,35 +458,72 @@ private void assignProduct(ProductInfoExt prod) {
m_jcodebar.setText(null);
m_jreference.setText(null);
jattributes.setText(null);
+ m_EditProduct.setEnabled(false);
+ m_junitsinstock.setText(null);
+ m_jbuyprice.setText(null);
+ m_jsellprice.setText(null);
+ m_jminimum.setText(null);
+ m_jmaximum.setText(null);
} else {
productid = prod.getID();
productref = prod.getReference();
productcode = prod.getCode();
- productname = prod.toString();
+ productname = prod.getName();
attsetid = prod.getAttributeSetID();
+ try {
+ Double dStock = m_dlSales.findProductStock(
+ (String) m_LocationsModel.getSelectedKey(),
+ productid, attsetid);
+ unitsinstock = Formats.DOUBLE.formatValue(dStock);
+
+ buyprice = prod.getPriceBuy();
+ sellprice = prod.getPriceSell();
+
+ stocksecurity = m_dlSales.findProductStockSecurity(
+ (String) m_LocationsModel.getSelectedKey(),
+ productid );
+
+ stockmaximum = m_dlSales.findProductStockMaximum(
+ (String) m_LocationsModel.getSelectedKey(),
+ productid );
+
+ } catch (BasicException ex) {
+ unitsinstock = null;
+ stockmaximum = null;
+ stocksecurity = null;
+ buyprice = null;
+ sellprice = null;
+ }
+
attsetinstid = null;
attsetinstdesc = null;
jproduct.setText(productname);
m_jcodebar.setText(productcode);
m_jreference.setText(productref);
+ m_junitsinstock.setText(unitsinstock);
+ m_jbuyprice.setText(Formats.CURRENCY.formatValue(buyprice ) );
+ m_jsellprice.setText(Formats.CURRENCY.formatValue(sellprice) );
+
+ m_jminimum.setText(Formats.DOUBLE.formatValue(stocksecurity));
+ m_jmaximum.setText(Formats.DOUBLE.formatValue(stockmaximum));
jattributes.setText(null);
+ m_EditProduct.setEnabled(true);
// calculo el precio sugerido para la entrada.
- MovementReason reason = (MovementReason) m_ReasonModel.getSelectedItem();
+ MovementReason reason = (MovementReason) m_ReasonModel.getSelectedItem();
Double dPrice = reason.getPrice(prod.getPriceBuy(), prod.getPriceSell());
m_jprice.setText(Formats.CURRENCY.formatValue(dPrice));
}
}
}
- private void assignProductByCode() {
+ private void assignProductById( String Id ) {
try {
- ProductInfoExt oProduct = m_dlSales.getProductInfoByCode(m_jcodebar.getText());
+ ProductInfoExt oProduct = m_dlSales.getProductInfo(Id);
if (oProduct == null) {
assignProduct(null);
- Toolkit.getDefaultToolkit().beep();
+ new PlayWave("error.wav").start(); // playing WAVE file
} else {
- // Se anade directamente una unidad con el precio y todo
assignProduct(oProduct);
}
} catch (BasicException eData) {
@@ -413,14 +533,30 @@ private void assignProductByCode() {
}
}
- private void assignProductByReference() {
+ private void assignProductByCode() {
try {
- ProductInfoExt oProduct = m_dlSales.getProductInfoByReference(m_jreference.getText());
+ String code = m_jcodebar.getText();
+ ProductInfoExt oProduct = m_dlSales.getProductInfoByCode( code );
+ if (oProduct == null && code.startsWith("977")) {
+ // This is an ISSN barcode (news and magazines)
+ // the first 3 digits correspond to the 977 prefix assigned to serial publications,
+ // the next 7 digits correspond to the ISSN of the publication
+ // Anything after that is publisher dependant - we strip everything after
+ // the 10th character
+ code = code.substring(0, 10);
+ oProduct = m_dlSales.getProductInfoByCode( code );
+ }
+
if (oProduct == null) {
- assignProduct(null);
- Toolkit.getDefaultToolkit().beep();
+ new PlayWave("error.wav").start(); // playing WAVE file
+
+ if (JOptionPane.showConfirmDialog(this, AppLocal.getIntString( "message.createproduct"),
+ AppLocal.getIntString("message.title"),
+ JOptionPane.YES_NO_OPTION,
+ JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION) {
+ newProduct();
+ }
} else {
- // Se anade directamente una unidad con el precio y todo
assignProduct(oProduct);
}
} catch (BasicException eData) {
@@ -429,17 +565,74 @@ private void assignProductByReference() {
msg.show(this);
}
}
+
+ private void assignProductByReference() {
+ try {
+ ProductInfoExt oProduct = m_dlSales.getProductInfoByReference(m_jreference.getText());
+ if (oProduct == null) {
+ assignProduct(null);
+ new PlayWave("error.wav").start(); // playing WAVE file
+ } else {
+ assignProduct(oProduct);
+ }
+ } catch (BasicException eData) {
+ assignProduct(null);
+ MessageInf msg = new MessageInf(eData);
+ msg.show(this);
+ }
+ }
+
+
+ private void editProduct() {
+ JFrame topFrame = (JFrame) SwingUtilities.getWindowAncestor(this);
+ JDlgEditProduct dlg = new JDlgEditProduct( topFrame, true );
+ dlg.init( m_dlSales, m_Dirty, productid, null );
+ dlg.setCallbacks(this);
+ dlg.setVisible( true );
+ }
+
+ private void newProduct() {
+ JFrame topFrame = (JFrame) SwingUtilities.getWindowAncestor(this);
+ JDlgEditProduct dlg = new JDlgEditProduct( topFrame, true );
+
+ String code = m_jcodebar.getText();
+
+ dlg.init( m_dlSales, m_Dirty, null, code );
+ dlg.setCallbacks(this);
+ dlg.setVisible( true );
+ }
+ @Override
+ public void notifyCompletionOk( String reference ) {
+ // Try to assign product again
+ if( reference != null ) {
+ writeValueInsert();
+ m_jreference.setText( reference );
+
+ jproduct.setEnabled(true);
+ m_jminimum.setEnabled(true);
+ m_jmaximum.setEnabled(true);
+
+ assignProductByReference();
+ }
+ }
+
+ @Override
+ public void notifyCompletionCancel() {
+ }
+
private class CatalogListener implements ActionListener {
+
@Override
public void actionPerformed(ActionEvent e) {
assignProduct((ProductInfoExt) e.getSource());
- }
- }
- /** This method is called from within the constructor to
- * initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is
- * always regenerated by the Form Editor.
+ }
+ }
+
+ /**
+ * This method is called from within the constructor to initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is always
+ * regenerated by the Form Editor.
*/
// //GEN-BEGIN:initComponents
private void initComponents() {
@@ -452,7 +645,7 @@ private void initComponents() {
m_jreason = new javax.swing.JComboBox();
jLabel8 = new javax.swing.JLabel();
jproduct = new javax.swing.JTextField();
- jEditProduct = new javax.swing.JButton();
+ m_FindProduct = new javax.swing.JButton();
jLabel6 = new javax.swing.JLabel();
m_jLocation = new javax.swing.JComboBox();
jLabel7 = new javax.swing.JLabel();
@@ -460,14 +653,24 @@ private void initComponents() {
m_jEnter = new javax.swing.JButton();
jLabel3 = new javax.swing.JLabel();
m_jreference = new javax.swing.JTextField();
- m_jEnter1 = new javax.swing.JButton();
+ m_EditProduct = new javax.swing.JButton();
jLabel9 = new javax.swing.JLabel();
jattributes = new javax.swing.JTextField();
jEditAttributes = new javax.swing.JButton();
jLabel4 = new javax.swing.JLabel();
- m_junits = new javax.swing.JTextField();
+ m_jmaximum = new javax.swing.JTextField();
jLabel5 = new javax.swing.JLabel();
m_jprice = new javax.swing.JTextField();
+ jLabel10 = new javax.swing.JLabel();
+ m_junitsinstock = new javax.swing.JTextField();
+ jLabel11 = new javax.swing.JLabel();
+ m_junits = new javax.swing.JTextField();
+ m_jminimum = new javax.swing.JTextField();
+ jLabel12 = new javax.swing.JLabel();
+ m_jbuyprice = new javax.swing.JTextField();
+ jLabel13 = new javax.swing.JLabel();
+ jLabel14 = new javax.swing.JLabel();
+ m_jsellprice = new javax.swing.JTextField();
catcontainer = new javax.swing.JPanel();
setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
@@ -494,7 +697,8 @@ private void initComponents() {
jPanel1.add(m_jdate, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 10, 200, 25));
m_jbtndate.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/date.png"))); // NOI18N
- m_jbtndate.setToolTipText("Open Calendar");
+ java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N
+ m_jbtndate.setToolTipText(bundle.getString("tiptext.opencalendar")); // NOI18N
m_jbtndate.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_jbtndateActionPerformed(evt);
@@ -523,14 +727,14 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jproduct.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jPanel1.add(jproduct, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 45, 200, 25));
- jEditProduct.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/search24.png"))); // NOI18N
- jEditProduct.setToolTipText("Search Product List");
- jEditProduct.addActionListener(new java.awt.event.ActionListener() {
+ m_FindProduct.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/search24.png"))); // NOI18N
+ m_FindProduct.setToolTipText(bundle.getString("tiptext.searchproductlist")); // NOI18N
+ m_FindProduct.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
- jEditProductActionPerformed(evt);
+ m_FindProductActionPerformed(evt);
}
});
- jPanel1.add(jEditProduct, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 38, 40, -1));
+ jPanel1.add(m_FindProduct, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 38, 40, -1));
jLabel6.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel6.setText("Location");
@@ -555,7 +759,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel1.add(m_jcodebar, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 80, 200, 25));
m_jEnter.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/barcode.png"))); // NOI18N
- m_jEnter.setToolTipText("Get Barcode");
+ m_jEnter.setToolTipText(bundle.getString("tiptext.getbarcode")); // NOI18N
m_jEnter.setFocusPainted(false);
m_jEnter.setFocusable(false);
m_jEnter.setMaximumSize(new java.awt.Dimension(54, 33));
@@ -570,11 +774,11 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel1.add(m_jEnter, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 73, 40, -1));
jLabel3.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
- jLabel3.setText(AppLocal.getIntString("label.stockproduct")); // NOI18N
+ jLabel3.setText(AppLocal.getIntString("label.maximum")); // NOI18N
jLabel3.setMaximumSize(new java.awt.Dimension(40, 20));
jLabel3.setMinimumSize(new java.awt.Dimension(40, 20));
jLabel3.setPreferredSize(new java.awt.Dimension(40, 20));
- jPanel1.add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 120, 80, 25));
+ jPanel1.add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(510, 140, 60, 20));
m_jreference.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
m_jreference.addActionListener(new java.awt.event.ActionListener() {
@@ -584,34 +788,34 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
});
jPanel1.add(m_jreference, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 115, 200, 25));
- m_jEnter1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/products.png"))); // NOI18N
- m_jEnter1.setToolTipText("Enter Product ID");
- m_jEnter1.setFocusPainted(false);
- m_jEnter1.setFocusable(false);
- m_jEnter1.setMaximumSize(new java.awt.Dimension(64, 33));
- m_jEnter1.setMinimumSize(new java.awt.Dimension(64, 33));
- m_jEnter1.setPreferredSize(new java.awt.Dimension(64, 33));
- m_jEnter1.setRequestFocusEnabled(false);
- m_jEnter1.addActionListener(new java.awt.event.ActionListener() {
+ m_EditProduct.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/sale_editline.png"))); // NOI18N
+ m_EditProduct.setToolTipText(bundle.getString("tiptext.enterproductid")); // NOI18N
+ m_EditProduct.setFocusPainted(false);
+ m_EditProduct.setFocusable(false);
+ m_EditProduct.setMaximumSize(new java.awt.Dimension(64, 33));
+ m_EditProduct.setMinimumSize(new java.awt.Dimension(64, 33));
+ m_EditProduct.setPreferredSize(new java.awt.Dimension(64, 33));
+ m_EditProduct.setRequestFocusEnabled(false);
+ m_EditProduct.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
- m_jEnter1ActionPerformed(evt);
+ m_EditProductActionPerformed(evt);
}
});
- jPanel1.add(m_jEnter1, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 109, 40, -1));
+ jPanel1.add(m_EditProduct, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 110, 40, -1));
jLabel9.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel9.setText(AppLocal.getIntString("label.attributes")); // NOI18N
jLabel9.setMaximumSize(new java.awt.Dimension(48, 20));
jLabel9.setMinimumSize(new java.awt.Dimension(48, 20));
jLabel9.setPreferredSize(new java.awt.Dimension(48, 20));
- jPanel1.add(jLabel9, new org.netbeans.lib.awtextra.AbsoluteConstraints(370, 115, 70, 25));
+ jPanel1.add(jLabel9, new org.netbeans.lib.awtextra.AbsoluteConstraints(370, 170, 70, 25));
jattributes.setEditable(false);
jattributes.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
- jPanel1.add(jattributes, new org.netbeans.lib.awtextra.AbsoluteConstraints(440, 115, 200, 25));
+ jPanel1.add(jattributes, new org.netbeans.lib.awtextra.AbsoluteConstraints(440, 170, 210, 25));
jEditAttributes.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/attributes.png"))); // NOI18N
- jEditAttributes.setToolTipText("Product Attributes");
+ jEditAttributes.setToolTipText(bundle.getString("tiptext.productattributes")); // NOI18N
jEditAttributes.setMaximumSize(new java.awt.Dimension(65, 33));
jEditAttributes.setMinimumSize(new java.awt.Dimension(65, 33));
jEditAttributes.setPreferredSize(new java.awt.Dimension(65, 33));
@@ -620,26 +824,84 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jEditAttributesActionPerformed(evt);
}
});
- jPanel1.add(jEditAttributes, new org.netbeans.lib.awtextra.AbsoluteConstraints(650, 109, 40, -1));
+ jPanel1.add(jEditAttributes, new org.netbeans.lib.awtextra.AbsoluteConstraints(660, 160, 40, -1));
jLabel4.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel4.setText(AppLocal.getIntString("label.units")); // NOI18N
jLabel4.setMaximumSize(new java.awt.Dimension(40, 20));
jLabel4.setMinimumSize(new java.awt.Dimension(40, 20));
jLabel4.setPreferredSize(new java.awt.Dimension(40, 20));
- jPanel1.add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 145, 80, 25));
+ jPanel1.add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 150, 80, 25));
- m_junits.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
- m_junits.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
- jPanel1.add(m_junits, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 145, 70, 25));
+ m_jmaximum.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ m_jmaximum.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
+ jPanel1.add(m_jmaximum, new org.netbeans.lib.awtextra.AbsoluteConstraints(580, 140, 70, 25));
jLabel5.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel5.setText(AppLocal.getIntString("label.price")); // NOI18N
- jPanel1.add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(190, 145, 40, 25));
+ jPanel1.add(jLabel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(190, 150, 40, 25));
m_jprice.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
m_jprice.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
- jPanel1.add(m_jprice, new org.netbeans.lib.awtextra.AbsoluteConstraints(230, 145, 70, 25));
+ jPanel1.add(m_jprice, new org.netbeans.lib.awtextra.AbsoluteConstraints(230, 150, 70, 25));
+
+ jLabel10.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel10.setText(AppLocal.getIntString("label.stockproduct")); // NOI18N
+ jLabel10.setMaximumSize(new java.awt.Dimension(40, 20));
+ jLabel10.setMinimumSize(new java.awt.Dimension(40, 20));
+ jLabel10.setPreferredSize(new java.awt.Dimension(40, 20));
+ jPanel1.add(jLabel10, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 110, 80, 30));
+
+ m_junitsinstock.setEditable(false);
+ m_junitsinstock.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ m_junitsinstock.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
+ jPanel1.add(m_junitsinstock, new org.netbeans.lib.awtextra.AbsoluteConstraints(440, 80, 60, 20));
+
+ jLabel11.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel11.setText(AppLocal.getIntString("label.stockunits")); // NOI18N
+ jLabel11.setMaximumSize(new java.awt.Dimension(40, 20));
+ jLabel11.setMinimumSize(new java.awt.Dimension(40, 20));
+ jLabel11.setPreferredSize(new java.awt.Dimension(40, 20));
+ jPanel1.add(jLabel11, new org.netbeans.lib.awtextra.AbsoluteConstraints(370, 80, 60, 20));
+
+ m_junits.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ m_junits.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
+ jPanel1.add(m_junits, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 150, 70, 25));
+
+ m_jminimum.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ m_jminimum.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
+ jPanel1.add(m_jminimum, new org.netbeans.lib.awtextra.AbsoluteConstraints(440, 140, 60, 25));
+
+ jLabel12.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel12.setText(AppLocal.getIntString("label.minimum")); // NOI18N
+ jLabel12.setMaximumSize(new java.awt.Dimension(40, 20));
+ jLabel12.setMinimumSize(new java.awt.Dimension(40, 20));
+ jLabel12.setPreferredSize(new java.awt.Dimension(40, 20));
+ jPanel1.add(jLabel12, new org.netbeans.lib.awtextra.AbsoluteConstraints(370, 140, 60, 20));
+
+ m_jbuyprice.setEditable(false);
+ m_jbuyprice.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ m_jbuyprice.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
+ jPanel1.add(m_jbuyprice, new org.netbeans.lib.awtextra.AbsoluteConstraints(440, 110, 60, 20));
+
+ jLabel13.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel13.setText(AppLocal.getIntString("label.prodpricebuy")); // NOI18N
+ jLabel13.setMaximumSize(new java.awt.Dimension(40, 20));
+ jLabel13.setMinimumSize(new java.awt.Dimension(40, 20));
+ jLabel13.setPreferredSize(new java.awt.Dimension(40, 20));
+ jPanel1.add(jLabel13, new org.netbeans.lib.awtextra.AbsoluteConstraints(370, 110, 60, 20));
+
+ jLabel14.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ jLabel14.setText(AppLocal.getIntString("label.prodpricesell")); // NOI18N
+ jLabel14.setMaximumSize(new java.awt.Dimension(40, 20));
+ jLabel14.setMinimumSize(new java.awt.Dimension(40, 20));
+ jLabel14.setPreferredSize(new java.awt.Dimension(40, 20));
+ jPanel1.add(jLabel14, new org.netbeans.lib.awtextra.AbsoluteConstraints(510, 110, 60, 20));
+
+ m_jsellprice.setEditable(false);
+ m_jsellprice.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
+ m_jsellprice.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
+ jPanel1.add(m_jsellprice, new org.netbeans.lib.awtextra.AbsoluteConstraints(580, 110, 60, 20));
add(jPanel1, java.awt.BorderLayout.PAGE_START);
@@ -652,11 +914,10 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
catcontainer.getAccessibleContext().setAccessibleParent(jPanel1);
}// //GEN-END:initComponents
- private void m_jEnter1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jEnter1ActionPerformed
+ private void m_EditProductActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_EditProductActionPerformed
- assignProductByReference();
-
- }//GEN-LAST:event_m_jEnter1ActionPerformed
+ editProduct();
+ }//GEN-LAST:event_m_EditProductActionPerformed
private void m_jreferenceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jreferenceActionPerformed
@@ -665,29 +926,29 @@ private void m_jreferenceActionPerformed(java.awt.event.ActionEvent evt) {//GEN-
}//GEN-LAST:event_m_jreferenceActionPerformed
private void m_jcodebarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jcodebarActionPerformed
-
+
assignProductByCode();
}//GEN-LAST:event_m_jcodebarActionPerformed
private void m_jEnterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jEnterActionPerformed
-
+
assignProductByCode();
-
+
}//GEN-LAST:event_m_jEnterActionPerformed
private void jEditAttributesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jEditAttributesActionPerformed
if (productid == null) {
// first select the product.
- MessageInf msg = new MessageInf(MessageInf.SGN_WARNING, AppLocal.getIntString("message.productnotselected"));
- msg.show(this);
+ MessageInf msg = new MessageInf(MessageInf.SGN_WARNING, AppLocal.getIntString("message.productnotselected"));
+ msg.show(this);
} else {
try {
JProductAttEdit attedit = JProductAttEdit.getAttributesEditor(this, m_App.getSession());
attedit.editAttributes(attsetid, attsetinstid);
attedit.setVisible(true);
-
+
if (attedit.isOK()) {
// The user pressed OK
attsetinstid = attedit.getAttributeSetInst();
@@ -698,36 +959,37 @@ private void jEditAttributesActionPerformed(java.awt.event.ActionEvent evt) {//G
MessageInf msg = new MessageInf(MessageInf.SGN_WARNING, AppLocal.getIntString("message.cannotfindattributes"), ex);
msg.show(this);
}
- }
+ }
}//GEN-LAST:event_jEditAttributesActionPerformed
private void m_jbtndateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_jbtndateActionPerformed
-
+
Date date;
try {
date = (Date) Formats.TIMESTAMP.parseValue(m_jdate.getText());
} catch (BasicException e) {
date = null;
- }
+ }
date = JCalendarDialog.showCalendarTime(this, date);
if (date != null) {
m_jdate.setText(Formats.TIMESTAMP.formatValue(date));
}
-
+
}//GEN-LAST:event_m_jbtndateActionPerformed
- private void jEditProductActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jEditProductActionPerformed
-
+ private void m_FindProductActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_m_FindProductActionPerformed
assignProduct(JProductFinder.showMessage(this, m_dlSales));
-}//GEN-LAST:event_jEditProductActionPerformed
-
-
+}//GEN-LAST:event_m_FindProductActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel catcontainer;
private javax.swing.JButton jEditAttributes;
- private javax.swing.JButton jEditProduct;
private javax.swing.JLabel jLabel1;
+ private javax.swing.JLabel jLabel10;
+ private javax.swing.JLabel jLabel11;
+ private javax.swing.JLabel jLabel12;
+ private javax.swing.JLabel jLabel13;
+ private javax.swing.JLabel jLabel14;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
@@ -739,16 +1001,22 @@ private void jEditProductActionPerformed(java.awt.event.ActionEvent evt) {//GEN-
private javax.swing.JPanel jPanel1;
private javax.swing.JTextField jattributes;
private javax.swing.JTextField jproduct;
+ private javax.swing.JButton m_EditProduct;
+ private javax.swing.JButton m_FindProduct;
private javax.swing.JButton m_jEnter;
- private javax.swing.JButton m_jEnter1;
private javax.swing.JComboBox m_jLocation;
private javax.swing.JButton m_jbtndate;
+ private javax.swing.JTextField m_jbuyprice;
private javax.swing.JTextField m_jcodebar;
private javax.swing.JTextField m_jdate;
+ private javax.swing.JTextField m_jmaximum;
+ private javax.swing.JTextField m_jminimum;
private javax.swing.JTextField m_jprice;
private javax.swing.JComboBox m_jreason;
private javax.swing.JTextField m_jreference;
+ private javax.swing.JTextField m_jsellprice;
private javax.swing.JTextField m_junits;
+ private javax.swing.JTextField m_junitsinstock;
// End of variables declaration//GEN-END:variables
-
+
}
diff --git a/src-pos/uk/chromis/pos/inventory/StockDiaryPanel.java b/src-pos/uk/chromis/pos/inventory/StockDiaryPanel.java
index bf707ff5..8f8692fe 100644
--- a/src-pos/uk/chromis/pos/inventory/StockDiaryPanel.java
+++ b/src-pos/uk/chromis/pos/inventory/StockDiaryPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/StockManagement.form b/src-pos/uk/chromis/pos/inventory/StockManagement.form
index 16d3059f..668c0827 100644
--- a/src-pos/uk/chromis/pos/inventory/StockManagement.form
+++ b/src-pos/uk/chromis/pos/inventory/StockManagement.form
@@ -90,7 +90,9 @@
-
+
+
+
@@ -219,7 +221,9 @@
-
+
+
+
@@ -241,7 +245,9 @@
-
+
+
+
@@ -263,7 +269,9 @@
-
+
+
+
@@ -285,7 +293,9 @@
-
+
+
+
@@ -317,7 +327,9 @@
-
+
+
+
diff --git a/src-pos/uk/chromis/pos/inventory/StockManagement.java b/src-pos/uk/chromis/pos/inventory/StockManagement.java
index 52ce46a1..45e1cbef 100644
--- a/src-pos/uk/chromis/pos/inventory/StockManagement.java
+++ b/src-pos/uk/chromis/pos/inventory/StockManagement.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -470,7 +470,8 @@ private void initComponents() {
jPanel8.add(m_jdate, new org.netbeans.lib.awtextra.AbsoluteConstraints(100, 10, 200, 25));
m_jbtndate.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/date.png"))); // NOI18N
- m_jbtndate.setToolTipText("Open Calendar");
+ java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N
+ m_jbtndate.setToolTipText(bundle.getString("tiptext.opencalendar")); // NOI18N
m_jbtndate.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
m_jbtndateActionPerformed(evt);
@@ -515,7 +516,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel8.add(jPanel5, new org.netbeans.lib.awtextra.AbsoluteConstraints(5, 110, -1, 150));
m_jUp.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/1uparrow.png"))); // NOI18N
- m_jUp.setToolTipText("Scroll Up a Line");
+ m_jUp.setToolTipText(bundle.getString("tiptext.scrollup")); // NOI18N
m_jUp.setFocusPainted(false);
m_jUp.setFocusable(false);
m_jUp.setMargin(new java.awt.Insets(8, 14, 8, 14));
@@ -528,7 +529,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel8.add(m_jUp, new org.netbeans.lib.awtextra.AbsoluteConstraints(420, 110, -1, -1));
m_jDown.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/1downarrow.png"))); // NOI18N
- m_jDown.setToolTipText("Scroll Down a Line");
+ m_jDown.setToolTipText(bundle.getString("tiptext.scrolldown")); // NOI18N
m_jDown.setFocusPainted(false);
m_jDown.setFocusable(false);
m_jDown.setMargin(new java.awt.Insets(8, 14, 8, 14));
@@ -541,7 +542,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel8.add(m_jDown, new org.netbeans.lib.awtextra.AbsoluteConstraints(480, 110, -1, -1));
m_jDelete.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/editdelete.png"))); // NOI18N
- m_jDelete.setToolTipText("Remove Line");
+ m_jDelete.setToolTipText(bundle.getString("tiptext.removeline")); // NOI18N
m_jDelete.setFocusPainted(false);
m_jDelete.setFocusable(false);
m_jDelete.setMargin(new java.awt.Insets(8, 14, 8, 14));
@@ -554,7 +555,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel8.add(m_jDelete, new org.netbeans.lib.awtextra.AbsoluteConstraints(420, 160, -1, -1));
jEditAttributes.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/attributes.png"))); // NOI18N
- jEditAttributes.setToolTipText("Attrubutes");
+ jEditAttributes.setToolTipText(bundle.getString("tiptext.attributes")); // NOI18N
jEditAttributes.setFocusPainted(false);
jEditAttributes.setFocusable(false);
jEditAttributes.setMargin(new java.awt.Insets(8, 14, 8, 14));
@@ -571,7 +572,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
btnDownloadProducts.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
btnDownloadProducts.setText("ScanPal");
- btnDownloadProducts.setToolTipText("Download from Mobile Device");
+ btnDownloadProducts.setToolTipText(bundle.getString("tiptext.downfrommobile")); // NOI18N
btnDownloadProducts.setPreferredSize(new java.awt.Dimension(115, 33));
btnDownloadProducts.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
diff --git a/src-pos/uk/chromis/pos/inventory/StockModel.java b/src-pos/uk/chromis/pos/inventory/StockModel.java
index 6c09068f..11795d6d 100644
--- a/src-pos/uk/chromis/pos/inventory/StockModel.java
+++ b/src-pos/uk/chromis/pos/inventory/StockModel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/TaxCategoriesEditor.java b/src-pos/uk/chromis/pos/inventory/TaxCategoriesEditor.java
index 1f875ed5..3381e6d3 100644
--- a/src-pos/uk/chromis/pos/inventory/TaxCategoriesEditor.java
+++ b/src-pos/uk/chromis/pos/inventory/TaxCategoriesEditor.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/TaxCategoriesPanel.java b/src-pos/uk/chromis/pos/inventory/TaxCategoriesPanel.java
index a579691f..7d4e120f 100644
--- a/src-pos/uk/chromis/pos/inventory/TaxCategoriesPanel.java
+++ b/src-pos/uk/chromis/pos/inventory/TaxCategoriesPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/TaxCategoryInfo.java b/src-pos/uk/chromis/pos/inventory/TaxCategoryInfo.java
index 9cd22366..4a7da823 100644
--- a/src-pos/uk/chromis/pos/inventory/TaxCategoryInfo.java
+++ b/src-pos/uk/chromis/pos/inventory/TaxCategoryInfo.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/TaxCustCategoriesEditor.java b/src-pos/uk/chromis/pos/inventory/TaxCustCategoriesEditor.java
index bb6b115f..abd2de7d 100644
--- a/src-pos/uk/chromis/pos/inventory/TaxCustCategoriesEditor.java
+++ b/src-pos/uk/chromis/pos/inventory/TaxCustCategoriesEditor.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/TaxCustCategoriesPanel.java b/src-pos/uk/chromis/pos/inventory/TaxCustCategoriesPanel.java
index d52ed64d..dd2fc7e7 100644
--- a/src-pos/uk/chromis/pos/inventory/TaxCustCategoriesPanel.java
+++ b/src-pos/uk/chromis/pos/inventory/TaxCustCategoriesPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/TaxCustCategoryInfo.java b/src-pos/uk/chromis/pos/inventory/TaxCustCategoryInfo.java
index 0820da8a..da025ce4 100644
--- a/src-pos/uk/chromis/pos/inventory/TaxCustCategoryInfo.java
+++ b/src-pos/uk/chromis/pos/inventory/TaxCustCategoryInfo.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/TaxEditor.java b/src-pos/uk/chromis/pos/inventory/TaxEditor.java
index 64fa8452..88e8ec65 100644
--- a/src-pos/uk/chromis/pos/inventory/TaxEditor.java
+++ b/src-pos/uk/chromis/pos/inventory/TaxEditor.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/inventory/TaxPanel.java b/src-pos/uk/chromis/pos/inventory/TaxPanel.java
index e2c29568..f378c977 100644
--- a/src-pos/uk/chromis/pos/inventory/TaxPanel.java
+++ b/src-pos/uk/chromis/pos/inventory/TaxPanel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/liquibase/JResetLiquibase.java b/src-pos/uk/chromis/pos/liquibase/JResetLiquibase.java
index f0d08417..2034e6fa 100644
--- a/src-pos/uk/chromis/pos/liquibase/JResetLiquibase.java
+++ b/src-pos/uk/chromis/pos/liquibase/JResetLiquibase.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/liquibase/chromis.xml b/src-pos/uk/chromis/pos/liquibase/chromis.xml
deleted file mode 100644
index b5d91e90..00000000
--- a/src-pos/uk/chromis/pos/liquibase/chromis.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src-pos/uk/chromis/pos/liquibase/common/adddefaults.xml b/src-pos/uk/chromis/pos/liquibase/common/adddefaults.xml
new file mode 100644
index 00000000..198ec675
--- /dev/null
+++ b/src-pos/uk/chromis/pos/liquibase/common/adddefaults.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO SHIFTS(ID, STARTSHIFT, ENDSHIFT, PPLID) VALUES ('0', '2013-12-02 00:00:00.001', '2013-12-02 00:00:00.002','0')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/liquibase/common/addindexes.xml b/src-pos/uk/chromis/pos/liquibase/common/addindexes.xml
new file mode 100644
index 00000000..df7b1cd8
--- /dev/null
+++ b/src-pos/uk/chromis/pos/liquibase/common/addindexes.xml
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX CLOSEDCASH_INX_SEQ ON CLOSEDCASH (HOST, HOSTSEQUENCE)
+ CREATE UNIQUE INDEX THIRDPARTIES_CIF_INX ON THIRDPARTIES (CIF)
+ CREATE UNIQUE INDEX THIRDPARTIES_NAME_INX ON THIRDPARTIES (NAME)
+ CREATE UNIQUE INDEX PRODUCTS_INX_0 ON PRODUCTS (REFERENCE)
+ CREATE UNIQUE INDEX PRODUCTS_INX_1 ON PRODUCTS (CODE)
+ CREATE UNIQUE INDEX PKIT_INX_PROD ON PRODUCTS_KIT (PRODUCT,PRODUCT_KIT)
+ CREATE UNIQUE INDEX RESOURCES_NAME_INX ON RESOURCES (NAME)
+ CREATE UNIQUE INDEX ROLES_NAME_INX ON ROLES (NAME)
+ CREATE UNIQUE INDEX STOCKCURRENT_INX ON STOCKCURRENT (LOCATION,PRODUCT,ATTRIBUTESETINSTANCE_ID)
+ CREATE UNIQUE INDEX TAXCAT_NAME_INX ON TAXCATEGORIES (NAME)
+ CREATE UNIQUE INDEX TAXCUSTCAT_NAME_INX ON TAXCUSTCATEGORIES (NAME)
+ CREATE UNIQUE INDEX TAXES_NAME_INX ON TAXES (NAME)
+ CREATE UNIQUE INDEX PLACES_NAME_INX ON PLACES (NAME)
+ CREATE UNIQUE INDEX PEOPLE_NAME_INX ON PEOPLE (NAME)
+ CREATE UNIQUE INDEX LOCATIONS_NAME_INX ON LOCATIONS (NAME)
+ CREATE UNIQUE INDEX FLOORS_NAME_INX ON FLOORS (NAME)
+ CREATE INDEX DBPERMISSIONS_CLASSNAME_INX ON DBPERMISSIONS (CLASSNAME)
+ CREATE UNIQUE INDEX CUSTOMERS_SKEY_INX ON CUSTOMERS (SEARCHKEY)
+ CREATE UNIQUE INDEX CATEGORIES_NAME_INX ON CATEGORIES (NAME)
+ CREATE INDEX ATTSETINST_SET ON ATTRIBUTESETINSTANCE (ATTRIBUTESET_ID)
+ CREATE INDEX ATTUSE_ATT ON ATTRIBUTEUSE (ATTRIBUTE_ID)
+ CREATE UNIQUE INDEX ATTUSE_LINE ON ATTRIBUTEUSE (ATTRIBUTESET_ID, LINENO)
+ CREATE INDEX ATTVAL_ATT ON ATTRIBUTEVALUE (ATTRIBUTE_ID)
+ CREATE INDEX CLOSEDCASH_INX_1 ON CLOSEDCASH (DATESTART)
+ CREATE INDEX PLACES_FK_1 ON PLACES (FLOOR)
+ CREATE INDEX RECEIPTS_FK_MONEY ON RECEIPTS (MONEY)
+ CREATE INDEX RECEIPTS_INX_1 ON RECEIPTS (DATENEW)
+ CREATE UNIQUE INDEX RESERVATIONS_INX_1 ON RESERVATIONS (DATENEW)
+ CREATE INDEX ATTINST_ATT ON ATTRIBUTEINSTANCE (ATTRIBUTE_ID)
+ CREATE INDEX ATTINST_SET ON ATTRIBUTEINSTANCE (ATTRIBUTESETINSTANCE_ID)
+ CREATE INDEX CUSTOMERS_CARD_INX ON CUSTOMERS (CARD)
+ CREATE INDEX CUSTOMERS_NAME_INX ON CUSTOMERS (NAME)
+ CREATE INDEX CUSTOMERS_TAXCAT ON CUSTOMERS (TAXCATEGORY)
+ CREATE INDEX CUSTOMERS_TAXID_INX ON CUSTOMERS (TAXID)
+ CREATE INDEX PAYMENTS_FK_RECEIPT ON PAYMENTS (RECEIPT)
+ CREATE INDEX PAYMENTS_INX_1 ON PAYMENTS (PAYMENT)
+ CREATE INDEX PEOPLE_CARD_INX ON PEOPLE (CARD)
+ CREATE INDEX PEOPLE_FK_1 ON PEOPLE (ROLE)
+ CREATE INDEX RES_CUST_FK_2 ON RESERVATION_CUSTOMERS (CUSTOMER)
+ CREATE INDEX SHIFT_BREAKS_BREAKID ON SHIFT_BREAKS (BREAKID)
+ CREATE INDEX SHIFT_BREAKS_SHIFTID ON SHIFT_BREAKS (SHIFTID)
+ CREATE INDEX TICKETS_CUSTOMERS_FK ON TICKETS (CUSTOMER)
+ CREATE INDEX TICKETS_FK_2 ON TICKETS (PERSON)
+ CREATE INDEX TICKETS_TICKETID ON TICKETS (TICKETTYPE, TICKETID)
+ CREATE INDEX LEAVES_PPLID ON LEAVES (PPLID)
+ CREATE INDEX CATEGORIES_FK_1 ON CATEGORIES (PARENTID)
+ CREATE INDEX FK_PRODUCT_PROMOTIONID ON PRODUCTS (PROMOTIONID)
+ CREATE INDEX PRODUCTS_ATTRSET_FK ON PRODUCTS (ATTRIBUTESET_ID)
+ CREATE INDEX PRODUCTS_FK_1 ON PRODUCTS (CATEGORY)
+ CREATE INDEX PRODUCTS_PACKPRODUCT_FK ON PRODUCTS (PACKPRODUCT)
+ CREATE INDEX PRODUCTS_TAXCAT_FK ON PRODUCTS (TAXCAT)
+ CREATE UNIQUE INDEX PCOM_INX_PROD ON PRODUCTS_COM (PRODUCT, PRODUCT2)
+ CREATE INDEX PRODUCTS_COM_FK_2 ON PRODUCTS_COM (PRODUCT2)
+ CREATE INDEX PRODUCTS_KIT_FK_2 ON PRODUCTS_KIT (PRODUCT_KIT)
+ CREATE INDEX STOCKCURRENT_ATTSETINST ON STOCKCURRENT (ATTRIBUTESETINSTANCE_ID)
+ CREATE INDEX STOCKCURRENT_FK_1 ON STOCKCURRENT (PRODUCT)
+ CREATE INDEX STOCKDIARY_ATTSETINST ON STOCKDIARY (ATTRIBUTESETINSTANCE_ID)
+ CREATE INDEX STOCKDIARY_FK_1 ON STOCKDIARY (PRODUCT)
+ CREATE INDEX STOCKDIARY_FK_2 ON STOCKDIARY (LOCATION)
+ CREATE INDEX STOCKDIARY_INX_1 ON STOCKDIARY (DATENEW)
+ CREATE INDEX STOCKLEVEL_LOCATION ON STOCKLEVEL (LOCATION)
+ CREATE INDEX STOCKLEVEL_PRODUCT ON STOCKLEVEL (PRODUCT)
+ CREATE INDEX TAXES_CAT_FK ON TAXES (CATEGORY)
+ CREATE INDEX TAXES_CUSTCAT_FK ON TAXES (CUSTCATEGORY)
+ CREATE INDEX TAXES_TAXES_FK ON TAXES (PARENTID)
+ CREATE INDEX TAXLINES_RECEIPT ON TAXLINES (RECEIPT)
+ CREATE INDEX TAXLINES_TAX ON TAXLINES (TAXID)
+ CREATE INDEX TICKETLINES_FK_2 ON TICKETLINES (PRODUCT)
+ CREATE INDEX TICKETLINES_FK_3 ON TICKETLINES (TAXID)
+ CREATE INDEX PRODUCTS_NAME_INX ON PRODUCTS (NAME)
+ CREATE INDEX TICKETLINES_ATTSETINST ON TICKETLINES (ATTRIBUTESETINSTANCE_ID)
+
+
+
+ ALTER TABLE PEOPLE ADD CONSTRAINT PEOPLE_FK_1 FOREIGN KEY (ROLE) REFERENCES ROLES(ID)
+ ALTER TABLE CUSTOMERS ADD CONSTRAINT CUSTOMERS_TAXCAT FOREIGN KEY (TAXCATEGORY) REFERENCES TAXCUSTCATEGORIES(ID)
+ ALTER TABLE CATEGORIES ADD CONSTRAINT CATEGORIES_FK_1 FOREIGN KEY (PARENTID) REFERENCES CATEGORIES(ID)
+ ALTER TABLE TAXES ADD CONSTRAINT TAXES_CAT_FK FOREIGN KEY (CATEGORY) REFERENCES TAXCATEGORIES(ID)
+ ALTER TABLE TAXES ADD CONSTRAINT TAXES_CUSTCAT_FK FOREIGN KEY (CUSTCATEGORY) REFERENCES TAXCUSTCATEGORIES(ID)
+ ALTER TABLE TAXES ADD CONSTRAINT TAXES_TAXES_FK FOREIGN KEY (PARENTID) REFERENCES TAXES(ID)
+ ALTER TABLE ATTRIBUTEVALUE ADD CONSTRAINT ATTVAL_ATT FOREIGN KEY (ATTRIBUTE_ID) REFERENCES ATTRIBUTE(ID) ON DELETE CASCADE
+ ALTER TABLE ATTRIBUTEUSE ADD CONSTRAINT ATTUSE_SET FOREIGN KEY (ATTRIBUTESET_ID) REFERENCES ATTRIBUTESET(ID) ON DELETE CASCADE
+ ALTER TABLE ATTRIBUTEUSE ADD CONSTRAINT ATTUSE_ATT FOREIGN KEY (ATTRIBUTE_ID) REFERENCES ATTRIBUTE(ID)
+ ALTER TABLE ATTRIBUTESETINSTANCE ADD CONSTRAINT ATTSETINST_SET FOREIGN KEY (ATTRIBUTESET_ID) REFERENCES ATTRIBUTESET(ID) ON DELETE CASCADE
+ ALTER TABLE ATTRIBUTEINSTANCE ADD CONSTRAINT ATTINST_SET FOREIGN KEY (ATTRIBUTESETINSTANCE_ID) REFERENCES ATTRIBUTESETINSTANCE(ID) ON DELETE CASCADE
+ ALTER TABLE ATTRIBUTEINSTANCE ADD CONSTRAINT ATTINST_ATT FOREIGN KEY (ATTRIBUTE_ID) REFERENCES ATTRIBUTE(ID)
+ ALTER TABLE PRODUCTS ADD CONSTRAINT PRODUCTS_FK_1 FOREIGN KEY (CATEGORY) REFERENCES CATEGORIES(ID)
+ ALTER TABLE PRODUCTS ADD CONSTRAINT PRODUCTS_TAXCAT_FK FOREIGN KEY (TAXCAT) REFERENCES TAXCATEGORIES(ID)
+ ALTER TABLE PRODUCTS ADD CONSTRAINT PRODUCTS_ATTRSET_FK FOREIGN KEY (ATTRIBUTESET_ID) REFERENCES ATTRIBUTESET(ID)
+ ALTER TABLE PRODUCTS_COM ADD CONSTRAINT PRODUCTS_COM_FK_1 FOREIGN KEY (PRODUCT) REFERENCES PRODUCTS(ID)
+ ALTER TABLE PRODUCTS_COM ADD CONSTRAINT PRODUCTS_COM_FK_2 FOREIGN KEY (PRODUCT2) REFERENCES PRODUCTS(ID)
+ ALTER TABLE STOCKDIARY ADD CONSTRAINT STOCKDIARY_FK_1 FOREIGN KEY (PRODUCT) REFERENCES PRODUCTS(ID)
+ ALTER TABLE STOCKDIARY ADD CONSTRAINT STOCKDIARY_ATTSETINST FOREIGN KEY (ATTRIBUTESETINSTANCE_ID) REFERENCES ATTRIBUTESETINSTANCE(ID)
+ ALTER TABLE STOCKDIARY ADD CONSTRAINT STOCKDIARY_FK_2 FOREIGN KEY (LOCATION) REFERENCES LOCATIONS(ID)
+ ALTER TABLE STOCKLEVEL ADD CONSTRAINT STOCKLEVEL_PRODUCT FOREIGN KEY (PRODUCT) REFERENCES PRODUCTS(ID)
+ ALTER TABLE STOCKLEVEL ADD CONSTRAINT STOCKLEVEL_LOCATION FOREIGN KEY (LOCATION) REFERENCES LOCATIONS(ID)
+ ALTER TABLE STOCKCURRENT ADD CONSTRAINT STOCKCURRENT_FK_1 FOREIGN KEY (PRODUCT) REFERENCES PRODUCTS(ID)
+ ALTER TABLE STOCKCURRENT ADD CONSTRAINT STOCKCURRENT_ATTSETINST FOREIGN KEY (ATTRIBUTESETINSTANCE_ID) REFERENCES ATTRIBUTESETINSTANCE(ID);
+ ALTER TABLE STOCKCURRENT ADD CONSTRAINT STOCKCURRENT_FK_2 FOREIGN KEY (LOCATION) REFERENCES LOCATIONS(ID);
+ ALTER TABLE RECEIPTS ADD CONSTRAINT RECEIPTS_FK_MONEY FOREIGN KEY (MONEY) REFERENCES CLOSEDCASH(MONEY)
+ ALTER TABLE TICKETS ADD CONSTRAINT TICKETS_FK_ID FOREIGN KEY (ID) REFERENCES RECEIPTS(ID)
+ ALTER TABLE TICKETS ADD CONSTRAINT TICKETS_FK_2 FOREIGN KEY (PERSON) REFERENCES PEOPLE(ID)
+ ALTER TABLE TICKETS ADD CONSTRAINT TICKETS_CUSTOMERS_FK FOREIGN KEY (CUSTOMER) REFERENCES CUSTOMERS(ID)
+ ALTER TABLE TICKETLINES ADD CONSTRAINT TICKETLINES_FK_TICKET FOREIGN KEY (TICKET) REFERENCES TICKETS(ID)
+ ALTER TABLE TICKETLINES ADD CONSTRAINT TICKETLINES_FK_2 FOREIGN KEY (PRODUCT) REFERENCES PRODUCTS(ID)
+ ALTER TABLE TICKETLINES ADD CONSTRAINT TICKETLINES_ATTSETINST FOREIGN KEY (ATTRIBUTESETINSTANCE_ID) REFERENCES ATTRIBUTESETINSTANCE(ID)
+ ALTER TABLE TICKETLINES ADD CONSTRAINT TICKETLINES_FK_3 FOREIGN KEY (TAXID) REFERENCES TAXES(ID)
+ ALTER TABLE PAYMENTS ADD CONSTRAINT PAYMENTS_FK_RECEIPT FOREIGN KEY (RECEIPT) REFERENCES RECEIPTS(ID)
+ ALTER TABLE TAXLINES ADD CONSTRAINT TAXLINES_TAX FOREIGN KEY (TAXID) REFERENCES TAXES(ID)
+ ALTER TABLE TAXLINES ADD CONSTRAINT TAXLINES_RECEIPT FOREIGN KEY (RECEIPT) REFERENCES RECEIPTS(ID)
+ ALTER TABLE PLACES ADD CONSTRAINT PLACES_FK_1 FOREIGN KEY (FLOOR) REFERENCES FLOORS(ID)
+ ALTER TABLE RESERVATION_CUSTOMERS ADD CONSTRAINT RES_CUST_FK_1 FOREIGN KEY (ID) REFERENCES RESERVATIONS(ID)
+ ALTER TABLE RESERVATION_CUSTOMERS ADD CONSTRAINT RES_CUST_FK_2 FOREIGN KEY (CUSTOMER) REFERENCES CUSTOMERS(ID)
+ ALTER TABLE LEAVES ADD CONSTRAINT LEAVES_PPLID FOREIGN KEY (PPLID) REFERENCES PEOPLE(ID)
+ ALTER TABLE SHIFT_BREAKS ADD CONSTRAINT SHIFT_BREAKS_BREAKID FOREIGN KEY (BREAKID) REFERENCES BREAKS(ID)
+ ALTER TABLE SHIFT_BREAKS ADD CONSTRAINT SHIFT_BREAKS_SHIFTID FOREIGN KEY (SHIFTID) REFERENCES SHIFTS(ID)
+ ALTER TABLE PRODUCTS_KIT ADD CONSTRAINT PRODUCTS_KIT_FK_1 FOREIGN KEY (PRODUCT) REFERENCES PRODUCTS(ID)
+ ALTER TABLE PRODUCTS_KIT ADD CONSTRAINT PRODUCTS_KIT_FK_2 FOREIGN KEY (PRODUCT_KIT) REFERENCES PRODUCTS(ID)
+ ALTER TABLE PRODUCTS ADD CONSTRAINT FK_PRODUCT_PROMOTIONID FOREIGN KEY (PROMOTIONID) REFERENCES PROMOTIONS(ID)
+ ALTER TABLE PRODUCTS ADD CONSTRAINT PRODUCTS_PACKPRODUCT_FK FOREIGN KEY (PACKPRODUCT) REFERENCES PRODUCTS(ID)
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/liquibase/common/addindexes_new.xml b/src-pos/uk/chromis/pos/liquibase/common/addindexes_new.xml
new file mode 100644
index 00000000..9d58ad37
--- /dev/null
+++ b/src-pos/uk/chromis/pos/liquibase/common/addindexes_new.xml
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX CLOSEDCASH_INX_SEQ ON CLOSEDCASH (HOST, HOSTSEQUENCE)
+ CREATE UNIQUE INDEX THIRDPARTIES_CIF_INX ON THIRDPARTIES (CIF, SITEGUID)
+ CREATE UNIQUE INDEX THIRDPARTIES_NAME_INX ON THIRDPARTIES (NAME, SITEGUID)
+ CREATE UNIQUE INDEX PRODUCTS_INX_0 ON PRODUCTS (REFERENCE, SITEGUID)
+ CREATE UNIQUE INDEX PRODUCTS_INX_1 ON PRODUCTS (CODE, SITEGUID)
+ CREATE UNIQUE INDEX PKIT_INX_PROD ON PRODUCTS_KIT (PRODUCT, PRODUCT_KIT, SITEGUID)
+ CREATE UNIQUE INDEX RESOURCES_NAME_INX ON RESOURCES (NAME, SITEGUID)
+ CREATE UNIQUE INDEX ROLES_NAME_INX ON ROLES (NAME, SITEGUID)
+ CREATE UNIQUE INDEX STOCKCURRENT_INX ON STOCKCURRENT (LOCATION, PRODUCT, ATTRIBUTESETINSTANCE_ID, SITEGUID)
+ CREATE UNIQUE INDEX TAXCAT_NAME_INX ON TAXCATEGORIES (NAME, SITEGUID)
+ CREATE UNIQUE INDEX TAXCUSTCAT_NAME_INX ON TAXCUSTCATEGORIES (NAME, SITEGUID)
+ CREATE UNIQUE INDEX TAXES_NAME_INX ON TAXES (NAME, SITEGUID)
+ CREATE UNIQUE INDEX PLACES_NAME_INX ON PLACES (NAME, SITEGUID)
+ CREATE UNIQUE INDEX PEOPLE_NAME_INX ON PEOPLE (NAME, SITEGUID)
+ CREATE UNIQUE INDEX LOCATIONS_NAME_INX ON LOCATIONS (NAME, SITEGUID)
+ CREATE UNIQUE INDEX FLOORS_NAME_INX ON FLOORS (NAME, SITEGUID)
+ CREATE UNIQUE INDEX PCOM_INX_PROD ON PRODUCTS_COM (PRODUCT, PRODUCT2, SITEGUID)
+ CREATE UNIQUE INDEX ATTUSE_LINE ON ATTRIBUTEUSE (ATTRIBUTESET_ID, LINENO, SITEGUID)
+ CREATE UNIQUE INDEX CUSTOMERS_SKEY_INX ON CUSTOMERS (SEARCHKEY, SITEGUID)
+ CREATE UNIQUE INDEX CATEGORIES_NAME_INX ON CATEGORIES (NAME, SITEGUID)
+ CREATE UNIQUE INDEX RESERVATIONS_INX_1 ON RESERVATIONS (DATENEW, SITEGUID)
+
+ CREATE INDEX ATTUSE_ATT ON ATTRIBUTEUSE (ATTRIBUTE_ID, SITEGUID)
+ CREATE INDEX DBPERMISSIONS_CLASSNAME_INX ON DBPERMISSIONS (CLASSNAME, SITEGUID)
+ CREATE INDEX ATTSETINST_SET ON ATTRIBUTESETINSTANCE (ATTRIBUTESET_ID, SITEGUID)
+ CREATE INDEX ATTVAL_ATT ON ATTRIBUTEVALUE (ATTRIBUTE_ID, SITEGUID)
+ CREATE INDEX CLOSEDCASH_INX_1 ON CLOSEDCASH (DATESTART, SITEGUID)
+ CREATE INDEX PLACES_FK_1 ON PLACES (FLOOR, SITEGUID)
+ CREATE INDEX RECEIPTS_FK_MONEY ON RECEIPTS (MONEY, SITEGUID)
+ CREATE INDEX RECEIPTS_INX_1 ON RECEIPTS (DATENEW, SITEGUID)
+ CREATE INDEX ATTINST_ATT ON ATTRIBUTEINSTANCE (ATTRIBUTE_ID, SITEGUID)
+ CREATE INDEX ATTINST_SET ON ATTRIBUTEINSTANCE (ATTRIBUTESETINSTANCE_ID, SITEGUID)
+ CREATE INDEX CUSTOMERS_CARD_INX ON CUSTOMERS (CARD, SITEGUID)
+ CREATE INDEX CUSTOMERS_NAME_INX ON CUSTOMERS (NAME, SITEGUID)
+ CREATE INDEX CUSTOMERS_TAXCAT ON CUSTOMERS (TAXCATEGORY, SITEGUID)
+ CREATE INDEX CUSTOMERS_TAXID_INX ON CUSTOMERS (TAXID, SITEGUID)
+ CREATE INDEX PAYMENTS_FK_RECEIPT ON PAYMENTS (RECEIPT, SITEGUID)
+ CREATE INDEX PAYMENTS_INX_1 ON PAYMENTS (PAYMENT, SITEGUID)
+ CREATE INDEX PEOPLE_CARD_INX ON PEOPLE (CARD, SITEGUID)
+ CREATE INDEX PEOPLE_FK_1 ON PEOPLE (ROLE, SITEGUID)
+ CREATE INDEX RES_CUST_FK_2 ON RESERVATION_CUSTOMERS (CUSTOMER, SITEGUID)
+ CREATE INDEX SHIFT_BREAKS_BREAKID ON SHIFT_BREAKS (BREAKID, SITEGUID)
+ CREATE INDEX SHIFT_BREAKS_SHIFTID ON SHIFT_BREAKS (SHIFTID, SITEGUID)
+ CREATE INDEX TICKETS_CUSTOMERS_FK ON TICKETS (CUSTOMER, SITEGUID)
+ CREATE INDEX TICKETS_FK_2 ON TICKETS (PERSON, SITEGUID)
+ CREATE INDEX TICKETS_TICKETID ON TICKETS (TICKETTYPE, TICKETID, SITEGUID)
+ CREATE INDEX LEAVES_PPLID ON LEAVES (PPLID, SITEGUID)
+ CREATE INDEX CATEGORIES_FK_1 ON CATEGORIES (PARENTID, SITEGUID)
+ CREATE INDEX FK_PRODUCT_PROMOTIONID ON PRODUCTS (PROMOTIONID, SITEGUID)
+ CREATE INDEX PRODUCTS_ATTRSET_FK ON PRODUCTS (ATTRIBUTESET_ID, SITEGUID)
+ CREATE INDEX PRODUCTS_FK_1 ON PRODUCTS (CATEGORY, SITEGUID)
+ CREATE INDEX PRODUCTS_PACKPRODUCT_FK ON PRODUCTS (PACKPRODUCT, SITEGUID)
+ CREATE INDEX PRODUCTS_TAXCAT_FK ON PRODUCTS (TAXCAT, SITEGUID)
+ CREATE INDEX PRODUCTS_COM_FK_2 ON PRODUCTS_COM (PRODUCT2, SITEGUID)
+ CREATE INDEX PRODUCTS_KIT_FK_2 ON PRODUCTS_KIT (PRODUCT_KIT, SITEGUID)
+ CREATE INDEX STOCKCURRENT_ATTSETINST ON STOCKCURRENT (ATTRIBUTESETINSTANCE_ID, SITEGUID)
+ CREATE INDEX STOCKCURRENT_FK_1 ON STOCKCURRENT (PRODUCT, SITEGUID)
+ CREATE INDEX STOCKDIARY_ATTSETINST ON STOCKDIARY (ATTRIBUTESETINSTANCE_ID, SITEGUID)
+ CREATE INDEX STOCKDIARY_FK_1 ON STOCKDIARY (PRODUCT, SITEGUID)
+ CREATE INDEX STOCKDIARY_FK_2 ON STOCKDIARY (LOCATION, SITEGUID)
+ CREATE INDEX STOCKDIARY_INX_1 ON STOCKDIARY (DATENEW, SITEGUID)
+ CREATE INDEX STOCKLEVEL_LOCATION ON STOCKLEVEL (LOCATION, SITEGUID)
+ CREATE INDEX STOCKLEVEL_PRODUCT ON STOCKLEVEL (PRODUCT, SITEGUID)
+ CREATE INDEX TAXES_CAT_FK ON TAXES (CATEGORY, SITEGUID)
+ CREATE INDEX TAXES_CUSTCAT_FK ON TAXES (CUSTCATEGORY, SITEGUID)
+ CREATE INDEX TAXES_TAXES_FK ON TAXES (PARENTID, SITEGUID)
+ CREATE INDEX TAXLINES_RECEIPT ON TAXLINES (RECEIPT, SITEGUID)
+ CREATE INDEX TAXLINES_TAX ON TAXLINES (TAXID, SITEGUID)
+ CREATE INDEX TICKETLINES_FK_2 ON TICKETLINES (PRODUCT, SITEGUID)
+ CREATE INDEX TICKETLINES_FK_3 ON TICKETLINES (TAXID, SITEGUID)
+ CREATE INDEX PRODUCTS_NAME_INX ON PRODUCTS (NAME, SITEGUID)
+ CREATE INDEX TICKETLINES_ATTSETINST ON TICKETLINES (ATTRIBUTESETINSTANCE_ID, SITEGUID)
+
+
+
+ ALTER TABLE PEOPLE ADD CONSTRAINT PEOPLE_FK_1 FOREIGN KEY (ROLE, SITEGUID) REFERENCES ROLES(ID, SITEGUID)
+ ALTER TABLE CUSTOMERS ADD CONSTRAINT CUSTOMERS_TAXCAT FOREIGN KEY (TAXCATEGORY, SITEGUID) REFERENCES TAXCUSTCATEGORIES(ID, SITEGUID)
+ ALTER TABLE CATEGORIES ADD CONSTRAINT CATEGORIES_FK_1 FOREIGN KEY (PARENTID, SITEGUID) REFERENCES CATEGORIES(ID, SITEGUID)
+ ALTER TABLE TAXES ADD CONSTRAINT TAXES_CAT_FK FOREIGN KEY (CATEGORY, SITEGUID) REFERENCES TAXCATEGORIES(ID, SITEGUID)
+ ALTER TABLE TAXES ADD CONSTRAINT TAXES_CUSTCAT_FK FOREIGN KEY (CUSTCATEGORY, SITEGUID) REFERENCES TAXCUSTCATEGORIES(ID, SITEGUID)
+ ALTER TABLE TAXES ADD CONSTRAINT TAXES_TAXES_FK FOREIGN KEY (PARENTID, SITEGUID) REFERENCES TAXES(ID, SITEGUID)
+ ALTER TABLE ATTRIBUTEVALUE ADD CONSTRAINT ATTVAL_ATT FOREIGN KEY (ATTRIBUTE_ID, SITEGUID) REFERENCES ATTRIBUTE(ID, SITEGUID) ON DELETE CASCADE
+ ALTER TABLE ATTRIBUTEUSE ADD CONSTRAINT ATTUSE_SET FOREIGN KEY (ATTRIBUTESET_ID, SITEGUID) REFERENCES ATTRIBUTESET(ID, SITEGUID) ON DELETE CASCADE
+ ALTER TABLE ATTRIBUTEUSE ADD CONSTRAINT ATTUSE_ATT FOREIGN KEY (ATTRIBUTE_ID, SITEGUID) REFERENCES ATTRIBUTE(ID, SITEGUID)
+ ALTER TABLE ATTRIBUTESETINSTANCE ADD CONSTRAINT ATTSETINST_SET FOREIGN KEY (ATTRIBUTESET_ID, SITEGUID) REFERENCES ATTRIBUTESET(ID, SITEGUID) ON DELETE CASCADE
+ ALTER TABLE ATTRIBUTEINSTANCE ADD CONSTRAINT ATTINST_SET FOREIGN KEY (ATTRIBUTESETINSTANCE_ID, SITEGUID) REFERENCES ATTRIBUTESETINSTANCE(ID, SITEGUID) ON DELETE CASCADE
+ ALTER TABLE ATTRIBUTEINSTANCE ADD CONSTRAINT ATTINST_ATT FOREIGN KEY (ATTRIBUTE_ID, SITEGUID) REFERENCES ATTRIBUTE(ID, SITEGUID)
+ ALTER TABLE PRODUCTS ADD CONSTRAINT PRODUCTS_FK_1 FOREIGN KEY (CATEGORY, SITEGUID) REFERENCES CATEGORIES(ID, SITEGUID)
+ ALTER TABLE PRODUCTS ADD CONSTRAINT PRODUCTS_TAXCAT_FK FOREIGN KEY (TAXCAT, SITEGUID) REFERENCES TAXCATEGORIES(ID, SITEGUID)
+ ALTER TABLE PRODUCTS ADD CONSTRAINT PRODUCTS_ATTRSET_FK FOREIGN KEY (ATTRIBUTESET_ID, SITEGUID) REFERENCES ATTRIBUTESET(ID, SITEGUID)
+ ALTER TABLE PRODUCTS_COM ADD CONSTRAINT PRODUCTS_COM_FK_1 FOREIGN KEY (PRODUCT, SITEGUID) REFERENCES PRODUCTS(ID, SITEGUID)
+ ALTER TABLE PRODUCTS_COM ADD CONSTRAINT PRODUCTS_COM_FK_2 FOREIGN KEY (PRODUCT2, SITEGUID) REFERENCES PRODUCTS(ID, SITEGUID)
+ ALTER TABLE STOCKDIARY ADD CONSTRAINT STOCKDIARY_FK_1 FOREIGN KEY (PRODUCT, SITEGUID) REFERENCES PRODUCTS(ID, SITEGUID)
+ ALTER TABLE STOCKDIARY ADD CONSTRAINT STOCKDIARY_ATTSETINST FOREIGN KEY (ATTRIBUTESETINSTANCE_ID, SITEGUID) REFERENCES ATTRIBUTESETINSTANCE(ID, SITEGUID)
+ ALTER TABLE STOCKDIARY ADD CONSTRAINT STOCKDIARY_FK_2 FOREIGN KEY (LOCATION, SITEGUID) REFERENCES LOCATIONS(ID, SITEGUID)
+ ALTER TABLE STOCKLEVEL ADD CONSTRAINT STOCKLEVEL_PRODUCT FOREIGN KEY (PRODUCT, SITEGUID) REFERENCES PRODUCTS(ID, SITEGUID)
+ ALTER TABLE STOCKLEVEL ADD CONSTRAINT STOCKLEVEL_LOCATION FOREIGN KEY (LOCATION, SITEGUID) REFERENCES LOCATIONS(ID, SITEGUID)
+ ALTER TABLE STOCKCURRENT ADD CONSTRAINT STOCKCURRENT_FK_1 FOREIGN KEY (PRODUCT, SITEGUID) REFERENCES PRODUCTS(ID, SITEGUID)
+ ALTER TABLE STOCKCURRENT ADD CONSTRAINT STOCKCURRENT_ATTSETINST FOREIGN KEY (ATTRIBUTESETINSTANCE_ID, SITEGUID) REFERENCES ATTRIBUTESETINSTANCE(ID, SITEGUID);
+ ALTER TABLE STOCKCURRENT ADD CONSTRAINT STOCKCURRENT_FK_2 FOREIGN KEY (LOCATION, SITEGUID) REFERENCES LOCATIONS(ID, SITEGUID);
+ ALTER TABLE RECEIPTS ADD CONSTRAINT RECEIPTS_FK_MONEY FOREIGN KEY (MONEY, SITEGUID) REFERENCES CLOSEDCASH(MONEY, SITEGUID)
+ ALTER TABLE TICKETS ADD CONSTRAINT TICKETS_FK_ID FOREIGN KEY (ID, SITEGUID) REFERENCES RECEIPTS(ID, SITEGUID)
+ ALTER TABLE TICKETS ADD CONSTRAINT TICKETS_FK_2 FOREIGN KEY (PERSON, SITEGUID) REFERENCES PEOPLE(ID, SITEGUID)
+ ALTER TABLE TICKETS ADD CONSTRAINT TICKETS_CUSTOMERS_FK FOREIGN KEY (CUSTOMER, SITEGUID) REFERENCES CUSTOMERS(ID, SITEGUID)
+ ALTER TABLE TICKETLINES ADD CONSTRAINT TICKETLINES_FK_TICKET FOREIGN KEY (TICKET, SITEGUID) REFERENCES TICKETS(ID, SITEGUID)
+ ALTER TABLE TICKETLINES ADD CONSTRAINT TICKETLINES_FK_2 FOREIGN KEY (PRODUCT, SITEGUID) REFERENCES PRODUCTS(ID, SITEGUID)
+ ALTER TABLE TICKETLINES ADD CONSTRAINT TICKETLINES_ATTSETINST FOREIGN KEY (ATTRIBUTESETINSTANCE_ID, SITEGUID) REFERENCES ATTRIBUTESETINSTANCE(ID, SITEGUID)
+ ALTER TABLE TICKETLINES ADD CONSTRAINT TICKETLINES_FK_3 FOREIGN KEY (TAXID, SITEGUID) REFERENCES TAXES(ID, SITEGUID)
+ ALTER TABLE PAYMENTS ADD CONSTRAINT PAYMENTS_FK_RECEIPT FOREIGN KEY (RECEIPT, SITEGUID) REFERENCES RECEIPTS(ID, SITEGUID)
+ ALTER TABLE TAXLINES ADD CONSTRAINT TAXLINES_TAX FOREIGN KEY (TAXID, SITEGUID) REFERENCES TAXES(ID, SITEGUID)
+ ALTER TABLE TAXLINES ADD CONSTRAINT TAXLINES_RECEIPT FOREIGN KEY (RECEIPT, SITEGUID) REFERENCES RECEIPTS(ID, SITEGUID)
+ ALTER TABLE PLACES ADD CONSTRAINT PLACES_FK_1 FOREIGN KEY (FLOOR, SITEGUID) REFERENCES FLOORS(ID, SITEGUID)
+ ALTER TABLE RESERVATION_CUSTOMERS ADD CONSTRAINT RES_CUST_FK_1 FOREIGN KEY (ID, SITEGUID) REFERENCES RESERVATIONS(ID, SITEGUID)
+ ALTER TABLE RESERVATION_CUSTOMERS ADD CONSTRAINT RES_CUST_FK_2 FOREIGN KEY (CUSTOMER, SITEGUID) REFERENCES CUSTOMERS(ID, SITEGUID)
+ ALTER TABLE LEAVES ADD CONSTRAINT LEAVES_PPLID FOREIGN KEY (PPLID, SITEGUID) REFERENCES PEOPLE(ID, SITEGUID)
+ ALTER TABLE SHIFT_BREAKS ADD CONSTRAINT SHIFT_BREAKS_BREAKID FOREIGN KEY (BREAKID, SITEGUID) REFERENCES BREAKS(ID, SITEGUID)
+ ALTER TABLE SHIFT_BREAKS ADD CONSTRAINT SHIFT_BREAKS_SHIFTID FOREIGN KEY (SHIFTID, SITEGUID) REFERENCES SHIFTS(ID, SITEGUID)
+ ALTER TABLE PRODUCTS_KIT ADD CONSTRAINT PRODUCTS_KIT_FK_1 FOREIGN KEY (PRODUCT, SITEGUID) REFERENCES PRODUCTS(ID, SITEGUID)
+ ALTER TABLE PRODUCTS_KIT ADD CONSTRAINT PRODUCTS_KIT_FK_2 FOREIGN KEY (PRODUCT_KIT, SITEGUID) REFERENCES PRODUCTS(ID, SITEGUID)
+ ALTER TABLE PRODUCTS ADD CONSTRAINT FK_PRODUCT_PROMOTIONID FOREIGN KEY (PROMOTIONID, SITEGUID) REFERENCES PROMOTIONS(ID, SITEGUID)
+ ALTER TABLE PRODUCTS ADD CONSTRAINT PRODUCTS_PACKPRODUCT_FK FOREIGN KEY (PACKPRODUCT, SITEGUID) REFERENCES PRODUCTS(ID, SITEGUID)
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/liquibase/dbpermissions.xml b/src-pos/uk/chromis/pos/liquibase/common/dbpermissions.xml
similarity index 85%
rename from src-pos/uk/chromis/pos/liquibase/dbpermissions.xml
rename to src-pos/uk/chromis/pos/liquibase/common/dbpermissions.xml
index c5b1ebb6..69354ae5 100644
--- a/src-pos/uk/chromis/pos/liquibase/dbpermissions.xml
+++ b/src-pos/uk/chromis/pos/liquibase/common/dbpermissions.xml
@@ -19,7 +19,7 @@
-
+
@@ -40,17 +40,15 @@
-
-
-
-
+
+
+
+
-
-
+
+
- SELECT COUNT(1) FROM DBPERMISSIONS
+ SELECT COUNT(*) FROM DBPERMISSIONS
@@ -862,8 +860,34 @@
-
+
+
+
+
+
+ SELECT COUNT(0) FROM DBPERMISSIONS WHERE DISPLAYNAME='##label.displayname117'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SELECT COUNT(1) FROM DBPERMISSIONS WHERE DESCRIPTION = '##label.description119'
+
+
@@ -876,25 +900,134 @@
-
-
-
+
+
+
+
+
+ SELECT COUNT(0) FROM DBPERMISSIONS WHERE DISPLAYNAME='##label.displayname121'
+
+
+
+
+
+
+
+
+
+
+
+
+ SELECT COUNT(1) FROM DBPERMISSIONS WHERE DESCRIPTION = '##label.description122'
+
+
-
-
+
+
-
-
-
-
+
+
+
+
+
+
+
+ SELECT COUNT(*) FROM DBPERMISSIONS WHERE DESCRIPTION = '##label.description125'
+
+
+
+
+
+
+
+
+
+
+
+ SELECT COUNT(*) FROM DBPERMISSIONS WHERE CLASSNAME = 'uk.chromis.pos.sales.JPanelResetPickupId'
+
+
+
+
+
+
+
+
+
+ SELECT COUNT(1) FROM DBPERMISSIONS WHERE DESCRIPTION = '##label.description127'
+
+
+
+
+
+
+
+
+
+
+
+ SELECT COUNT(1) FROM DBPERMISSIONS WHERE DESCRIPTION = '##label.description129'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SELECT COUNT(1) FROM DBPERMISSIONS WHERE DESCRIPTION = '##label.description131'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SELECT COUNT(1) FROM DBPERMISSIONS WHERE DESCRIPTION = '##label.description133'
+
+
+
+
+
+
+
+
+
+
+
+ DELETE FROM DBPERMISSIONS WHERE DISPLAYNAME ='##label.displayname86'
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/liquibase/common/primarykeys.xml b/src-pos/uk/chromis/pos/liquibase/common/primarykeys.xml
new file mode 100644
index 00000000..9242500d
--- /dev/null
+++ b/src-pos/uk/chromis/pos/liquibase/common/primarykeys.xml
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ALTER TABLE APPLICATIONS ADD PRIMARY KEY (ID)
+ ALTER TABLE ATTRIBUTE ADD PRIMARY KEY (ID)
+ ALTER TABLE ATTRIBUTEINSTANCE ADD PRIMARY KEY (ID)
+ ALTER TABLE ATTRIBUTESET ADD PRIMARY KEY (ID)
+ ALTER TABLE ATTRIBUTESETINSTANCE ADD PRIMARY KEY (ID)
+ ALTER TABLE ATTRIBUTEUSE ADD PRIMARY KEY (ID)
+ ALTER TABLE ATTRIBUTEVALUE ADD PRIMARY KEY (ID)
+ ALTER TABLE BREAKS ADD PRIMARY KEY (ID)
+ ALTER TABLE CATEGORIES ADD PRIMARY KEY (ID)
+ ALTER TABLE CLOSEDCASH ADD PRIMARY KEY (MONEY)
+ ALTER TABLE CSVIMPORT ADD PRIMARY KEY (ID)
+ ALTER TABLE CUSTOMERS ADD PRIMARY KEY (ID)
+ ALTER TABLE DBPERMISSIONS ADD PRIMARY KEY (CLASSNAME)
+ ALTER TABLE DRAWEROPENED ADD PRIMARY KEY (ID)
+ ALTER TABLE FLOORS ADD PRIMARY KEY (ID)
+ ALTER TABLE LEAVES ADD PRIMARY KEY (ID)
+ ALTER TABLE LINEREMOVED ADD PRIMARY KEY (ID)
+ ALTER TABLE LOCATIONS ADD PRIMARY KEY (ID)
+ ALTER TABLE ORDERS ADD PRIMARY KEY (ID)
+ ALTER TABLE PAYMENTS ADD PRIMARY KEY (ID)
+ ALTER TABLE PEOPLE ADD PRIMARY KEY (ID)
+ ALTER TABLE PLACES ADD PRIMARY KEY (ID)
+ ALTER TABLE PRODUCTS ADD PRIMARY KEY (ID)
+ ALTER TABLE PRODUCTS_COM ADD PRIMARY KEY (ID,PRODUCT,PRODUCT2)
+ ALTER TABLE PRODUCTS_KIT ADD PRIMARY KEY (ID)
+ ALTER TABLE PROMOTIONS ADD PRIMARY KEY (ID)
+ ALTER TABLE RECEIPTS ADD PRIMARY KEY (ID)
+ ALTER TABLE RESERVATION_CUSTOMERS ADD PRIMARY KEY (ID)
+ ALTER TABLE RESERVATIONS ADD PRIMARY KEY (ID)
+ ALTER TABLE RESOURCES ADD PRIMARY KEY (ID)
+ ALTER TABLE ROLES ADD PRIMARY KEY (ID)
+ ALTER TABLE SHAREDTICKETS ADD PRIMARY KEY (ID)
+ ALTER TABLE SHIFT_BREAKS ADD PRIMARY KEY (ID)
+ ALTER TABLE SITEGUID ADD PRIMARY KEY (GUID)
+ ALTER TABLE SHIFTS ADD PRIMARY KEY (ID)
+ ALTER TABLE STOCKCHANGES ADD PRIMARY KEY (ID)
+ ALTER TABLE STOCKDIARY ADD PRIMARY KEY (ID)
+ ALTER TABLE STOCKLEVEL ADD PRIMARY KEY (ID)
+ ALTER TABLE TAXCATEGORIES ADD PRIMARY KEY (ID)
+ ALTER TABLE TAXCUSTCATEGORIES ADD PRIMARY KEY (ID)
+ ALTER TABLE TAXES ADD PRIMARY KEY (ID)
+ ALTER TABLE TAXLINES ADD PRIMARY KEY (ID)
+ ALTER TABLE THIRDPARTIES ADD PRIMARY KEY (ID)
+ ALTER TABLE TICKETLINES ADD PRIMARY KEY (TICKET, LINE)
+ ALTER TABLE VOUCHERS ADD PRIMARY KEY (VOUCHER)
+ ALTER TABLE TICKETS ADD PRIMARY KEY (ID)
+ ALTER TABLE DATABASECHANGELOG ADD PRIMARY KEY (ID)
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/liquibase/common/primarykeys_new.xml b/src-pos/uk/chromis/pos/liquibase/common/primarykeys_new.xml
new file mode 100644
index 00000000..ccd75737
--- /dev/null
+++ b/src-pos/uk/chromis/pos/liquibase/common/primarykeys_new.xml
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ALTER TABLE APPLICATIONS ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE ATTRIBUTE ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE ATTRIBUTEINSTANCE ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE ATTRIBUTESET ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE ATTRIBUTESETINSTANCE ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE ATTRIBUTEUSE ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE ATTRIBUTEVALUE ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE BREAKS ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE CATEGORIES ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE CLOSEDCASH ADD PRIMARY KEY (MONEY, SITEGUID)
+ ALTER TABLE CSVIMPORT ADD PRIMARY KEY (ID)
+ ALTER TABLE CUSTOMERS ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE DBPERMISSIONS ADD PRIMARY KEY (CLASSNAME, SITEGUID)
+ ALTER TABLE DRAWEROPENED ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE FLOORS ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE LEAVES ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE LINEREMOVED ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE LOCATIONS ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE ORDERS ADD PRIMARY KEY (ID)
+ ALTER TABLE PAYMENTS ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE PEOPLE ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE PLACES ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE PRODUCTS ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE PRODUCTS_COM ADD PRIMARY KEY (ID,PRODUCT,PRODUCT2, SITEGUID)
+ ALTER TABLE PRODUCTS_KIT ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE PROMOTIONS ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE RECEIPTS ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE RESERVATION_CUSTOMERS ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE RESERVATIONS ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE RESOURCES ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE ROLES ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE SHAREDTICKETS ADD PRIMARY KEY (ID)
+ ALTER TABLE SHIFT_BREAKS ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE SITEGUID ADD PRIMARY KEY (GUID)
+ ALTER TABLE SHIFTS ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE STOCKCHANGES ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE STOCKDIARY ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE STOCKLEVEL ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE TAXCATEGORIES ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE TAXCUSTCATEGORIES ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE TAXES ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE TAXLINES ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE THIRDPARTIES ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE TICKETLINES ADD PRIMARY KEY (TICKET, LINE, SITEGUID)
+ ALTER TABLE VOUCHERS ADD PRIMARY KEY (VOUCHER, SITEGUID)
+ ALTER TABLE TICKETS ADD PRIMARY KEY (ID, SITEGUID)
+ ALTER TABLE DATABASECHANGELOG ADD PRIMARY KEY (ID)
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/liquibase/common/sequences.xml b/src-pos/uk/chromis/pos/liquibase/common/sequences.xml
new file mode 100644
index 00000000..588ea785
--- /dev/null
+++ b/src-pos/uk/chromis/pos/liquibase/common/sequences.xml
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CREATE SEQUENCE TICKETSNUM START WITH 1
+ CREATE SEQUENCE TICKETSNUM_REFUND START WITH 1
+ CREATE SEQUENCE TICKETSNUM_PAYMENT START WITH 1
+ CREATE SEQUENCE PICKUP_NUMBER START WITH 1
+ CREATE SEQUENCE TICKETSNUM_INVOICE START WITH 1
+
+
+
+ CREATE TABLE TICKETSNUM (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1));
+ INSERT INTO TICKETSNUM VALUES (DEFAULT)
+ CREATE TABLE TICKETSNUM_REFUND (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1));
+ INSERT INTO TICKETSNUM_REFUND VALUES (DEFAULT)
+ CREATE TABLE TICKETSNUM_PAYMENT (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1));
+ INSERT INTO TICKETSNUM_PAYMENT VALUES (DEFAULT)
+ CREATE TABLE PICKUP_NUMBER (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1));
+ INSERT INTO PICKUP_NUMBER VALUES (DEFAULT)
+ CREATE TABLE TICKETSNUM_INVOICE (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1));
+ INSERT INTO TICKETSNUM_INVOICE VALUES (DEFAULT)
+
+
+
+ CREATE TABLE TICKETSNUM (ID INTEGER DEFAULT 0 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ INSERT INTO TICKETSNUM VALUES(1)
+ CREATE TABLE TICKETSNUM_REFUND (ID INTEGER DEFAULT 0 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ INSERT INTO TICKETSNUM_REFUND VALUES(1)
+ CREATE TABLE TICKETSNUM_PAYMENT (ID INTEGER DEFAULT 0 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ INSERT INTO TICKETSNUM_PAYMENT VALUES(1)
+ CREATE TABLE PICKUP_NUMBER (ID INTEGER DEFAULT 0 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ INSERT INTO PICKUP_NUMBER VALUES(1)
+ CREATE TABLE TICKETSNUM_INVOICE (ID INTEGER DEFAULT 0 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
+ INSERT INTO TICKETSNUM_INVOICE VALUES(1)
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/liquibase/common/setVersion.xml b/src-pos/uk/chromis/pos/liquibase/common/setVersion.xml
new file mode 100644
index 00000000..236efa10
--- /dev/null
+++ b/src-pos/uk/chromis/pos/liquibase/common/setVersion.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID='0'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/liquibase/create/chromis.xml b/src-pos/uk/chromis/pos/liquibase/create/chromis.xml
new file mode 100644
index 00000000..578d0d3b
--- /dev/null
+++ b/src-pos/uk/chromis/pos/liquibase/create/chromis.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/liquibase/create/createdb.xml b/src-pos/uk/chromis/pos/liquibase/create/createdb.xml
new file mode 100644
index 00000000..e8fef375
--- /dev/null
+++ b/src-pos/uk/chromis/pos/liquibase/create/createdb.xml
@@ -0,0 +1,1895 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CREATE TABLE PRODUCTS_KIT (
+ ID VARCHAR(255) NOT NULL,
+ PRODUCT VARCHAR(255) NOT NULL,
+ PRODUCT_KIT VARCHAR(255) NOT NULL,
+ QUANTITY DOUBLE NOT NULL);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SELECT COUNT(*) FROM ROLES
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SELECT COUNT(*) FROM PEOPLE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SELECT COUNT(*) FROM RESOURCES
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ INSERT INTO SHIFTS(ID, STARTSHIFT, ENDSHIFT, PPLID) VALUES ('0', '2013-12-02 00:00:00.001', '2013-12-02 00:00:00.002','0')
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/liquibase/createdb.xml b/src-pos/uk/chromis/pos/liquibase/createdb.xml
deleted file mode 100644
index 1cd323c1..00000000
--- a/src-pos/uk/chromis/pos/liquibase/createdb.xml
+++ /dev/null
@@ -1,2373 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SELECT COUNT(1) FROM ROLES
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SELECT COUNT(1) FROM PEOPLE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SELECT COUNT(1) FROM PEOPLE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SELECT COUNT(1) FROM RESOURCES
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SELECT COUNT(1) FROM PRODUCTS WHERE ID='xxx999_999xxx_x9x9x9'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SELECT COUNT(1) FROM PRODUCTS WHERE ID='xxx999_999xxx_x9x9x9'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- INSERT INTO SHIFTS(ID, STARTSHIFT, ENDSHIFT, PPLID) VALUES ('0', '2013-12-02 00:00:00.001', '2013-12-02 00:00:00.002','0')
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SELECT COUNT(1) FROM BREAKS
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SELECT COUNT(1) FROM BREAKS
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CREATE SEQUENCE TICKETSNUM START WITH 1
-
-
-
-
-
-
-
-
-
- CREATE SEQUENCE TICKETSNUM_REFUND START WITH 1
-
-
-
-
-
-
-
-
-
- CREATE SEQUENCE TICKETSNUM_PAYMENT START WITH 1
-
-
-
-
-
-
-
-
-
- CREATE SEQUENCE PICKUP_NUMBER START WITH 1
-
-
-
-
-
-
-
-
-
- CREATE TABLE TICKETSNUM (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1));
- INSERT INTO TICKETSNUM VALUES (DEFAULT)
-
-
-
-
-
-
-
-
-
- CREATE TABLE TICKETSNUM_REFUND (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1));
- INSERT INTO TICKETSNUM_REFUND VALUES (DEFAULT)
-
-
-
-
-
-
-
-
-
- CREATE TABLE TICKETSNUM_PAYMENT (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1));
- INSERT INTO TICKETSNUM_PAYMENT VALUES (DEFAULT)
-
-
-
-
-
-
-
-
-
- CREATE TABLE PICKUP_NUMBER (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1));
- INSERT INTO PICKUP_NUMBER VALUES (DEFAULT)
-
-
-
-
-
-
-
-
-
- CREATE TABLE TICKETSNUM (ID INTEGER DEFAULT 0 NOT NULL);
- INSERT INTO TICKETSNUM VALUES(1)
-
-
-
-
-
-
-
-
-
- CREATE TABLE TICKETSNUM_REFUND (ID INTEGER DEFAULT 0 NOT NULL);
- INSERT INTO TICKETSNUM_REFUND VALUES(1)
-
-
-
-
-
-
-
-
-
- CREATE TABLE TICKETSNUM_PAYMENT (ID INTEGER DEFAULT 0 NOT NULL);
- INSERT INTO TICKETSNUM_PAYMENT VALUES(1)
-
-
-
-
-
-
-
-
-
- CREATE TABLE PICKUP_NUMBER (ID INTEGER DEFAULT 0 NOT NULL);
- INSERT INTO PICKUP_NUMBER VALUES(1))
-
-
-
-
-
-
-
-
-
- CREATE TABLE TICKETSNUM (ID INTEGER DEFAULT 0 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- INSERT INTO TICKETSNUM VALUES(1)
-
-
-
-
-
-
-
-
-
- CREATE TABLE TICKETSNUM_REFUND (ID INTEGER DEFAULT 0 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- INSERT INTO TICKETSNUM_REFUND VALUES(1)
-
-
-
-
-
-
-
-
-
- CREATE TABLE TICKETSNUM_PAYMENT (ID INTEGER DEFAULT 0 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- INSERT INTO TICKETSNUM_PAYMENT VALUES(1)
-
-
-
-
-
-
-
-
-
- CREATE TABLE PICKUP_NUMBER (ID INTEGER DEFAULT 0 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- INSERT INTO PICKUP_NUMBER VALUES(1)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src-pos/uk/chromis/pos/liquibase/createfkslog.xml b/src-pos/uk/chromis/pos/liquibase/createfkslog.xml
deleted file mode 100644
index 982643a4..00000000
--- a/src-pos/uk/chromis/pos/liquibase/createfkslog.xml
+++ /dev/null
@@ -1,323 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src-pos/uk/chromis/pos/liquibase/migratelog.xml b/src-pos/uk/chromis/pos/liquibase/migratelog.xml
deleted file mode 100644
index 41219450..00000000
--- a/src-pos/uk/chromis/pos/liquibase/migratelog.xml
+++ /dev/null
@@ -1,1149 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CREATE SEQUENCE TICKETSNUM START WITH 1
-
-
-
- CREATE SEQUENCE TICKETSNUM_REFUND START WITH 1
-
-
-
- CREATE SEQUENCE TICKETSNUM_PAYMENT START WITH 1
-
-
-
- CREATE SEQUENCE PICKUP_NUMBER START WITH 1
-
-
-
- CREATE TABLE PICKUP_NUMBER (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1));
- INSERT INTO PICKUP_NUMBER VALUES (DEFAULT)
-
-
-
- CREATE TABLE TICKETSNUM (ID INTEGER DEFAULT 0 NOT NULL);
- INSERT INTO TICKETSNUM VALUES(1)
-
-
-
- CREATE TABLE TICKETSNUM_REFUND (ID INTEGER DEFAULT 0 NOT NULL);
- INSERT INTO TICKETSNUM_REFUND VALUES(1)
-
-
-
- CREATE TABLE TICKETSNUM_PAYMENT (ID INTEGER DEFAULT 0 NOT NULL);
- INSERT INTO TICKETSNUM_PAYMENT VALUES(1)
-
-
-
- CREATE TABLE PICKUP_NUMBER (ID INTEGER DEFAULT 0 NOT NULL);
- INSERT INTO PICKUP_NUMBER VALUES(1))
-
-
-
- CREATE TABLE TICKETSNUM (ID INTEGER DEFAULT 0 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- INSERT INTO TICKETSNUM VALUES(1)
-
-
-
- CREATE TABLE TICKETSNUM_REFUND (ID INTEGER DEFAULT 0 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- INSERT INTO TICKETSNUM_REFUND VALUES(1)
-
-
-
- CREATE TABLE TICKETSNUM_PAYMENT (ID INTEGER DEFAULT 0 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- INSERT INTO TICKETSNUM_PAYMENT VALUES(1)
-
-
-
- CREATE TABLE PICKUP_NUMBER (ID INTEGER DEFAULT 0 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- INSERT INTO PICKUP_NUMBER VALUES(1)
-
-
-
- CREATE SEQUENCE TICKETSNUM_INVOICE START WITH 1
-
-
-
- CREATE TABLE TICKETSNUM_INVOICE (ID INTEGER DEFAULT 0 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- INSERT INTO TICKETSNUM_INVOICE VALUES(1)
-
-
-
- CREATE TABLE TICKETSNUM_INVOICE (ID INTEGER DEFAULT 0 NOT NULL);
- INSERT INTO TICKETSNUM_INVOICE VALUES(1)
-
-
-
- CREATE TABLE TICKETSNUM_INVOICE (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1));
- INSERT INTO TICKETSNUM_INVOICE VALUES (DEFAULT)
-
-
- INSERT INTO DATABASECHANGELOG (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, EXECTYPE, MD5SUM, DESCRIPTION, LIQUIBASE)
- VALUES (
- 'derby10.10.20',
- 'Chromis POS',
- 'uk/chromis/pos/liquibase/udpdatecreatedb.xml',
- '2015-10-23 22:43:33.487',
- 0,
- 'EXECUTED',
- '7:d41d8cd98f00b204e9800998ecf8427e',
- 'empty',
- '3.5.0-Chromis Mod')
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src-pos/uk/chromis/pos/liquibase/refundsscripts.xml b/src-pos/uk/chromis/pos/liquibase/refundsscripts.xml
deleted file mode 100644
index 57499cce..00000000
--- a/src-pos/uk/chromis/pos/liquibase/refundsscripts.xml
+++ /dev/null
@@ -1,124 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src-pos/uk/chromis/pos/liquibase/sqlmigratelog.xml b/src-pos/uk/chromis/pos/liquibase/sqlmigratelog.xml
deleted file mode 100644
index 4b2a0ebe..00000000
--- a/src-pos/uk/chromis/pos/liquibase/sqlmigratelog.xml
+++ /dev/null
@@ -1,1428 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ALTER TABLE LINEREMOVED ADD COLUMN REMOVEDDATE TIMESTAMP
-
-
-
-
-
-
-
-
-
- ALTER TABLE LINEREMOVED ADD COLUMN REMOVEDDATE TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CREATE SEQUENCE TICKETSNUM START WITH 1
-
-
-
-
-
-
-
-
-
- CREATE SEQUENCE TICKETSNUM_REFUND START WITH 1
-
-
-
-
-
-
-
-
-
- CREATE SEQUENCE TICKETSNUM_PAYMENT START WITH 1
-
-
-
-
-
-
-
-
-
- CREATE SEQUENCE PICKUP_NUMBER START WITH 1
-
-
-
-
-
-
-
-
-
- CREATE TABLE TICKETSNUM (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1));
- INSERT INTO TICKETSNUM VALUES (DEFAULT)
-
-
-
-
-
-
-
-
-
- CREATE TABLE TICKETSNUM_REFUND (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1));
- INSERT INTO TICKETSNUM_REFUND VALUES (DEFAULT)
-
-
-
-
-
-
-
-
-
- CREATE TABLE TICKETSNUM_PAYMENT (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1));
- INSERT INTO TICKETSNUM_PAYMENT VALUES (DEFAULT)
-
-
-
-
-
-
-
-
-
- CREATE TABLE PICKUP_NUMBER (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1));
- INSERT INTO PICKUP_NUMBER VALUES (DEFAULT)
-
-
-
-
-
-
-
-
-
- CREATE TABLE TICKETSNUM (ID INTEGER DEFAULT 0 NOT NULL);
- INSERT INTO TICKETSNUM VALUES(1)
-
-
-
-
-
-
-
-
-
- CREATE TABLE TICKETSNUM_REFUND (ID INTEGER DEFAULT 0 NOT NULL);
- INSERT INTO TICKETSNUM_REFUND VALUES(1)
-
-
-
-
-
-
-
-
-
- CREATE TABLE TICKETSNUM_PAYMENT (ID INTEGER DEFAULT 0 NOT NULL);
- INSERT INTO TICKETSNUM_PAYMENT VALUES(1)
-
-
-
-
-
-
-
-
-
- CREATE TABLE PICKUP_NUMBER (ID INTEGER DEFAULT 0 NOT NULL);
- INSERT INTO PICKUP_NUMBER VALUES(1))
-
-
-
-
-
-
-
-
-
- CREATE TABLE TICKETSNUM (ID INTEGER DEFAULT 0 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- INSERT INTO TICKETSNUM VALUES(1)
-
-
-
-
-
-
-
-
-
- CREATE TABLE TICKETSNUM_REFUND (ID INTEGER DEFAULT 0 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- INSERT INTO TICKETSNUM_REFUND VALUES(1)
-
-
-
-
-
-
-
-
-
- CREATE TABLE TICKETSNUM_PAYMENT (ID INTEGER DEFAULT 0 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- INSERT INTO TICKETSNUM_PAYMENT VALUES(1)
-
-
-
-
-
-
-
-
-
- CREATE TABLE PICKUP_NUMBER (ID INTEGER DEFAULT 0 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- INSERT INTO PICKUP_NUMBER VALUES(1)
-
-
-
-
diff --git a/src-pos/uk/chromis/pos/liquibase/updatechromis.xml b/src-pos/uk/chromis/pos/liquibase/updatechromis.xml
deleted file mode 100644
index 8828c10c..00000000
--- a/src-pos/uk/chromis/pos/liquibase/updatechromis.xml
+++ /dev/null
@@ -1,1109 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SELECT COUNT(*) FROM DATABASECHANGELOG WHERE ID='derby10.10.20'
-
-
-
-
-
-
-
-
- UPDATE PEOPLE SET VISIBLE='TRUE' WHERE JDL_TMP=1;
-PRODUCTS_CAT
-
-
-
-
-
-
-
- SELECT COUNT(*) FROM DATABASECHANGELOG WHERE ID='derby10.10.20'
-
-
-
-
-
-
-
-
-
- UPDATE BREAKS SET VISIBLE='TRUE' WHERE JDL_TMP=1;
- UPDATE BREAKS SET VISIBLE='FALSE' WHERE JDL_TMP=0
-
-
-
-
-
-
-
- SELECT COUNT(*) FROM DATABASECHANGELOG WHERE ID='derby10.10.20'
-
-
-
-
-
-
-
-
- UPDATE CUSTOMERS SET VISIBLE='TRUE' WHERE JDL_TMP=1;
- UPDATE CUSTOMERS SET VISIBLE='FALSE' WHERE JDL_TMP=0
-
-
-
-
-
-
-
- SELECT COUNT(*) FROM DATABASECHANGELOG WHERE ID='derby10.10.20'
-
-
-
-
-
-
-
-
- UPDATE MOORERS SET POWER='TRUE' WHERE JDL_TMP=1;
- UPDATE MOORERS SET POWER='FALSE' WHERE JDL_TMP=0
-
-
-
-
-
-
-
- SELECT COUNT(*) FROM DATABASECHANGELOG WHERE ID='derby10.10.20'
-
-
-
-
-
-
-
-
- UPDATE PLACES SET TABLEMOVED='TRUE' WHERE JDL_TMP=1;
- UPDATE PLACES SET TABLEMOVED='FALSE' WHERE JDL_TMP=0
-
-
-
-
-
-
-
- SELECT COUNT(*) FROM DATABASECHANGELOG WHERE ID='derby10.10.20'
-
-
-
-
-
-
-
-
- UPDATE CATEGORIES SET CATSHOWNAME='TRUE' WHERE JDL_TMP=1;
- UPDATE CATEGORIES SET CATSHOWNAME='FALSE' WHERE JDL_TMP=0
-
-
-
-
-
-
-
- SELECT COUNT(*) FROM DATABASECHANGELOG WHERE ID='derby10.10.20'
-
-
-
-
-
-
-
-
- UPDATE TAXES SET RATECASCADE='TRUE' WHERE JDL_TMP=1;
- UPDATE TAXES SET RATECASCADE='FALSE' WHERE JDL_TMP=0
-
-
-
-
-
-
-
- SELECT COUNT(*) FROM DATABASECHANGELOG WHERE ID='derby10.10.20'
-
-
-
-
-
-
-
-
- UPDATE RESERVATIONS SET ISDONE='TRUE' WHERE JDL_TMP=1;
- UPDATE RESERVATIONS SET ISDONE='FALSE' WHERE JDL_TMP=0
-
-
-
-
-
-
-
-
- SELECT COUNT(*) FROM DATABASECHANGELOG WHERE ID='derby10.10.20'
-
-
-
-
-
-
-
-
- UPDATE PRODUCTS SET ISCOM='TRUE' WHERE JDL_TMP=1;
- UPDATE PRODUCTS SET ISCOM='FALSE' WHERE JDL_TMP=0
-
-
-
-
-
-
-
-
-
-
- UPDATE PRODUCTS SET ISSCALE='TRUE' WHERE JDL_TMP=1;
- UPDATE PRODUCTS SET ISSCALE='FALSE' WHERE JDL_TMP=0
-
-
-
-
-
-
-
-
-
-
- UPDATE PRODUCTS SET ISKITCHEN='TRUE' WHERE JDL_TMP=1;
- UPDATE PRODUCTS SET ISKITCHEN='FALSE' WHERE JDL_TMP=0
-
-
-
-
-
-
-
-
-
-
- UPDATE PRODUCTS SET PRINTKB='TRUE' WHERE JDL_TMP=1;
- UPDATE PRODUCTS SET PRINTKB='FALSE' WHERE JDL_TMP=0
-
-
-
-
-
-
-
-
-
-
- UPDATE PRODUCTS SET SENDSTATUS='TRUE' WHERE JDL_TMP=1;
- UPDATE PRODUCTS SET SENDSTATUS='FALSE' WHERE JDL_TMP=0
-
-
-
-
-
-
-
-
-
-
- UPDATE PRODUCTS SET ISSERVICE='TRUE' WHERE JDL_TMP=1;
- UPDATE PRODUCTS SET ISSERVICE='FALSE' WHERE JDL_TMP=0
-
-
-
-
-
-
-
-
-
-
- UPDATE PRODUCTS SET ISVERPATRIB='TRUE' WHERE JDL_TMP=1;
- UPDATE PRODUCTS SET ISVERPATRIB='FALSE' WHERE JDL_TMP=0
-
-
-
-
-
-
-
-
-
-
- UPDATE PRODUCTS SET ISVPRICE='TRUE' WHERE JDL_TMP=1;
- UPDATE PRODUCTS SET ISVPRICE='FALSE' WHERE JDL_TMP=0
-
-
-
-
-
-
-
-
-
-
- UPDATE PRODUCTS SET WARRANTY='TRUE' WHERE JDL_TMP=1;
- UPDATE PRODUCTS SET WARRANTY='FALSE' WHERE JDL_TMP=0
-
-
-
-
-
-
-
-
-
-
- UPDATE PRODUCTS SET CANDISCOUNT='TRUE' WHERE JDL_TMP=1;
- UPDATE PRODUCTS SET CANDISCOUNT='FALSE' WHERE JDL_TMP=0
-
-
-
-
-
-
-
-
-
-
- UPDATE PRODUCTS SET ALWAYSAVAILABLE='TRUE' WHERE JDL_TMP=1;
- UPDATE PRODUCTS SET ALWAYSAVAILABLE='FALSE' WHERE JDL_TMP=0
-
-
-
-
-
- INSERT INTO DATABASECHANGELOG (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, EXECTYPE, MD5SUM, DESCRIPTION, LIQUIBASE)
- VALUES (
- 'derby10.10.20',
- 'Chromis POS',
- 'uk/chromis/pos/liquibase/udpdatecreatedb.xml',
- '2015-10-23 22:43:33.487',
- 0,
- 'EXECUTED',
- '7:d41d8cd98f00b204e9800998ecf8427e',
- 'empty',
- '3.5.0-Chromis Mod')
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- CREATE SEQUENCE TICKETSNUM_INVOICE START WITH 1
-
-
-
- CREATE TABLE TICKETSNUM_INVOICE (ID INTEGER DEFAULT 0 NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- INSERT INTO TICKETSNUM_INVOICE VALUES(1)
-
-
-
- CREATE TABLE TICKETSNUM_INVOICE (ID INTEGER DEFAULT 0 NOT NULL);
- INSERT INTO TICKETSNUM_INVOICE VALUES(1)
-
-
-
- CREATE TABLE TICKETSNUM_INVOICE (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH 1));
- INSERT INTO TICKETSNUM_INVOICE VALUES (DEFAULT)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- UPDATE PRODUCTS SET ISCATALOG = 0;
- UPDATE PRODUCTS P, PRODUCTS_CAT C SET P.ISCATALOG = 1, P.CATORDER = C.CATORDER WHERE P.ID = C.PRODUCT;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SELECT COUNT(1) FROM RESOURCES WHERE ID='63'
-
-
-
-
-
-
-
-
-
-
-
-
-
- SELECT COUNT(1) FROM RESOURCES WHERE NAME = 'img.reportlogo'
-
-
-
-
-
-
-
-
-
-
-
-
- SELECT COUNT(1) FROM RESOURCES WHERE NAME = 'sql.ActionStockChanges'
-
-
-
-
-
-
-
-
-
-
-
-
-
- NAME='sql.ActionStockChanges'
-
-
-
-
-
-
- NAME='Menu.Root'
-
-
-
-
-
-
- NAME='sql.ActionStockChanges'
-
-
-
-
-
- SELECT COUNT(1) FROM RESOURCES WHERE NAME = 'help.promotion'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SELECT COUNT(1) FROM DBPERMISSIONS WHERE DESCRIPTION = '##label.description119'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SELECT COUNT(0) FROM DBPERMISSIONS WHERE DISPLAYNAME='##label.displayname117'
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ALTER TABLE APPLICATIONS ENGINE=InnoDB
- ALTER TABLE ATTRIBUTE ENGINE=InnoDB
- ALTER TABLE ATTRIBUTEINSTANCE ENGINE=InnoDB
- ALTER TABLE ATTRIBUTESET ENGINE=InnoDB
- ALTER TABLE ATTRIBUTESETINSTANCE ENGINE=InnoDB
- ALTER TABLE ATTRIBUTEUSE ENGINE=InnoDB
- ALTER TABLE ATTRIBUTEVALUE ENGINE=InnoDB
- ALTER TABLE BREAKS ENGINE=InnoDB
- ALTER TABLE CATEGORIES ENGINE=InnoDB
- ALTER TABLE CLOSEDCASH ENGINE=InnoDB
- ALTER TABLE CSVIMPORT ENGINE=InnoDB
- ALTER TABLE CUSTOMERS ENGINE=InnoDB
- ALTER TABLE DATABASECHANGELOG ENGINE=InnoDB
- ALTER TABLE DATABASECHANGELOGLOCK ENGINE=InnoDB
- ALTER TABLE DBPERMISSIONS ENGINE=InnoDB
- ALTER TABLE DRAWEROPENED ENGINE=InnoDB
- ALTER TABLE FLOORS ENGINE=InnoDB
- ALTER TABLE LEAVES ENGINE=InnoDB
- ALTER TABLE LINEREMOVED ENGINE=InnoDB
- ALTER TABLE LOCATIONS ENGINE=InnoDB
- ALTER TABLE MOORERS ENGINE=InnoDB
- ALTER TABLE PAYMENTS ENGINE=InnoDB
- ALTER TABLE PEOPLE ENGINE=InnoDB
- ALTER TABLE PICKUP_NUMBER ENGINE=InnoDB
- ALTER TABLE PLACES ENGINE=InnoDB
- ALTER TABLE PRODUCTS ENGINE=InnoDB
- ALTER TABLE PRODUCTS_CAT ENGINE=InnoDB
- ALTER TABLE PRODUCTS_COM ENGINE=InnoDB
- ALTER TABLE RECEIPTS ENGINE=InnoDB
- ALTER TABLE RESERVATION_CUSTOMERS ENGINE=InnoDB
- ALTER TABLE RESERVATIONS ENGINE=InnoDB
- ALTER TABLE RESOURCES ENGINE=InnoDB
- ALTER TABLE ROLES ENGINE=InnoDB
- ALTER TABLE SHAREDTICKETS ENGINE=InnoDB
- ALTER TABLE SHIFT_BREAKS ENGINE=InnoDB
- ALTER TABLE SHIFTS ENGINE=InnoDB
- ALTER TABLE STOCKCURRENT ENGINE=InnoDB
- ALTER TABLE STOCKDIARY ENGINE=InnoDB
- ALTER TABLE STOCKLEVEL ENGINE=InnoDB
- ALTER TABLE TAXCATEGORIES ENGINE=InnoDB
- ALTER TABLE TAXCUSTCATEGORIES ENGINE=InnoDB
- ALTER TABLE TAXES ENGINE=InnoDB
- ALTER TABLE TAXLINES ENGINE=InnoDB
- ALTER TABLE THIRDPARTIES ENGINE=InnoDB
- ALTER TABLE TICKETLINES ENGINE=InnoDB
- ALTER TABLE TICKETS ENGINE=InnoDB
- ALTER TABLE TICKETSNUM ENGINE=InnoDB
- ALTER TABLE TICKETSNUM_PAYMENT ENGINE=InnoDB
- ALTER TABLE TICKETSNUM_REFUND ENGINE=InnoDB
-
-
-
- ALTER TABLE STOCKCHANGES ENGINE=InnoDB
- ALTER TABLE ORDERS ENGINE=InnoDB
- ALTER TABLE VOUCHERS ENGINE=InnoDB
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src-pos/uk/chromis/pos/liquibase/updatechromisbeta.xml b/src-pos/uk/chromis/pos/liquibase/updatechromisbeta.xml
deleted file mode 100644
index 4403fd7d..00000000
--- a/src-pos/uk/chromis/pos/liquibase/updatechromisbeta.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src-pos/uk/chromis/pos/liquibase/updatesystem.xml b/src-pos/uk/chromis/pos/liquibase/updatesystem.xml
deleted file mode 100644
index 6140ca1e..00000000
--- a/src-pos/uk/chromis/pos/liquibase/updatesystem.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src-pos/uk/chromis/pos/liquibase/upgrade/data.xml b/src-pos/uk/chromis/pos/liquibase/upgrade/data.xml
new file mode 100644
index 00000000..822dff1b
--- /dev/null
+++ b/src-pos/uk/chromis/pos/liquibase/upgrade/data.xml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID='0'
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/liquibase/upgrade/newkeys.xml b/src-pos/uk/chromis/pos/liquibase/upgrade/newkeys.xml
new file mode 100644
index 00000000..bce7249a
--- /dev/null
+++ b/src-pos/uk/chromis/pos/liquibase/upgrade/newkeys.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/liquibase/upgrade/systemupdate.xml b/src-pos/uk/chromis/pos/liquibase/upgrade/systemupdate.xml
new file mode 100644
index 00000000..fff9bc08
--- /dev/null
+++ b/src-pos/uk/chromis/pos/liquibase/upgrade/systemupdate.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/liquibase/upgrade/tables.xml b/src-pos/uk/chromis/pos/liquibase/upgrade/tables.xml
new file mode 100644
index 00000000..436e3b31
--- /dev/null
+++ b/src-pos/uk/chromis/pos/liquibase/upgrade/tables.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/liquibase/upgradeorig/checkforeignkeys.xml b/src-pos/uk/chromis/pos/liquibase/upgradeorig/checkforeignkeys.xml
new file mode 100644
index 00000000..3f0a67ed
--- /dev/null
+++ b/src-pos/uk/chromis/pos/liquibase/upgradeorig/checkforeignkeys.xml
@@ -0,0 +1,417 @@
+
+
+
+
+
+
+
+
+
+
+
+ ALTER TABLE PEOPLE ADD CONSTRAINT PEOPLE_FK_1 FOREIGN KEY (ROLE) REFERENCES ROLES(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE CUSTOMERS ADD CONSTRAINT CUSTOMERS_TAXCAT FOREIGN KEY (TAXCATEGORY) REFERENCES TAXCUSTCATEGORIES(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE CATEGORIES ADD CONSTRAINT CATEGORIES_FK_1 FOREIGN KEY (PARENTID) REFERENCES CATEGORIES(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE TAXES ADD CONSTRAINT TAXES_CAT_FK FOREIGN KEY (CATEGORY) REFERENCES TAXCATEGORIES(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE TAXES ADD CONSTRAINT TAXES_CUSTCAT_FK FOREIGN KEY (CUSTCATEGORY) REFERENCES TAXCUSTCATEGORIES(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE TAXES ADD CONSTRAINT TAXES_TAXES_FK FOREIGN KEY (PARENTID) REFERENCES TAXES(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE ATTRIBUTEVALUE ADD CONSTRAINT ATTVAL_ATT FOREIGN KEY (ATTRIBUTE_ID) REFERENCES ATTRIBUTE(ID) ON DELETE CASCADE
+
+
+
+
+
+
+
+
+ ALTER TABLE ATTRIBUTEUSE ADD CONSTRAINT ATTUSE_SET FOREIGN KEY (ATTRIBUTESET_ID) REFERENCES ATTRIBUTESET(ID) ON DELETE CASCADE
+
+
+
+
+
+
+
+
+ ALTER TABLE ATTRIBUTEUSE ADD CONSTRAINT ATTUSE_ATT FOREIGN KEY (ATTRIBUTE_ID) REFERENCES ATTRIBUTE(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE ATTRIBUTESETINSTANCE ADD CONSTRAINT ATTSETINST_SET FOREIGN KEY (ATTRIBUTESET_ID) REFERENCES ATTRIBUTESET(ID) ON DELETE CASCADE
+
+
+
+
+
+
+
+
+ ALTER TABLE ATTRIBUTEINSTANCE ADD CONSTRAINT ATTINST_SET FOREIGN KEY (ATTRIBUTESETINSTANCE_ID) REFERENCES ATTRIBUTESETINSTANCE(ID) ON DELETE CASCADE
+
+
+
+
+
+
+
+
+ ALTER TABLE ATTRIBUTEINSTANCE ADD CONSTRAINT ATTINST_ATT FOREIGN KEY (ATTRIBUTE_ID) REFERENCES ATTRIBUTE(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE PRODUCTS ADD CONSTRAINT PRODUCTS_FK_1 FOREIGN KEY (CATEGORY) REFERENCES CATEGORIES(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE PRODUCTS ADD CONSTRAINT PRODUCTS_TAXCAT_FK FOREIGN KEY (TAXCAT) REFERENCES TAXCATEGORIES(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE PRODUCTS ADD CONSTRAINT PRODUCTS_ATTRSET_FK FOREIGN KEY (ATTRIBUTESET_ID) REFERENCES ATTRIBUTESET(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE PRODUCTS_COM ADD CONSTRAINT PRODUCTS_COM_FK_1 FOREIGN KEY (PRODUCT) REFERENCES PRODUCTS(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE PRODUCTS_COM ADD CONSTRAINT PRODUCTS_COM_FK_2 FOREIGN KEY (PRODUCT2) REFERENCES PRODUCTS(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE STOCKDIARY ADD CONSTRAINT STOCKDIARY_FK_1 FOREIGN KEY (PRODUCT) REFERENCES PRODUCTS(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE STOCKDIARY ADD CONSTRAINT STOCKDIARY_ATTSETINST FOREIGN KEY (ATTRIBUTESETINSTANCE_ID) REFERENCES ATTRIBUTESETINSTANCE(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE STOCKDIARY ADD CONSTRAINT STOCKDIARY_FK_2 FOREIGN KEY (LOCATION) REFERENCES LOCATIONS(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE STOCKLEVEL ADD CONSTRAINT STOCKLEVEL_PRODUCT FOREIGN KEY (PRODUCT) REFERENCES PRODUCTS(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE STOCKLEVEL ADD CONSTRAINT STOCKLEVEL_LOCATION FOREIGN KEY (LOCATION) REFERENCES LOCATIONS(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE STOCKCURRENT ADD CONSTRAINT STOCKCURRENT_FK_1 FOREIGN KEY (PRODUCT) REFERENCES PRODUCTS(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE STOCKCURRENT ADD CONSTRAINT STOCKCURRENT_ATTSETINST FOREIGN KEY (ATTRIBUTESETINSTANCE_ID) REFERENCES ATTRIBUTESETINSTANCE(ID);
+
+
+
+
+
+
+
+
+ ALTER TABLE STOCKCURRENT ADD CONSTRAINT STOCKCURRENT_FK_2 FOREIGN KEY (LOCATION) REFERENCES LOCATIONS(ID);
+
+
+
+
+
+
+
+
+ ALTER TABLE RECEIPTS ADD CONSTRAINT RECEIPTS_FK_MONEY FOREIGN KEY (MONEY) REFERENCES CLOSEDCASH(MONEY)
+
+
+
+
+
+
+
+
+ ALTER TABLE TICKETS ADD CONSTRAINT TICKETS_FK_ID FOREIGN KEY (ID) REFERENCES RECEIPTS(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE TICKETS ADD CONSTRAINT TICKETS_FK_2 FOREIGN KEY (PERSON) REFERENCES PEOPLE(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE TICKETS ADD CONSTRAINT TICKETS_CUSTOMERS_FK FOREIGN KEY (CUSTOMER) REFERENCES CUSTOMERS(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE TICKETLINES ADD CONSTRAINT TICKETLINES_FK_TICKET FOREIGN KEY (TICKET) REFERENCES TICKETS(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE TICKETLINES ADD CONSTRAINT TICKETLINES_FK_2 FOREIGN KEY (PRODUCT) REFERENCES PRODUCTS(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE TICKETLINES ADD CONSTRAINT TICKETLINES_ATTSETINST FOREIGN KEY (ATTRIBUTESETINSTANCE_ID) REFERENCES ATTRIBUTESETINSTANCE(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE TICKETLINES ADD CONSTRAINT TICKETLINES_FK_3 FOREIGN KEY (TAXID) REFERENCES TAXES(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE PAYMENTS ADD CONSTRAINT PAYMENTS_FK_RECEIPT FOREIGN KEY (RECEIPT) REFERENCES RECEIPTS(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE TAXLINES ADD CONSTRAINT TAXLINES_TAX FOREIGN KEY (TAXID) REFERENCES TAXES(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE TAXLINES ADD CONSTRAINT TAXLINES_RECEIPT FOREIGN KEY (RECEIPT) REFERENCES RECEIPTS(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE PLACES ADD CONSTRAINT PLACES_FK_1 FOREIGN KEY (FLOOR) REFERENCES FLOORS(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE RESERVATION_CUSTOMERS ADD CONSTRAINT RES_CUST_FK_1 FOREIGN KEY (ID) REFERENCES RESERVATIONS(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE RESERVATION_CUSTOMERS ADD CONSTRAINT RES_CUST_FK_2 FOREIGN KEY (CUSTOMER) REFERENCES CUSTOMERS(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE LEAVES ADD CONSTRAINT LEAVES_PPLID FOREIGN KEY (PPLID) REFERENCES PEOPLE(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE SHIFT_BREAKS ADD CONSTRAINT SHIFT_BREAKS_BREAKID FOREIGN KEY (BREAKID) REFERENCES BREAKS(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE SHIFT_BREAKS ADD CONSTRAINT SHIFT_BREAKS_SHIFTID FOREIGN KEY (SHIFTID) REFERENCES SHIFTS(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE LEAVES ADD CONSTRAINT LEAVES_PPLID FOREIGN KEY (PPLID) REFERENCES PEOPLE(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE PRODUCTS_KIT ADD CONSTRAINT PRODUCTS_KIT_FK_1 FOREIGN KEY (PRODUCT) REFERENCES PRODUCTS(ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE PRODUCTS_KIT ADD CONSTRAINT PRODUCTS_KIT_FK_2 FOREIGN KEY (PRODUCT_KIT) REFERENCES PRODUCTS(ID)
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/liquibase/upgradeorig/checkindexes.xml b/src-pos/uk/chromis/pos/liquibase/upgradeorig/checkindexes.xml
new file mode 100644
index 00000000..908ce4e7
--- /dev/null
+++ b/src-pos/uk/chromis/pos/liquibase/upgradeorig/checkindexes.xml
@@ -0,0 +1,670 @@
+
+
+
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX CLOSEDCASH_INX_SEQ ON CLOSEDCASH (HOST, HOSTSEQUENCE)
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX THIRDPARTIES_CIF_INX ON THIRDPARTIES (CIF)
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX THIRDPARTIES_NAME_INX ON THIRDPARTIES (NAME)
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX PRODUCTS_INX_0 ON PRODUCTS (REFERENCE)
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX PRODUCTS_INX_1 ON PRODUCTS (CODE)
+
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX PKIT_INX_PROD ON PRODUCTS_KIT (PRODUCT,PRODUCT_KIT)
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX RESOURCES_NAME_INX ON RESOURCES (NAME)
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX ROLES_NAME_INX ON ROLES (NAME)
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX STOCKCURRENT_INX ON STOCKCURRENT (LOCATION,PRODUCT,ATTRIBUTESETINSTANCE_ID)
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX TAXCAT_NAME_INX ON TAXCATEGORIES (NAME)
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX TAXCUSTCAT_NAME_INX ON TAXCUSTCATEGORIES (NAME)
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX TAXES_NAME_INX ON TAXES (NAME)
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX PLACES_NAME_INX ON PLACES (NAME)
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX PEOPLE_NAME_INX ON PEOPLE (NAME)
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX LOCATIONS_NAME_INX ON LOCATIONS (NAME)
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX FLOORS_NAME_INX ON FLOORS (NAME)
+
+
+
+
+
+
+
+
+ CREATE INDEX DBPERMISSIONS_CLASSNAME_INX ON DBPERMISSIONS (CLASSNAME)
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX CUSTOMERS_SKEY_INX ON CUSTOMERS (SEARCHKEY)
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX CATEGORIES_NAME_INX ON CATEGORIES (NAME)
+
+
+
+
+
+
+
+
+ CREATE INDEX ATTSETINST_SET ON ATTRIBUTESETINSTANCE (ATTRIBUTESET_ID)
+
+
+
+
+
+
+
+
+ CREATE INDEX ATTUSE_ATT ON ATTRIBUTEUSE (ATTRIBUTE_ID)
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX ATTUSE_LINE ON ATTRIBUTEUSE (ATTRIBUTESET_ID, LINENO)
+
+
+
+
+
+
+
+
+ CREATE INDEX ATTVAL_ATT ON ATTRIBUTEVALUE (ATTRIBUTE_ID)
+
+
+
+
+
+
+
+
+ CREATE INDEX CLOSEDCASH_INX_1 ON CLOSEDCASH (DATESTART)
+
+
+
+
+
+
+
+
+ CREATE INDEX PLACES_FK_1 ON PLACES (FLOOR)
+
+
+
+
+
+
+
+
+ CREATE INDEX RECEIPTS_FK_MONEY ON RECEIPTS (MONEY)
+
+
+
+
+
+
+
+
+ CREATE INDEX RECEIPTS_INX_1 ON RECEIPTS (DATENEW)
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX RESERVATIONS_INX_1 ON RESERVATIONS (DATENEW)
+
+
+
+
+
+
+
+
+ CREATE INDEX ATTINST_ATT ON ATTRIBUTEINSTANCE (ATTRIBUTE_ID)
+
+
+
+
+
+
+
+
+ CREATE INDEX ATTINST_SET ON ATTRIBUTEINSTANCE (ATTRIBUTESETINSTANCE_ID)
+
+
+
+
+
+
+
+
+ CREATE INDEX CUSTOMERS_CARD_INX ON CUSTOMERS (CARD)
+
+
+
+
+
+
+
+
+ CREATE INDEX CUSTOMERS_NAME_INX ON CUSTOMERS (NAME)
+
+
+
+
+
+
+
+
+ CREATE INDEX CUSTOMERS_TAXCAT ON CUSTOMERS (TAXCATEGORY)
+
+
+
+
+
+
+
+
+ CREATE INDEX CUSTOMERS_TAXID_INX ON CUSTOMERS (TAXID)
+
+
+
+
+
+
+
+
+ CREATE INDEX PAYMENTS_FK_RECEIPT ON PAYMENTS (RECEIPT)
+
+
+
+
+
+
+
+
+ CREATE INDEX PAYMENTS_INX_1 ON PAYMENTS (PAYMENT)
+
+
+
+
+
+
+
+
+ CREATE INDEX PEOPLE_CARD_INX ON PEOPLE (CARD)
+
+
+
+
+
+
+
+
+ CREATE INDEX PEOPLE_FK_1 ON PEOPLE (ROLE)
+
+
+
+
+
+
+
+
+ CREATE INDEX RES_CUST_FK_2 ON RESERVATION_CUSTOMERS (CUSTOMER)
+
+
+
+
+
+
+
+
+ CREATE INDEX SHIFT_BREAKS_BREAKID ON SHIFT_BREAKS (BREAKID)
+
+
+
+
+
+
+
+
+ CREATE INDEX SHIFT_BREAKS_SHIFTID ON SHIFT_BREAKS (SHIFTID)
+
+
+
+
+
+
+
+
+ CREATE INDEX TICKETS_CUSTOMERS_FK ON TICKETS (CUSTOMER)
+
+
+
+
+
+
+
+
+ CREATE INDEX TICKETS_FK_2 ON TICKETS (PERSON)
+
+
+
+
+
+
+
+
+ CREATE INDEX TICKETS_TICKETID ON TICKETS (TICKETTYPE, TICKETID)
+
+
+
+
+
+
+
+
+ CREATE INDEX LEAVES_PPLID ON LEAVES (PPLID)
+
+
+
+
+
+
+
+
+ CREATE INDEX CATEGORIES_FK_1 ON CATEGORIES (PARENTID)
+
+
+
+
+
+
+
+
+ CREATE INDEX FK_PRODUCT_PROMOTIONID ON PRODUCTS (PROMOTIONID)
+
+
+
+
+
+
+
+
+ CREATE INDEX PRODUCTS_ATTRSET_FK ON PRODUCTS (ATTRIBUTESET_ID)
+
+
+
+
+
+
+
+
+ CREATE INDEX PRODUCTS_FK_1 ON PRODUCTS (CATEGORY)
+
+
+
+
+
+
+
+
+ CREATE INDEX PRODUCTS_PACKPRODUCT_FK ON PRODUCTS (PACKPRODUCT)
+
+
+
+
+
+
+
+
+ CREATE INDEX PRODUCTS_TAXCAT_FK ON PRODUCTS (TAXCAT)
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX PCOM_INX_PROD ON PRODUCTS_COM (PRODUCT, PRODUCT2)
+
+
+
+
+
+
+
+
+ CREATE INDEX PRODUCTS_COM_FK_2 ON PRODUCTS_COM (PRODUCT2)
+
+
+
+
+
+
+
+
+ CREATE INDEX PRODUCTS_KIT_FK_2 ON PRODUCTS_KIT (PRODUCT_KIT)
+
+
+
+
+
+
+
+
+ CREATE INDEX STOCKCURRENT_ATTSETINST ON STOCKCURRENT (ATTRIBUTESETINSTANCE_ID)
+
+
+
+
+
+
+
+
+ CREATE INDEX STOCKCURRENT_FK_1 ON STOCKCURRENT (PRODUCT)
+
+
+
+
+
+
+
+
+ CREATE INDEX STOCKDIARY_ATTSETINST ON STOCKDIARY (ATTRIBUTESETINSTANCE_ID)
+
+
+
+
+
+
+
+
+ CREATE INDEX STOCKDIARY_FK_1 ON STOCKDIARY (PRODUCT)
+
+
+
+
+
+
+
+
+ CREATE INDEX STOCKDIARY_FK_2 ON STOCKDIARY (LOCATION)
+
+
+
+
+
+
+
+
+ CREATE INDEX STOCKDIARY_INX_1 ON STOCKDIARY (DATENEW)
+
+
+
+
+
+
+
+
+ CREATE INDEX STOCKLEVEL_LOCATION ON STOCKLEVEL (LOCATION)
+
+
+
+
+
+
+
+
+ CREATE INDEX STOCKLEVEL_PRODUCT ON STOCKLEVEL (PRODUCT)
+
+
+
+
+
+
+
+
+ CREATE INDEX TAXES_CAT_FK ON TAXES (CATEGORY)
+
+
+
+
+
+
+
+
+ CREATE INDEX TAXES_CUSTCAT_FK ON TAXES (CUSTCATEGORY)
+
+
+
+
+
+
+
+
+ CREATE INDEX TAXES_TAXES_FK ON TAXES (PARENTID)
+
+
+
+
+
+
+
+
+ CREATE INDEX TAXLINES_RECEIPT ON TAXLINES (RECEIPT)
+
+
+
+
+
+
+
+
+ CREATE INDEX TAXLINES_TAX ON TAXLINES (TAXID)
+
+
+
+
+
+
+
+
+ CREATE INDEX TICKETLINES_ATTSETINST ON TICKETLINES (ATTRIBUTESETINSTANCE_ID)
+
+
+
+
+
+
+
+
+ CREATE INDEX TICKETLINES_FK_2 ON TICKETLINES (PRODUCT)
+
+
+
+
+
+
+
+
+ CREATE INDEX TICKETLINES_FK_3 ON TICKETLINES (TAXID)
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX PRODUCTS_NAME_INX ON PRODUCTS (NAME)
+
+
+
+
+
+
+
+ ALTER TABLE PRODUCTS DROP INDEX PRODUCTS_NAME_INX
+ CREATE INDEX PRODUCTS_NAME_INX ON PRODUCTS (NAME)
+
+
+
+
+
+
+
+ DROP INDEX PRODUCTS_NAME_INX
+ CREATE INDEX PRODUCTS_NAME_INX ON PRODUCTS (NAME)
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/liquibase/upgradeorig/derbybooleanconvert.xml b/src-pos/uk/chromis/pos/liquibase/upgradeorig/derbybooleanconvert.xml
new file mode 100644
index 00000000..7818bb32
--- /dev/null
+++ b/src-pos/uk/chromis/pos/liquibase/upgradeorig/derbybooleanconvert.xml
@@ -0,0 +1,499 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SELECT COUNT(*) FROM DATABASECHANGELOG WHERE ID='derby10.10.20'
+
+
+
+
+
+
+
+
+ UPDATE PEOPLE SET VISIBLE='TRUE' WHERE JDL_TMP=1;
+ UPDATE PEOPLE SET VISIBLE='FALSE' WHERE JDL_TMP=0
+
+
+
+
+
+
+
+ SELECT COUNT(*) FROM DATABASECHANGELOG WHERE ID='derby10.10.20'
+
+
+
+
+
+
+
+
+
+ UPDATE BREAKS SET VISIBLE='TRUE' WHERE JDL_TMP=1;
+ UPDATE BREAKS SET VISIBLE='FALSE' WHERE JDL_TMP=0
+
+
+
+
+
+
+
+ SELECT COUNT(*) FROM DATABASECHANGELOG WHERE ID='derby10.10.20'
+
+
+
+
+
+
+
+
+ UPDATE CUSTOMERS SET VISIBLE='TRUE' WHERE JDL_TMP=1;
+ UPDATE CUSTOMERS SET VISIBLE='FALSE' WHERE JDL_TMP=0
+
+
+
+
+
+
+
+ SELECT COUNT(*) FROM DATABASECHANGELOG WHERE ID='derby10.10.20'
+
+
+
+
+
+
+
+
+ UPDATE MOORERS SET POWER='TRUE' WHERE JDL_TMP=1;
+ UPDATE MOORERS SET POWER='FALSE' WHERE JDL_TMP=0
+
+
+
+
+
+
+
+ SELECT COUNT(*) FROM DATABASECHANGELOG WHERE ID='derby10.10.20'
+
+
+
+
+
+
+
+
+ UPDATE PLACES SET TABLEMOVED='TRUE' WHERE JDL_TMP=1;
+ UPDATE PLACES SET TABLEMOVED='FALSE' WHERE JDL_TMP=0
+
+
+
+
+
+
+
+ SELECT COUNT(*) FROM DATABASECHANGELOG WHERE ID='derby10.10.20'
+
+
+
+
+
+
+
+
+ UPDATE CATEGORIES SET CATSHOWNAME='TRUE' WHERE JDL_TMP=1;
+ UPDATE CATEGORIES SET CATSHOWNAME='FALSE' WHERE JDL_TMP=0
+
+
+
+
+
+
+
+ SELECT COUNT(*) FROM DATABASECHANGELOG WHERE ID='derby10.10.20'
+
+
+
+
+
+
+
+
+ UPDATE TAXES SET RATECASCADE='TRUE' WHERE JDL_TMP=1;
+ UPDATE TAXES SET RATECASCADE='FALSE' WHERE JDL_TMP=0
+
+
+
+
+
+
+
+ SELECT COUNT(*) FROM DATABASECHANGELOG WHERE ID='derby10.10.20'
+
+
+
+
+
+
+
+
+ UPDATE RESERVATIONS SET ISDONE='TRUE' WHERE JDL_TMP=1;
+ UPDATE RESERVATIONS SET ISDONE='FALSE' WHERE JDL_TMP=0
+
+
+
+
+
+
+
+
+ SELECT COUNT(*) FROM DATABASECHANGELOG WHERE ID='derby10.10.20'
+
+
+
+
+
+
+
+
+ UPDATE PRODUCTS SET ISCOM='TRUE' WHERE JDL_TMP=1;
+ UPDATE PRODUCTS SET ISCOM='FALSE' WHERE JDL_TMP=0
+
+
+
+
+
+
+
+
+
+
+ UPDATE PRODUCTS SET ISSCALE='TRUE' WHERE JDL_TMP=1;
+ UPDATE PRODUCTS SET ISSCALE='FALSE' WHERE JDL_TMP=0
+
+
+
+
+
+
+
+
+
+
+ UPDATE PRODUCTS SET ISKITCHEN='TRUE' WHERE JDL_TMP=1;
+ UPDATE PRODUCTS SET ISKITCHEN='FALSE' WHERE JDL_TMP=0
+
+
+
+
+
+
+
+
+
+
+ UPDATE PRODUCTS SET PRINTKB='TRUE' WHERE JDL_TMP=1;
+ UPDATE PRODUCTS SET PRINTKB='FALSE' WHERE JDL_TMP=0
+
+
+
+
+
+
+
+
+
+
+ UPDATE PRODUCTS SET SENDSTATUS='TRUE' WHERE JDL_TMP=1;
+ UPDATE PRODUCTS SET SENDSTATUS='FALSE' WHERE JDL_TMP=0
+
+
+
+
+
+
+
+
+
+
+ UPDATE PRODUCTS SET ISSERVICE='TRUE' WHERE JDL_TMP=1;
+ UPDATE PRODUCTS SET ISSERVICE='FALSE' WHERE JDL_TMP=0
+
+
+
+
+
+
+
+
+
+
+ UPDATE PRODUCTS SET ISVERPATRIB='TRUE' WHERE JDL_TMP=1;
+ UPDATE PRODUCTS SET ISVERPATRIB='FALSE' WHERE JDL_TMP=0
+
+
+
+
+
+
+
+
+
+
+ UPDATE PRODUCTS SET ISVPRICE='TRUE' WHERE JDL_TMP=1;
+ UPDATE PRODUCTS SET ISVPRICE='FALSE' WHERE JDL_TMP=0
+
+
+
+
+
+
+
+
+
+
+ UPDATE PRODUCTS SET WARRANTY='TRUE' WHERE JDL_TMP=1;
+ UPDATE PRODUCTS SET WARRANTY='FALSE' WHERE JDL_TMP=0
+
+
+
+
+
+
+
+
+
+
+ UPDATE PRODUCTS SET CANDISCOUNT='TRUE' WHERE JDL_TMP=1;
+ UPDATE PRODUCTS SET CANDISCOUNT='FALSE' WHERE JDL_TMP=0
+
+
+
+
+
+
+
+
+
+
+ UPDATE PRODUCTS SET ALWAYSAVAILABLE='TRUE' WHERE JDL_TMP=1;
+ UPDATE PRODUCTS SET ALWAYSAVAILABLE='FALSE' WHERE JDL_TMP=0
+
+
+
+
+
+ INSERT INTO DATABASECHANGELOG (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, EXECTYPE, MD5SUM, DESCRIPTION, LIQUIBASE)
+ VALUES (
+ 'derby10.10.20',
+ 'Chromis POS',
+ 'uk/chromis/pos/liquibase/udpdatecreatedb.xml',
+ '2015-10-23 22:43:33.487',
+ 0,
+ 'EXECUTED',
+ '7:d41d8cd98f00b204e9800998ecf8427e',
+ 'empty',
+ '3.5.0-Chromis Mod')
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/liquibase/upgradeorig/resizederbycolumns.xml b/src-pos/uk/chromis/pos/liquibase/upgradeorig/resizederbycolumns.xml
new file mode 100644
index 00000000..1f33529d
--- /dev/null
+++ b/src-pos/uk/chromis/pos/liquibase/upgradeorig/resizederbycolumns.xml
@@ -0,0 +1,1277 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ALTER TABLE TICKETLINES ADD PRIMARY KEY (TICKET, LINE)
+
+
+
+ ALTER TABLE PRODUCTS DROP PRIMARY KEY
+
+
+
+
+
+
+
+
+
+
+
+ ALTER TABLE PRODUCTS ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE PRODUCTS ADD COLUMN TEXTTIP VARCHAR(255);
+ ALTER TABLE PRODUCTS ADD COLUMN CATEGORY VARCHAR(255);
+ ALTER TABLE PRODUCTS ADD COLUMN TAXCAT VARCHAR(255);
+ ALTER TABLE PRODUCTS ADD COLUMN ATTRIBUTESET_ID VARCHAR(255);
+ ALTER TABLE PRODUCTS ADD COLUMN DISPLAY VARCHAR(255);
+ ALTER TABLE PRODUCTS ADD COLUMN REFERENCE VARCHAR(255);
+ ALTER TABLE PRODUCTS ADD COLUMN CODE VARCHAR(255);
+ ALTER TABLE PRODUCTS ADD COLUMN CODETYPE VARCHAR(255);
+ ALTER TABLE PRODUCTS ADD COLUMN NAME VARCHAR(255);
+ UPDATE PRODUCTS SET ID = JDL_TMP1;
+ UPDATE PRODUCTS SET TEXTTIP = JDL_TMP2;
+ UPDATE PRODUCTS SET CATEGORY = JDL_TMP3;
+ UPDATE PRODUCTS SET TAXCAT = JDL_TMP4;
+ UPDATE PRODUCTS SET ATTRIBUTESET_ID = JDL_TMP5;
+ UPDATE PRODUCTS SET DISPLAY = JDL_TMP6;
+ UPDATE PRODUCTS SET REFERENCE = JDL_TMP7;
+ UPDATE PRODUCTS SET CODE = JDL_TMP8;
+ UPDATE PRODUCTS SET CODETYPE = JDL_TMP9;
+ UPDATE PRODUCTS SET NAME = JDL_TMP10;
+ ALTER TABLE PRODUCTS ALTER COLUMN ID NOT NULL;
+ ALTER TABLE PRODUCTS ALTER COLUMN CATEGORY NOT NULL;
+ ALTER TABLE PRODUCTS ALTER COLUMN TAXCAT NOT NULL;
+ ALTER TABLE PRODUCTS ALTER COLUMN REFERENCE NOT NULL;
+ ALTER TABLE PRODUCTS ALTER COLUMN CODE NOT NULL;
+ ALTER TABLE PRODUCTS ALTER COLUMN NAME NOT NULL;
+ ALTER TABLE PRODUCTS ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX PRODUCTS_INX_0 ON PRODUCTS(REFERENCE);
+ CREATE UNIQUE INDEX PRODUCTS_INX_1 ON PRODUCTS(CODE);
+ CREATE UNIQUE INDEX PRODUCTS_NAME_INX ON PRODUCTS(NAME)
+
+
+
+
+ ALTER TABLE ATTRIBUTE DROP PRIMARY KEY
+
+
+
+ ALTER TABLE ATTRIBUTE ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE ATTRIBUTE ADD COLUMN NAME VARCHAR(255);
+ UPDATE ATTRIBUTE SET ID = JDL_TMP1;
+ UPDATE ATTRIBUTE SET NAME = JDL_TMP2;
+ ALTER TABLE ATTRIBUTE ALTER COLUMN ID NOT NULL;
+ ALTER TABLE ATTRIBUTE ALTER COLUMN NAME NOT NULL;
+ ALTER TABLE ATTRIBUTE ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+ ALTER TABLE ATTRIBUTEVALUE DROP PRIMARY KEY
+
+
+
+
+ ALTER TABLE ATTRIBUTEVALUE ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE ATTRIBUTEVALUE ADD COLUMN ATTRIBUTE_ID VARCHAR(255);
+ ALTER TABLE ATTRIBUTEVALUE ADD COLUMN VALUE VARCHAR(255);
+ UPDATE ATTRIBUTEVALUE SET ID = JDL_TMP1;
+ UPDATE ATTRIBUTEVALUE SET ATTRIBUTE_ID = JDL_TMP2;
+ UPDATE ATTRIBUTEVALUE SET VALUE = JDL_TMP3;
+ ALTER TABLE ATTRIBUTEVALUE ALTER COLUMN ID NOT NULL;
+ ALTER TABLE ATTRIBUTEVALUE ALTER COLUMN ATTRIBUTE_ID NOT NULL;
+ ALTER TABLE ATTRIBUTEVALUE ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+
+ ALTER TABLE ATTRIBUTESET DROP PRIMARY KEY
+
+
+
+ ALTER TABLE ATTRIBUTESET ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE ATTRIBUTESET ADD COLUMN NAME VARCHAR(255);
+ UPDATE ATTRIBUTESET SET ID = JDL_TMP1;
+ UPDATE ATTRIBUTESET SET NAME = JDL_TMP2;
+ ALTER TABLE ATTRIBUTESET ALTER COLUMN ID NOT NULL;
+ ALTER TABLE ATTRIBUTESET ALTER COLUMN NAME NOT NULL;
+ ALTER TABLE ATTRIBUTESET ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+ ALTER TABLE ATTRIBUTEUSE DROP PRIMARY KEY
+
+
+
+
+
+ ALTER TABLE ATTRIBUTEUSE ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE ATTRIBUTEUSE ADD COLUMN ATTRIBUTESET_ID VARCHAR(255);
+ ALTER TABLE ATTRIBUTEUSE ADD COLUMN ATTRIBUTE_ID VARCHAR(255);
+ UPDATE ATTRIBUTEUSE SET ID = JDL_TMP1;
+ UPDATE ATTRIBUTEUSE SET ATTRIBUTESET_ID = JDL_TMP2;
+ UPDATE ATTRIBUTEUSE SET ATTRIBUTE_ID = JDL_TMP3;
+ ALTER TABLE ATTRIBUTEUSE ALTER COLUMN ID NOT NULL;
+ ALTER TABLE ATTRIBUTEUSE ALTER COLUMN ATTRIBUTESET_ID NOT NULL;
+ ALTER TABLE ATTRIBUTEUSE ALTER COLUMN ATTRIBUTE_ID NOT NULL;
+ ALTER TABLE ATTRIBUTEUSE ADD PRIMARY KEY (ID)
+
+
+
+
+ CREATE UNIQUE INDEX ATTUSE_LINE ON ATTRIBUTEUSE(ATTRIBUTESET_ID, LINENO)
+
+
+
+ ALTER TABLE ATTRIBUTESETINSTANCE DROP PRIMARY KEY
+
+
+
+
+ ALTER TABLE ATTRIBUTESETINSTANCE ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE ATTRIBUTESETINSTANCE ADD COLUMN ATTRIBUTESET_ID VARCHAR(255);
+ ALTER TABLE ATTRIBUTESETINSTANCE ADD COLUMN DESCRIPTION VARCHAR(255);
+ UPDATE ATTRIBUTESETINSTANCE SET ID = JDL_TMP1;
+ UPDATE ATTRIBUTESETINSTANCE SET ATTRIBUTESET_ID = JDL_TMP2;
+ UPDATE ATTRIBUTESETINSTANCE SET DESCRIPTION = JDL_TMP3;
+ ALTER TABLE ATTRIBUTESETINSTANCE ALTER COLUMN ID NOT NULL;
+ ALTER TABLE ATTRIBUTESETINSTANCE ALTER COLUMN ATTRIBUTESET_ID NOT NULL;
+ ALTER TABLE ATTRIBUTESETINSTANCE ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+
+ ALTER TABLE ATTRIBUTEINSTANCE DROP PRIMARY KEY
+
+
+
+
+
+ ALTER TABLE ATTRIBUTEINSTANCE ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE ATTRIBUTEINSTANCE ADD COLUMN ATTRIBUTESETINSTANCE_ID VARCHAR(255);
+ ALTER TABLE ATTRIBUTEINSTANCE ADD COLUMN ATTRIBUTE_ID VARCHAR(255);
+ ALTER TABLE ATTRIBUTEINSTANCE ADD COLUMN VALUE VARCHAR(255);
+ UPDATE ATTRIBUTEINSTANCE SET ID = JDL_TMP1;
+ UPDATE ATTRIBUTEINSTANCE SET ATTRIBUTESETINSTANCE_ID = JDL_TMP2;
+ UPDATE ATTRIBUTEINSTANCE SET ATTRIBUTE_ID = JDL_TMP3;
+ UPDATE ATTRIBUTEINSTANCE SET VALUE = JDL_TMP4;
+ ALTER TABLE ATTRIBUTEINSTANCE ALTER COLUMN ID NOT NULL;
+ ALTER TABLE ATTRIBUTEINSTANCE ALTER COLUMN ATTRIBUTESETINSTANCE_ID NOT NULL;
+ ALTER TABLE ATTRIBUTEINSTANCE ALTER COLUMN ATTRIBUTE_ID NOT NULL;
+ ALTER TABLE ATTRIBUTEINSTANCE ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+
+
+
+
+ ALTER TABLE STOCKDIARY DROP PRIMARY KEY
+
+
+
+
+
+
+ ALTER TABLE STOCKDIARY ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE STOCKDIARY ADD COLUMN LOCATION VARCHAR(255);
+ ALTER TABLE STOCKDIARY ADD COLUMN PRODUCT VARCHAR(255);
+ ALTER TABLE STOCKDIARY ADD COLUMN APPUSER VARCHAR(255);
+ ALTER TABLE STOCKDIARY ADD COLUMN ATTRIBUTESETINSTANCE_ID VARCHAR(255);
+ UPDATE STOCKDIARY SET ID = JDL_TMP1;
+ UPDATE STOCKDIARY SET LOCATION = JDL_TMP2;
+ UPDATE STOCKDIARY SET PRODUCT = JDL_TMP3;
+ UPDATE STOCKDIARY SET APPUSER = JDL_TMP4;
+ UPDATE STOCKDIARY SET ATTRIBUTESETINSTANCE_ID = JDL_TMP5;
+ ALTER TABLE STOCKDIARY ALTER COLUMN ID NOT NULL;
+ ALTER TABLE STOCKDIARY ALTER COLUMN LOCATION NOT NULL;
+ ALTER TABLE STOCKDIARY ALTER COLUMN PRODUCT NOT NULL;
+ ALTER TABLE STOCKDIARY ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+ CREATE INDEX STOCKDIARY_INX_1 ON STOCKDIARY(DATENEW);
+
+
+
+ ALTER TABLE SHIFT_BREAKS DROP PRIMARY KEY
+
+
+
+
+ ALTER TABLE SHIFT_BREAKS ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE SHIFT_BREAKS ADD COLUMN SHIFTID VARCHAR(255);
+ ALTER TABLE SHIFT_BREAKS ADD COLUMN BREAKID VARCHAR(255);
+ UPDATE SHIFT_BREAKS SET ID = JDL_TMP1;
+ UPDATE SHIFT_BREAKS SET SHIFTID = JDL_TMP2;
+ UPDATE SHIFT_BREAKS SET BREAKID = JDL_TMP3;
+ ALTER TABLE SHIFT_BREAKS ALTER COLUMN ID NOT NULL;
+ ALTER TABLE SHIFT_BREAKS ALTER COLUMN SHIFTID NOT NULL;
+ ALTER TABLE SHIFT_BREAKS ALTER COLUMN BREAKID NOT NULL;
+ ALTER TABLE SHIFT_BREAKS ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+
+
+
+
+ ALTER TABLE DRAWEROPENED ADD COLUMN NAME VARCHAR(255);
+ ALTER TABLE DRAWEROPENED ADD COLUMN TICKETID VARCHAR(255);
+ UPDATE DRAWEROPENED SET NAME = JDL_TMP1;
+ UPDATE DRAWEROPENED SET TICKETID = JDL_TMP2
+
+
+
+
+
+
+ ALTER TABLE BREAKS DROP PRIMARY KEY
+
+
+
+
+ ALTER TABLE BREAKS ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE BREAKS ADD COLUMN NAME VARCHAR(255);
+ ALTER TABLE BREAKS ADD COLUMN NOTES VARCHAR(255);
+ UPDATE BREAKS SET ID = JDL_TMP1;
+ UPDATE BREAKS SET NAME = JDL_TMP2;
+ UPDATE BREAKS SET NOTES = JDL_TMP3;
+ ALTER TABLE BREAKS ALTER COLUMN ID NOT NULL;
+ ALTER TABLE BREAKS ALTER COLUMN NAME NOT NULL;
+ ALTER TABLE BREAKS ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+
+ ALTER TABLE LEAVES DROP PRIMARY KEY
+
+
+
+
+
+ ALTER TABLE LEAVES ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE LEAVES ADD COLUMN NAME VARCHAR(255);
+ ALTER TABLE LEAVES ADD COLUMN PPLID VARCHAR(255);
+ ALTER TABLE LEAVES ADD COLUMN NOTES VARCHAR(255);
+ UPDATE LEAVES SET ID = JDL_TMP1;
+ UPDATE LEAVES SET NAME = JDL_TMP2;
+ UPDATE LEAVES SET PPLID = JDL_TMP3;
+ UPDATE LEAVES SET NOTES = JDL_TMP4;
+ ALTER TABLE LEAVES ALTER COLUMN ID NOT NULL;
+ ALTER TABLE LEAVES ALTER COLUMN NAME NOT NULL;
+ ALTER TABLE LEAVES ALTER COLUMN PPLID NOT NULL;
+ ALTER TABLE LEAVES ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+
+
+ ALTER TABLE SHIFTS DROP PRIMARY KEY
+
+
+
+ ALTER TABLE SHIFTS ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE SHIFTS ADD COLUMN PPLID VARCHAR(255);
+ UPDATE SHIFTS SET ID = JDL_TMP1;
+ UPDATE SHIFTS SET PPLID = JDL_TMP2;
+ ALTER TABLE SHIFTS ALTER COLUMN ID NOT NULL;
+ ALTER TABLE SHIFTS ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+ ALTER TABLE ROLES DROP PRIMARY KEY
+
+
+
+ ALTER TABLE ROLES ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE ROLES ADD COLUMN NAME VARCHAR(255);
+ UPDATE ROLES SET ID = JDL_TMP1;
+ UPDATE ROLES SET NAME = JDL_TMP2;
+ ALTER TABLE ROLES ALTER COLUMN ID NOT NULL;
+ ALTER TABLE ROLES ALTER COLUMN NAME NOT NULL;
+ ALTER TABLE ROLES ADD PRIMARY KEY (ID)
+
+
+
+ CREATE UNIQUE INDEX ROLES_NAME_INX ON ROLES(NAME)
+
+
+
+ ALTER TABLE PEOPLE DROP PRIMARY KEY
+
+
+
+
+
+
+ ALTER TABLE PEOPLE ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE PEOPLE ADD COLUMN NAME VARCHAR(255);
+ ALTER TABLE PEOPLE ADD COLUMN APPPASSWORD VARCHAR(255);
+ ALTER TABLE PEOPLE ADD COLUMN CARD VARCHAR(255);
+ ALTER TABLE PEOPLE ADD COLUMN ROLE VARCHAR(255);
+ UPDATE PEOPLE SET ID = JDL_TMP1;
+ UPDATE PEOPLE SET NAME = JDL_TMP2;
+ UPDATE PEOPLE SET APPPASSWORD = JDL_TMP3;
+ UPDATE PEOPLE SET CARD = JDL_TMP4;
+ UPDATE PEOPLE SET ROLE = JDL_TMP5;
+ ALTER TABLE PEOPLE ALTER COLUMN ID NOT NULL;
+ ALTER TABLE PEOPLE ALTER COLUMN ROLE NOT NULL;
+ ALTER TABLE PEOPLE ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+ CREATE UNIQUE INDEX PEOPLE_NAME_INX ON PEOPLE(NAME);
+ CREATE INDEX PEOPLE_CARD_INX ON PEOPLE(CARD);
+
+
+
+
+ ALTER TABLE RESOURCES DROP PRIMARY KEY
+
+
+
+ ALTER TABLE RESOURCES ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE RESOURCES ADD COLUMN NAME VARCHAR(255);
+ UPDATE RESOURCES SET ID = JDL_TMP1;
+ UPDATE RESOURCES SET NAME = JDL_TMP2;
+ ALTER TABLE RESOURCES ALTER COLUMN ID NOT NULL;
+ ALTER TABLE RESOURCES ALTER COLUMN NAME NOT NULL;
+ ALTER TABLE RESOURCES ADD PRIMARY KEY (ID)
+
+
+
+ CREATE UNIQUE INDEX RESOURCES_NAME_INX ON RESOURCES(NAME)
+
+
+
+ ALTER TABLE TAXCUSTCATEGORIES DROP PRIMARY KEY
+
+
+
+ ALTER TABLE TAXCUSTCATEGORIES ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE TAXCUSTCATEGORIES ADD COLUMN NAME VARCHAR(255);
+ UPDATE TAXCUSTCATEGORIES SET ID = JDL_TMP1;
+ UPDATE TAXCUSTCATEGORIES SET NAME = JDL_TMP2;
+ ALTER TABLE TAXCUSTCATEGORIES ALTER COLUMN ID NOT NULL;
+ ALTER TABLE TAXCUSTCATEGORIES ALTER COLUMN NAME NOT NULL;
+ ALTER TABLE TAXCUSTCATEGORIES ADD PRIMARY KEY (ID)
+
+
+
+ CREATE UNIQUE INDEX TAXCUSTCAT_NAME_INX ON TAXCUSTCATEGORIES(NAME)
+
+
+
+ ALTER TABLE CATEGORIES DROP PRIMARY KEY
+
+
+
+
+
+ ALTER TABLE CATEGORIES ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE CATEGORIES ADD COLUMN NAME VARCHAR(255);
+ ALTER TABLE CATEGORIES ADD COLUMN PARENTID VARCHAR(255);
+ ALTER TABLE CATEGORIES ADD COLUMN TEXTTIP VARCHAR(255) DEFAULT NULL;
+ UPDATE CATEGORIES SET ID = JDL_TMP1;
+ UPDATE CATEGORIES SET NAME = JDL_TMP2;
+ UPDATE CATEGORIES SET PARENTID = JDL_TMP3;
+ UPDATE CATEGORIES SET TEXTTIP = JDL_TMP4;
+ ALTER TABLE CATEGORIES ALTER COLUMN ID NOT NULL;
+ ALTER TABLE CATEGORIES ALTER COLUMN NAME NOT NULL;
+ ALTER TABLE CATEGORIES ADD PRIMARY KEY (ID)
+
+
+
+
+
+ CREATE UNIQUE INDEX CATEGORIES_NAME_INX ON CATEGORIES(NAME)
+
+
+
+ ALTER TABLE TAXCATEGORIES DROP PRIMARY KEY
+
+
+
+ ALTER TABLE TAXCATEGORIES ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE TAXCATEGORIES ADD COLUMN NAME VARCHAR(255);
+ UPDATE TAXCATEGORIES SET ID = JDL_TMP1;
+ UPDATE TAXCATEGORIES SET NAME = JDL_TMP2;
+ ALTER TABLE TAXCATEGORIES ALTER COLUMN ID NOT NULL;
+ ALTER TABLE TAXCATEGORIES ALTER COLUMN NAME NOT NULL;
+ ALTER TABLE TAXCATEGORIES ADD PRIMARY KEY (ID)
+
+
+
+ CREATE UNIQUE INDEX TAXCAT_NAME_INX ON TAXCATEGORIES(NAME)
+
+
+
+ ALTER TABLE TAXES DROP PRIMARY KEY
+
+
+
+
+
+
+ ALTER TABLE TAXES ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE TAXES ADD COLUMN CATEGORY VARCHAR(255);
+ ALTER TABLE TAXES ADD COLUMN CUSTCATEGORY VARCHAR(255);
+ ALTER TABLE TAXES ADD COLUMN PARENTID VARCHAR(255);
+ ALTER TABLE TAXES ADD COLUMN NAME VARCHAR(255);
+ UPDATE TAXES SET ID = JDL_TMP1;
+ UPDATE TAXES SET CATEGORY = JDL_TMP2;
+ UPDATE TAXES SET CUSTCATEGORY = JDL_TMP3;
+ UPDATE TAXES SET PARENTID = JDL_TMP4;
+ UPDATE TAXES SET NAME = JDL_TMP5;
+ ALTER TABLE TAXES ALTER COLUMN ID NOT NULL;
+ ALTER TABLE TAXES ALTER COLUMN CATEGORY NOT NULL;
+ ALTER TABLE TAXES ALTER COLUMN NAME NOT NULL;
+ ALTER TABLE TAXES ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+ CREATE UNIQUE INDEX TAXES_NAME_INX ON TAXES(NAME);
+
+
+
+ ALTER TABLE SHAREDTICKETS DROP PRIMARY KEY
+
+
+
+
+ ALTER TABLE SHAREDTICKETS ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE SHAREDTICKETS ADD COLUMN APPUSER VARCHAR(255);
+ ALTER TABLE SHAREDTICKETS ADD COLUMN NAME VARCHAR(255);
+ UPDATE SHAREDTICKETS SET ID = JDL_TMP1;
+ UPDATE SHAREDTICKETS SET APPUSER = JDL_TMP2;
+ UPDATE SHAREDTICKETS SET NAME = JDL_TMP3;
+ ALTER TABLE SHAREDTICKETS ALTER COLUMN ID NOT NULL;
+ ALTER TABLE SHAREDTICKETS ALTER COLUMN APPUSER NOT NULL;
+ ALTER TABLE SHAREDTICKETS ALTER COLUMN NAME NOT NULL;
+ ALTER TABLE SHAREDTICKETS ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+
+ ALTER TABLE RESERVATION_CUSTOMERS DROP PRIMARY KEY
+
+
+
+ ALTER TABLE RESERVATION_CUSTOMERS ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE RESERVATION_CUSTOMERS ADD COLUMN CUSTOMER VARCHAR(255);
+ UPDATE RESERVATION_CUSTOMERS SET ID = JDL_TMP1;
+ UPDATE RESERVATION_CUSTOMERS SET CUSTOMER = JDL_TMP2;
+ ALTER TABLE RESERVATION_CUSTOMERS ALTER COLUMN ID NOT NULL;
+ ALTER TABLE RESERVATION_CUSTOMERS ALTER COLUMN CUSTOMER NOT NULL;
+ ALTER TABLE RESERVATION_CUSTOMERS ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+ ALTER TABLE RESERVATIONS DROP PRIMARY KEY
+
+
+
+
+ ALTER TABLE RESERVATIONS ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE RESERVATIONS ADD COLUMN TITLE VARCHAR(255);
+ ALTER TABLE RESERVATIONS ADD COLUMN DESCRIPTION VARCHAR(255);
+ UPDATE RESERVATIONS SET ID = JDL_TMP1;
+ UPDATE RESERVATIONS SET TITLE = JDL_TMP2;
+ UPDATE RESERVATIONS SET DESCRIPTION = JDL_TMP3;
+ ALTER TABLE RESERVATIONS ALTER COLUMN ID NOT NULL;
+ ALTER TABLE RESERVATIONS ALTER COLUMN TITLE NOT NULL;
+ ALTER TABLE RESERVATIONS ADD PRIMARY KEY (ID)
+
+
+
+
+ CREATE INDEX RESERVATIONS_INX_1 ON RESERVATIONS(DATENEW)
+
+
+
+ ALTER TABLE PLACES DROP PRIMARY KEY
+
+
+
+
+
+
+
+ ALTER TABLE PLACES ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE PLACES ADD COLUMN FLOOR VARCHAR(255);
+ ALTER TABLE PLACES ADD COLUMN CUSTOMER VARCHAR(255);
+ ALTER TABLE PLACES ADD COLUMN WAITER VARCHAR(255);
+ ALTER TABLE PLACES ADD COLUMN TICKETID VARCHAR(255);
+ ALTER TABLE PLACES ADD COLUMN NAME VARCHAR(255);
+ UPDATE PLACES SET ID = JDL_TMP1;
+ UPDATE PLACES SET FLOOR = JDL_TMP2;
+ UPDATE PLACES SET CUSTOMER = JDL_TMP3;
+ UPDATE PLACES SET WAITER = JDL_TMP4;
+ UPDATE PLACES SET TICKETID = JDL_TMP5;
+ UPDATE PLACES SET NAME = JDL_TMP6;
+ ALTER TABLE PLACES ALTER COLUMN ID NOT NULL;
+ ALTER TABLE PLACES ALTER COLUMN FLOOR NOT NULL;
+ ALTER TABLE PLACES ALTER COLUMN NAME NOT NULL;
+ ALTER TABLE PLACES ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX PLACES_NAME_INX ON PLACES(NAME)
+
+
+
+ ALTER TABLE FLOORS DROP PRIMARY KEY
+
+
+
+ ALTER TABLE FLOORS ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE FLOORS ADD COLUMN NAME VARCHAR(255);
+ UPDATE FLOORS SET ID = JDL_TMP1;
+ UPDATE FLOORS SET NAME = JDL_TMP2;
+ ALTER TABLE FLOORS ALTER COLUMN ID NOT NULL;
+ ALTER TABLE FLOORS ALTER COLUMN NAME NOT NULL;
+ ALTER TABLE FLOORS ADD PRIMARY KEY (ID)
+
+
+
+ CREATE UNIQUE INDEX FLOORS_NAME_INX ON FLOORS(NAME)
+
+
+
+
+
+
+
+
+ ALTER TABLE LINEREMOVED ADD COLUMN NAME VARCHAR(255);
+ ALTER TABLE LINEREMOVED ADD COLUMN TICKETID VARCHAR(255);
+ ALTER TABLE LINEREMOVED ADD COLUMN PRODUCTID VARCHAR(255);
+ ALTER TABLE LINEREMOVED ADD COLUMN PRODUCTNAME VARCHAR(255);
+ UPDATE LINEREMOVED SET NAME = JDL_TMP1;
+ UPDATE LINEREMOVED SET TICKETID = JDL_TMP2;
+ UPDATE LINEREMOVED SET PRODUCTID = JDL_TMP3;
+ UPDATE LINEREMOVED SET PRODUCTNAME = JDL_TMP4;
+
+
+
+
+
+
+
+
+ ALTER TABLE PAYMENTS DROP PRIMARY KEY
+
+
+
+
+
+
+
+ ALTER TABLE PAYMENTS ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE PAYMENTS ADD COLUMN RECEIPT VARCHAR(255);
+ ALTER TABLE PAYMENTS ADD COLUMN NOTES VARCHAR(255);
+ ALTER TABLE PAYMENTS ADD COLUMN CARDNAME VARCHAR(255);
+ ALTER TABLE PAYMENTS ADD COLUMN PAYMENT VARCHAR(255);
+ ALTER TABLE PAYMENTS ADD COLUMN TRANSID VARCHAR(255);
+ UPDATE PAYMENTS SET ID = JDL_TMP1;
+ UPDATE PAYMENTS SET RECEIPT = JDL_TMP2;
+ UPDATE PAYMENTS SET NOTES = JDL_TMP3;
+ UPDATE PAYMENTS SET CARDNAME = JDL_TMP4;
+ UPDATE PAYMENTS SET PAYMENT = JDL_TMP5;
+ UPDATE PAYMENTS SET TRANSID = JDL_TMP6;
+ ALTER TABLE PAYMENTS ALTER COLUMN ID NOT NULL;
+ ALTER TABLE PAYMENTS ALTER COLUMN RECEIPT NOT NULL;
+ ALTER TABLE PAYMENTS ALTER COLUMN PAYMENT NOT NULL;
+ ALTER TABLE PAYMENTS ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+
+ CREATE INDEX PAYMENTS_INX_1 ON PAYMENTS(PAYMENT)
+
+
+
+ ALTER TABLE TAXLINES DROP PRIMARY KEY
+
+
+
+
+ ALTER TABLE TAXLINES ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE TAXLINES ADD COLUMN RECEIPT VARCHAR(255);
+ ALTER TABLE TAXLINES ADD COLUMN TAXID VARCHAR(255);
+ UPDATE TAXLINES SET ID = JDL_TMP1;
+ UPDATE TAXLINES SET RECEIPT = JDL_TMP2;
+ UPDATE TAXLINES SET TAXID = JDL_TMP3;
+ ALTER TABLE TAXLINES ALTER COLUMN ID NOT NULL;
+ ALTER TABLE TAXLINES ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+
+ ALTER TABLE TICKETLINES DROP PRIMARY KEY
+
+
+
+
+
+ ALTER TABLE TICKETLINES ADD COLUMN TICKET VARCHAR(255);
+ ALTER TABLE TICKETLINES ADD COLUMN PRODUCT VARCHAR(255);
+ ALTER TABLE TICKETLINES ADD COLUMN ATTRIBUTESETINSTANCE_ID VARCHAR(255);
+ ALTER TABLE TICKETLINES ADD COLUMN TAXID VARCHAR(255);
+ UPDATE TICKETLINES SET TICKET = JDL_TMP1;
+ UPDATE TICKETLINES SET PRODUCT = JDL_TMP2;
+ UPDATE TICKETLINES SET ATTRIBUTESETINSTANCE_ID = JDL_TMP3;
+ UPDATE TICKETLINES SET TAXID = JDL_TMP4;
+ ALTER TABLE TICKETLINES ALTER COLUMN TICKET NOT NULL;
+ ALTER TABLE TICKETLINES ALTER COLUMN TAXID NOT NULL;
+ ALTER TABLE TICKETLINES ADD PRIMARY KEY (TICKET, LINE)
+
+
+
+
+
+
+
+
+ ALTER TABLE TICKETS DROP PRIMARY KEY
+
+
+
+
+ ALTER TABLE TICKETS ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE TICKETS ADD COLUMN PERSON VARCHAR(255);
+ ALTER TABLE TICKETS ADD COLUMN CUSTOMER VARCHAR(255);
+ UPDATE TICKETS SET ID = JDL_TMP1;
+ UPDATE TICKETS SET PERSON = JDL_TMP2;
+ UPDATE TICKETS SET CUSTOMER = JDL_TMP3;
+ ALTER TABLE TICKETS ALTER COLUMN ID NOT NULL;
+ ALTER TABLE TICKETS ALTER COLUMN PERSON NOT NULL;
+ ALTER TABLE TICKETS ADD PRIMARY KEY (ID)
+
+
+
+
+ CREATE INDEX TICKETS_TICKETID ON TICKETS(TICKETTYPE, TICKETID)
+
+
+
+ ALTER TABLE STOCKLEVEL DROP PRIMARY KEY
+
+
+
+
+ ALTER TABLE STOCKLEVEL ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE STOCKLEVEL ADD COLUMN LOCATION VARCHAR(255);
+ ALTER TABLE STOCKLEVEL ADD COLUMN PRODUCT VARCHAR(255);
+ UPDATE STOCKLEVEL SET ID = JDL_TMP1;
+ UPDATE STOCKLEVEL SET LOCATION = JDL_TMP2;
+ UPDATE STOCKLEVEL SET PRODUCT = JDL_TMP3;
+ ALTER TABLE STOCKLEVEL ALTER COLUMN ID NOT NULL;
+ ALTER TABLE STOCKLEVEL ALTER COLUMN LOCATION NOT NULL;
+ ALTER TABLE STOCKLEVEL ALTER COLUMN PRODUCT NOT NULL;
+ ALTER TABLE STOCKLEVEL ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+
+
+
+
+
+ ALTER TABLE STOCKCURRENT ADD COLUMN LOCATION VARCHAR(255);
+ ALTER TABLE STOCKCURRENT ADD COLUMN PRODUCT VARCHAR(255);
+ ALTER TABLE STOCKCURRENT ADD COLUMN ATTRIBUTESETINSTANCE_ID VARCHAR(255);
+ UPDATE STOCKCURRENT SET LOCATION = JDL_TMP1;
+ UPDATE STOCKCURRENT SET PRODUCT = JDL_TMP2;
+ ALTER TABLE STOCKCURRENT ALTER COLUMN LOCATION NOT NULL;
+ ALTER TABLE STOCKCURRENT ALTER COLUMN PRODUCT NOT NULL;
+ UPDATE STOCKCURRENT SET ATTRIBUTESETINSTANCE_ID = JDL_TMP3;
+
+
+
+
+ CREATE UNIQUE INDEX STOCKCURRENT_INX ON STOCKCURRENT(LOCATION, PRODUCT, ATTRIBUTESETINSTANCE_ID)
+
+
+
+ ALTER TABLE CLOSEDCASH DROP PRIMARY KEY
+
+
+
+ ALTER TABLE CLOSEDCASH ADD COLUMN MONEY VARCHAR(255);
+ ALTER TABLE CLOSEDCASH ADD COLUMN HOST VARCHAR(255);
+ UPDATE CLOSEDCASH SET MONEY = JDL_TMP1;
+ UPDATE CLOSEDCASH SET HOST = JDL_TMP2;
+ ALTER TABLE CLOSEDCASH ALTER COLUMN MONEY NOT NULL;
+ ALTER TABLE CLOSEDCASH ALTER COLUMN HOST NOT NULL;
+ ALTER TABLE CLOSEDCASH ADD PRIMARY KEY (MONEY)
+
+
+
+ CREATE INDEX CLOSEDCASH_INX_1 ON CLOSEDCASH(DATESTART);
+ CREATE UNIQUE INDEX CLOSEDCASH_INX_SEQ ON CLOSEDCASH(HOST, HOSTSEQUENCE)
+
+
+
+
+ ALTER TABLE RECEIPTS DROP PRIMARY KEY
+
+
+
+
+ ALTER TABLE RECEIPTS ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE RECEIPTS ADD COLUMN MONEY VARCHAR(255);
+ ALTER TABLE RECEIPTS ADD COLUMN PERSON VARCHAR(255);
+ UPDATE RECEIPTS SET ID = JDL_TMP1;
+ UPDATE RECEIPTS SET MONEY = JDL_TMP2;
+ UPDATE RECEIPTS SET PERSON = JDL_TMP3;
+ ALTER TABLE RECEIPTS ALTER COLUMN ID NOT NULL;
+ ALTER TABLE RECEIPTS ALTER COLUMN MONEY NOT NULL;
+ ALTER TABLE RECEIPTS ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+
+ ALTER TABLE LOCATIONS DROP PRIMARY KEY
+
+
+
+
+ ALTER TABLE LOCATIONS ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE LOCATIONS ADD COLUMN NAME VARCHAR(255);
+ ALTER TABLE LOCATIONS ADD COLUMN ADDRESS VARCHAR(255);
+ UPDATE LOCATIONS SET ID = JDL_TMP1;
+ UPDATE LOCATIONS SET NAME = JDL_TMP2;
+ UPDATE LOCATIONS SET ADDRESS = JDL_TMP3;
+ ALTER TABLE LOCATIONS ALTER COLUMN ID NOT NULL;
+ ALTER TABLE LOCATIONS ALTER COLUMN NAME NOT NULL;
+ ALTER TABLE LOCATIONS ADD PRIMARY KEY (ID)
+
+
+
+
+ CREATE UNIQUE INDEX LOCATIONS_NAME_INX ON LOCATIONS(NAME)
+
+
+
+
+ ALTER TABLE CUSTOMERS DROP PRIMARY KEY
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ALTER TABLE CUSTOMERS ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE CUSTOMERS ADD COLUMN SEARCHKEY VARCHAR(255);
+ ALTER TABLE CUSTOMERS ADD COLUMN TAXID VARCHAR(255);
+ ALTER TABLE CUSTOMERS ADD COLUMN NAME VARCHAR(255);
+ ALTER TABLE CUSTOMERS ADD COLUMN TAXCATEGORY VARCHAR(255);
+ ALTER TABLE CUSTOMERS ADD COLUMN CARD VARCHAR(255);
+ ALTER TABLE CUSTOMERS ADD COLUMN ADDRESS VARCHAR(255);
+ ALTER TABLE CUSTOMERS ADD COLUMN ADDRESS2 VARCHAR(255);
+ ALTER TABLE CUSTOMERS ADD COLUMN POSTAL VARCHAR(255);
+ ALTER TABLE CUSTOMERS ADD COLUMN CITY VARCHAR(255);
+ ALTER TABLE CUSTOMERS ADD COLUMN REGION VARCHAR(255);
+ ALTER TABLE CUSTOMERS ADD COLUMN COUNTRY VARCHAR(255);
+ ALTER TABLE CUSTOMERS ADD COLUMN FIRSTNAME VARCHAR(255);
+ ALTER TABLE CUSTOMERS ADD COLUMN LASTNAME VARCHAR(255);
+ ALTER TABLE CUSTOMERS ADD COLUMN EMAIL VARCHAR(255);
+ ALTER TABLE CUSTOMERS ADD COLUMN PHONE VARCHAR(255);
+ ALTER TABLE CUSTOMERS ADD COLUMN PHONE2 VARCHAR(255);
+ ALTER TABLE CUSTOMERS ADD COLUMN FAX VARCHAR(255);
+ ALTER TABLE CUSTOMERS ADD COLUMN NOTES VARCHAR(255);
+ UPDATE CUSTOMERS SET ID = JDL_TMP1;
+ UPDATE CUSTOMERS SET SEARCHKEY = JDL_TMP2;
+ UPDATE CUSTOMERS SET TAXID = JDL_TMP3;
+ UPDATE CUSTOMERS SET NAME = JDL_TMP4;
+ UPDATE CUSTOMERS SET TAXCATEGORY = JDL_TMP5;
+ UPDATE CUSTOMERS SET CARD = JDL_TMP6;
+ UPDATE CUSTOMERS SET ADDRESS = JDL_TMP7;
+ UPDATE CUSTOMERS SET ADDRESS2 = JDL_TMP8;
+ UPDATE CUSTOMERS SET POSTAL = JDL_TMP9;
+ UPDATE CUSTOMERS SET CITY = JDL_TMP10;
+ UPDATE CUSTOMERS SET REGION = JDL_TMP11;
+ UPDATE CUSTOMERS SET COUNTRY = JDL_TMP12;
+ UPDATE CUSTOMERS SET FIRSTNAME = JDL_TMP13;
+ UPDATE CUSTOMERS SET LASTNAME = JDL_TMP14;
+ UPDATE CUSTOMERS SET EMAIL = JDL_TMP15;
+ UPDATE CUSTOMERS SET PHONE = JDL_TMP16;
+ UPDATE CUSTOMERS SET PHONE2 = JDL_TMP17;
+ UPDATE CUSTOMERS SET FAX = JDL_TMP18;
+ UPDATE CUSTOMERS SET NOTES = JDL_TMP19;
+ ALTER TABLE CUSTOMERS ALTER COLUMN ID NOT NULL;
+ ALTER TABLE CUSTOMERS ALTER COLUMN SEARCHKEY NOT NULL;
+ ALTER TABLE CUSTOMERS ALTER COLUMN NAME NOT NULL;
+ ALTER TABLE CUSTOMERS ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX CUSTOMERS_SKEY_INX ON CUSTOMERS(SEARCHKEY);
+ CREATE INDEX CUSTOMERS_TAXID_INX ON CUSTOMERS(TAXID);
+ CREATE INDEX CUSTOMERS_NAME_INX ON CUSTOMERS(NAME);
+ CREATE INDEX CUSTOMERS_CARD_INX ON CUSTOMERS(CARD)
+
+
+
+
+ ALTER TABLE THIRDPARTIES DROP PRIMARY KEY
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ALTER TABLE THIRDPARTIES ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE THIRDPARTIES ADD COLUMN CIF VARCHAR(255);
+ ALTER TABLE THIRDPARTIES ADD COLUMN NAME VARCHAR(255);
+ ALTER TABLE THIRDPARTIES ADD COLUMN ADDRESS VARCHAR(255);
+ ALTER TABLE THIRDPARTIES ADD COLUMN CONTACTCOMM VARCHAR(255);
+ ALTER TABLE THIRDPARTIES ADD COLUMN CONTACTFACT VARCHAR(255);
+ ALTER TABLE THIRDPARTIES ADD COLUMN PAYRULE VARCHAR(255);
+ ALTER TABLE THIRDPARTIES ADD COLUMN FAXNUMBER VARCHAR(255);
+ ALTER TABLE THIRDPARTIES ADD COLUMN PHONENUMBER VARCHAR(255);
+ ALTER TABLE THIRDPARTIES ADD COLUMN MOBILENUMBER VARCHAR(255);
+ ALTER TABLE THIRDPARTIES ADD COLUMN EMAIL VARCHAR(255);
+ ALTER TABLE THIRDPARTIES ADD COLUMN WEBPAGE VARCHAR(255);
+ ALTER TABLE THIRDPARTIES ADD COLUMN NOTES VARCHAR(255);
+ UPDATE THIRDPARTIES SET ID = JDL_TMP1;
+ UPDATE THIRDPARTIES SET CIF = JDL_TMP2;
+ UPDATE THIRDPARTIES SET NAME = JDL_TMP3;
+ UPDATE THIRDPARTIES SET ADDRESS = JDL_TMP4;
+ UPDATE THIRDPARTIES SET CONTACTCOMM = JDL_TMP5;
+ UPDATE THIRDPARTIES SET CONTACTFACT = JDL_TMP6;
+ UPDATE THIRDPARTIES SET PAYRULE = JDL_TMP7;
+ UPDATE THIRDPARTIES SET FAXNUMBER = JDL_TMP8;
+ UPDATE THIRDPARTIES SET PHONENUMBER = JDL_TMP9;
+ UPDATE THIRDPARTIES SET MOBILENUMBER = JDL_TMP10;
+ UPDATE THIRDPARTIES SET EMAIL = JDL_TMP11;
+ UPDATE THIRDPARTIES SET WEBPAGE = JDL_TMP12;
+ UPDATE THIRDPARTIES SET NOTES = JDL_TMP13;
+ ALTER TABLE THIRDPARTIES ALTER COLUMN ID NOT NULL;
+ ALTER TABLE THIRDPARTIES ALTER COLUMN CIF NOT NULL;
+ ALTER TABLE THIRDPARTIES ALTER COLUMN NAME NOT NULL;
+ ALTER TABLE THIRDPARTIES ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CREATE UNIQUE INDEX THIRDPARTIES_CIF_INX ON THIRDPARTIES(CIF);
+ CREATE UNIQUE INDEX THIRDPARTIES_NAME_INX ON THIRDPARTIES(NAME)
+
+
+
+
+
+
+
+
+ ALTER TABLE PRODUCTS_CAT DROP PRIMARY KEY
+
+
+ ALTER TABLE PRODUCTS_CAT ADD COLUMN PRODUCT VARCHAR(255);
+ UPDATE PRODUCTS_CAT SET PRODUCT = JDL_TMP1;
+ ALTER TABLE PRODUCTS_CAT ALTER COLUMN PRODUCT NOT NULL;
+ ALTER TABLE PRODUCTS_CAT ADD PRIMARY KEY (PRODUCT)
+
+
+ CREATE INDEX PRODUCTS_CAT_INX_1 ON PRODUCTS_CAT(CATORDER)
+
+
+
+ ALTER TABLE PRODUCTS_COM DROP PRIMARY KEY
+
+
+
+
+ ALTER TABLE PRODUCTS_COM ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE PRODUCTS_COM ADD COLUMN PRODUCT VARCHAR(255);
+ ALTER TABLE PRODUCTS_COM ADD COLUMN PRODUCT2 VARCHAR(255);
+ UPDATE PRODUCTS_COM SET ID = JDL_TMP1;
+ UPDATE PRODUCTS_COM SET PRODUCT = JDL_TMP2;
+ UPDATE PRODUCTS_COM SET PRODUCT2 = JDL_TMP3;
+ ALTER TABLE PRODUCTS_COM ALTER COLUMN ID NOT NULL;
+ ALTER TABLE PRODUCTS_COM ALTER COLUMN PRODUCT NOT NULL;
+ ALTER TABLE PRODUCTS_COM ALTER COLUMN PRODUCT2 NOT NULL;
+ ALTER TABLE PRODUCTS_COM ADD PRIMARY KEY (ID)
+
+
+
+
+ CREATE UNIQUE INDEX PCOM_INX_PROD ON PRODUCTS_COM(PRODUCT, PRODUCT2)
+
+
+
+ ALTER TABLE APPLICATIONS DROP PRIMARY KEY
+
+
+
+
+ ALTER TABLE APPLICATIONS ADD COLUMN ID VARCHAR(255);
+ ALTER TABLE APPLICATIONS ADD COLUMN NAME VARCHAR(255);
+ ALTER TABLE APPLICATIONS ADD COLUMN VERSION VARCHAR(255);
+ UPDATE APPLICATIONS SET ID = JDL_TMP1;
+ UPDATE APPLICATIONS SET NAME = JDL_TMP2;
+ UPDATE APPLICATIONS SET VERSION = JDL_TMP3;
+
+ ALTER TABLE APPLICATIONS ALTER COLUMN ID NOT NULL;
+ ALTER TABLE APPLICATIONS ALTER COLUMN NAME NOT NULL;
+ ALTER TABLE APPLICATIONS ALTER COLUMN VERSION NOT NULL;
+ ALTER TABLE APPLICATIONS ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/liquibase/upgradeorig/updatechromis.xml b/src-pos/uk/chromis/pos/liquibase/upgradeorig/updatechromis.xml
new file mode 100644
index 00000000..cdcd0423
--- /dev/null
+++ b/src-pos/uk/chromis/pos/liquibase/upgradeorig/updatechromis.xml
@@ -0,0 +1,1006 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CREATE SEQUENCE TICKETSNUM_INVOICE START WITH 1
+ --
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ CREATE TABLE PRODUCTS_KIT (
+ ID VARCHAR(255) NOT NULL,
+ PRODUCT VARCHAR(255) NOT NULL,
+ PRODUCT_KIT VARCHAR(255) NOT NULL,
+ QUANTITY DOUBLE NOT NULL,
+ PRIMARY KEY (ID));
+ ALTER TABLE PRODUCTS_KIT ADD CONSTRAINT PRODUCTS_KIT_FK_1 FOREIGN KEY (PRODUCT) REFERENCES PRODUCTS(ID);
+ ALTER TABLE PRODUCTS_KIT ADD CONSTRAINT PRODUCTS_KIT_FK_2 FOREIGN KEY (PRODUCT_KIT) REFERENCES PRODUCTS(ID);
+ CREATE UNIQUE INDEX PKIT_INX_PROD ON PRODUCTS_KIT(PRODUCT, PRODUCT_KIT)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ UPDATE PRODUCTS SET ISCATALOG = FALSE;
+ UPDATE PRODUCTS_CAT SET FLAG = TRUE;
+ UPDATE PRODUCTS SET ISCATALOG = (SELECT FLAG FROM PRODUCTS_CAT WHERE PRODUCTS.ID = PRODUCTS_CAT.PRODUCT),
+ CATORDER = (SELECT CATORDER FROM PRODUCTS_CAT WHERE PRODUCTS.ID = PRODUCTS_CAT.PRODUCT);
+ UPDATE PRODUCTS SET ISCATALOG = FALSE WHERE ISCATALOG IS NULL;
+
+
+
+
+
+
+
+
+
+ UPDATE PRODUCTS SET ISCATALOG = 0;
+ UPDATE PRODUCTS_CAT SET FLAG = 1;
+ UPDATE PRODUCTS SET ISCATALOG = (SELECT FLAG FROM PRODUCTS_CAT WHERE PRODUCTS.ID = PRODUCTS_CAT.PRODUCT),
+ CATORDER = (SELECT CATORDER FROM PRODUCTS_CAT WHERE PRODUCTS.ID = PRODUCTS_CAT.PRODUCT);
+ UPDATE PRODUCTS SET ISCATALOG = 0 WHERE ISCATALOG IS NULL;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ALTER TABLE SHIFT_BREAKS CHANGE STARTTIME STARTTIME TIMESTAMP NOT null DEFAULT CURRENT_TIMESTAMP
+ ALTER TABLE CLOSEDCASH CHANGE DATESTART DATESTART TIMESTAMP NOT null DEFAULT CURRENT_TIMESTAMP
+ ALTER TABLE SHIFTS CHANGE STARTSHIFT STARTSHIFT TIMESTAMP NOT null DEFAULT CURRENT_TIMESTAMP
+ ALTER TABLE LEAVES CHANGE STARTDATE STARTDATE TIMESTAMP NOT null DEFAULT CURRENT_TIMESTAMP
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SELECT COUNT(1) FROM RESOURCES WHERE ID='63'
+
+
+
+
+
+
+
+
+
+
+
+
+ SELECT COUNT(1) FROM RESOURCES WHERE NAME = 'img.reportlogo'
+
+
+
+
+
+
+
+
+
+
+
+
+ SELECT COUNT(1) FROM RESOURCES WHERE NAME = 'sql.ActionStockChanges'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NAME='sql.ActionStockChanges'
+
+
+
+
+
+
+ NAME='sql.ActionStockChanges'
+
+
+
+
+
+ SELECT COUNT(1) FROM RESOURCES WHERE NAME = 'help.promotion'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SELECT COUNT(1) FROM RESOURCES WHERE NAME = 'Display.Message'
+
+
+
+
+
+
+
+
+
+
+
+
+ SELECT COUNT(1) FROM RESOURCES WHERE NAME='script.ServiceCharge'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NAME='script.ServiceCharge'
+
+
+
+
+
+ SELECT COUNT(1) FROM RESOURCES WHERE NAME='Ticket.CloseTimer'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NAME='script.Refundit'
+
+
+
+
+
+ SELECT COUNT(1) FROM RESOURCES WHERE NAME = 'promotion.fixedpricegroup'
+
+
+
+
+
+
+
+
+
+
+
+
+ SELECT COUNT(1) FROM RESOURCES WHERE NAME = 'Ticket.LineDisplay'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SELECT COUNT(0) FROM CATEGORIES WHERE ID='000'
+
+
+
+
+
+
+
+
+
+
+
+ SELECT COUNT(0) FROM TAXCATEGORIES WHERE ID='001'
+
+
+
+
+
+
+
+
+
+
+
+ SELECT COUNT(0) FROM PRODUCTS WHERE ID='sc999-001'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ALTER TABLE LINEREMOVED ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ALTER TABLE DRAWEROPENED ADD PRIMARY KEY (ID)
+
+
+
+
+
+
+
+
+
+
+
+ DELETE FROM HVERSIONS
+
+
+
+ DELETE FROM SHAREDTICKETS
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ID='0'
+
+
+
+
+
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/liquibase/upgradeorig/updatesystem.xml b/src-pos/uk/chromis/pos/liquibase/upgradeorig/updatesystem.xml
new file mode 100644
index 00000000..846ef3e5
--- /dev/null
+++ b/src-pos/uk/chromis/pos/liquibase/upgradeorig/updatesystem.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/mant/FloorsEditor.java b/src-pos/uk/chromis/pos/mant/FloorsEditor.java
index f61fc149..c3ba6730 100644
--- a/src-pos/uk/chromis/pos/mant/FloorsEditor.java
+++ b/src-pos/uk/chromis/pos/mant/FloorsEditor.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/mant/FloorsInfo.java b/src-pos/uk/chromis/pos/mant/FloorsInfo.java
index e28163e9..8667a830 100644
--- a/src-pos/uk/chromis/pos/mant/FloorsInfo.java
+++ b/src-pos/uk/chromis/pos/mant/FloorsInfo.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/mant/JPanelFloors.java b/src-pos/uk/chromis/pos/mant/JPanelFloors.java
index 5de02c12..20334ec4 100644
--- a/src-pos/uk/chromis/pos/mant/JPanelFloors.java
+++ b/src-pos/uk/chromis/pos/mant/JPanelFloors.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/mant/JPanelPlaces.java b/src-pos/uk/chromis/pos/mant/JPanelPlaces.java
index 8993e51f..62723bc0 100644
--- a/src-pos/uk/chromis/pos/mant/JPanelPlaces.java
+++ b/src-pos/uk/chromis/pos/mant/JPanelPlaces.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -21,6 +21,7 @@
import javax.swing.ListCellRenderer;
import uk.chromis.basic.BasicException;
import uk.chromis.data.gui.ListCellRendererBasic;
+import uk.chromis.data.loader.ComparatorCreator;
import uk.chromis.data.loader.Datas;
import uk.chromis.data.loader.TableDefinition;
import uk.chromis.data.loader.Vectorer;
@@ -55,10 +56,27 @@ public JPanelPlaces() {
protected void init() {
DataLogicSales dlSales = null;
dlSales = (DataLogicSales) app.getBean("uk.chromis.pos.forms.DataLogicSales");
-
- tplaces = new TableDefinition(app.getSession(),
+
+ tplaces = new TableDefinition(app.getSession(),
"PLACES", new String[]{"ID", "NAME", "X", "Y", "FLOOR"}, new String[]{"ID", AppLocal.getIntString("Label.Name"), "X", "Y", AppLocal.getIntString("label.placefloor")}, new Datas[]{Datas.STRING, Datas.STRING, Datas.INT, Datas.INT, Datas.STRING}, new Formats[]{Formats.STRING, Formats.STRING, Formats.INT, Formats.INT, Formats.NULL}, new int[]{0}
);
+
+
+/*
+ tplaces = new TableDefinition(app.getSession(),
+ // "PLACES", new String[]{"ID", "NAME", "X", "Y", "FLOOR"},
+ // new String[]{"ID", AppLocal.getIntString("Label.Name"),
+ // "X", "Y", AppLocal.getIntString("label.placefloor")},
+ // new Datas[]{Datas.STRING, Datas.STRING, Datas.INT, Datas.INT, Datas.STRING},
+ // new Formats[]{Formats.STRING, Formats.STRING, Formats.INT, Formats.INT, Formats.NULL}, new int[]{0}
+
+ "PLACES", new String[]{"ID", "NAME", "X", "Y", "(SELECT NAME from FLOORS WHERE FLOORS.ID = FLOOR)"},
+ new String[]{"ID", AppLocal.getIntString("Label.Name"), "X", "Y", AppLocal.getIntString("label.placefloor")},
+ new Datas[]{Datas.STRING, Datas.STRING, Datas.INT, Datas.INT, Datas.STRING},
+ new Formats[]{Formats.STRING, Formats.STRING, Formats.INT, Formats.INT, Formats.STRING}, new int[]{0}
+ );
+
+ */
jeditor = new PlacesEditor(dlSales, dirty);
AppLocal.LIST_BY_RIGHTS = "";
}
@@ -87,7 +105,14 @@ public SaveProvider getSaveProvider() {
*/
@Override
public Vectorer getVectorer() {
- return tplaces.getVectorerBasic(new int[]{1});
+ // return tplaces.getVectorerBasic(new int[]{1});
+ return tplaces.getVectorerBasic(new int[]{1, 2, 3, 4});
+ }
+
+ @Override
+ public ComparatorCreator getComparatorCreator() {
+ return tplaces.getComparatorCreator(new int[]{1, 2, 3, 4});
+
}
/**
@@ -97,6 +122,7 @@ public Vectorer getVectorer() {
@Override
public ListCellRenderer getListCellRenderer() {
return new ListCellRendererBasic(tplaces.getRenderStringBasic(new int[]{1}));
+ //return new ListCellRendererBasic(tplaces.getRenderStringBasic(new int[]{4,1,2,3}));
}
/**
diff --git a/src-pos/uk/chromis/pos/mant/PlacesEditor.java b/src-pos/uk/chromis/pos/mant/PlacesEditor.java
index 80df9161..3ff4f07a 100644
--- a/src-pos/uk/chromis/pos/mant/PlacesEditor.java
+++ b/src-pos/uk/chromis/pos/mant/PlacesEditor.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/migrate/JFrmMigrate.form b/src-pos/uk/chromis/pos/migrate/JFrmMigrate.form
index 04663dd3..d874fe80 100644
--- a/src-pos/uk/chromis/pos/migrate/JFrmMigrate.form
+++ b/src-pos/uk/chromis/pos/migrate/JFrmMigrate.form
@@ -5,7 +5,7 @@
-
+
diff --git a/src-pos/uk/chromis/pos/migrate/JFrmMigrate.java b/src-pos/uk/chromis/pos/migrate/JFrmMigrate.java
index 4be94b16..b030baa0 100644
--- a/src-pos/uk/chromis/pos/migrate/JFrmMigrate.java
+++ b/src-pos/uk/chromis/pos/migrate/JFrmMigrate.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -47,7 +47,7 @@ public JFrmMigrate(AppProperties props) {
this.setIconImage(ImageIO.read(JRootFrame.class.getResourceAsStream("/uk/chromis/fixedimages/smllogo.png")));
} catch (IOException e) {
}
- setTitle(AppLocal.APP_NAME + " - " + AppLocal.APP_VERSION + " - " + AppLocal.getIntString("Menu.Configuration"));
+ setTitle(AppLocal.APP_NAME + " - " + AppLocal.APP_VERSION + " - " + AppLocal.getIntString("Menu.Migration"));
addWindowListener(new MyFrameListener());
@@ -84,8 +84,8 @@ private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
- java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
- setBounds((screenSize.width-702)/2, (screenSize.height-325)/2, 702, 325);
+ setSize(new java.awt.Dimension(702, 368));
+ setLocationRelativeTo(null);
}// //GEN-END:initComponents
/**
@@ -97,14 +97,6 @@ public static void main(final String args[]) {
public void run() {
AppConfig config = AppConfig.getInstance();
-
-
-// Set the look and feel.
- // try {
- // UIManager.setLookAndFeel(config.getProperty("swing.defaultlaf"));
- // } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException e) {
- // }
-
new JFrmMigrate(config).setVisible(true);
}
diff --git a/src-pos/uk/chromis/pos/migrate/JPaneldbMigrate.form b/src-pos/uk/chromis/pos/migrate/JPaneldbMigrate.form
index 3a047985..7af151ab 100644
--- a/src-pos/uk/chromis/pos/migrate/JPaneldbMigrate.form
+++ b/src-pos/uk/chromis/pos/migrate/JPaneldbMigrate.form
@@ -21,19 +21,22 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
@@ -47,7 +50,9 @@
-
+
+
+
@@ -172,7 +177,7 @@
-
+
@@ -236,9 +241,6 @@
-
-
-
@@ -289,9 +291,6 @@
-
-
-
@@ -309,9 +308,6 @@
-
-
-
@@ -369,5 +365,7 @@
+
+
diff --git a/src-pos/uk/chromis/pos/migrate/JPaneldbMigrate.java b/src-pos/uk/chromis/pos/migrate/JPaneldbMigrate.java
index 0bebfb1c..ea9adb77 100644
--- a/src-pos/uk/chromis/pos/migrate/JPaneldbMigrate.java
+++ b/src-pos/uk/chromis/pos/migrate/JPaneldbMigrate.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -17,7 +17,7 @@
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
//
-// Updated to use liguibase JDL
+//
package uk.chromis.pos.migrate;
import uk.chromis.basic.BasicException;
@@ -36,12 +36,15 @@
import java.net.URL;
import java.net.URLClassLoader;
import java.sql.Connection;
+import java.sql.DatabaseMetaData;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
+import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
+import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
@@ -65,16 +68,16 @@ public class JPaneldbMigrate extends JPanel implements JPanelView {
private DirtyManager dirty = new DirtyManager();
private Connection con;
private String sdbmanager;
- private Session session;
private Connection con2;
private String sdbmanager2;
private Session session2;
private ResultSet rs;
+ private ResultSet rs2;
private Statement stmt;
private Statement stmt2;
private String SQL;
private PreparedStatement pstmt;
- private PreparedStatement pstmt2;
+ private String ticketsnumInvoice;
private String ticketsnum;
private String ticketsnumRefund;
private String ticketsnumPayment;
@@ -87,24 +90,14 @@ public class JPaneldbMigrate extends JPanel implements JPanelView {
private String changelog;
private Liquibase liquibase;
- /**
- * Creates new form JPaneldbMigrate
- *
- * @param oApp
- */
public JPaneldbMigrate(AppView oApp) {
this(oApp.getProperties());
}
- /**
- *
- * @param props
- */
public JPaneldbMigrate(AppProperties props) {
initComponents();
jPanel2.setPreferredSize(new java.awt.Dimension(645, 209));
- // m_props = props;
m_panelconfig = new ArrayList<>();
jtxtDbDriverLib.getDocument().addDocumentListener(dirty);
@@ -115,108 +108,36 @@ public JPaneldbMigrate(AppProperties props) {
jbtnDbDriverLib.addActionListener(new DirectoryEvent(jtxtDbDriverLib));
jNewdbType.addActionListener(dirty);
+ jNewdbType.addItem("Apache Derby Embedded");
jNewdbType.addItem("MySQL");
jNewdbType.addItem("PostgreSQL");
- jNewdbType.addItem("Derby");
-
- }
-
- /**
- *
- * @return
- */
- @SuppressWarnings("empty-statement")
- public Boolean createMigratedb() {
-
- if ((!"MySQL".equals(sdbmanager2)) && (!"PostgreSQL".equals(sdbmanager2)) && (!"Apache Derby".equals(sdbmanager2))) {
- return (false);
- }
-
- try {
- ClassLoader cloader = new URLClassLoader(new URL[]{new File(AppConfig.getInstance().getProperty("db.driverlib")).toURI().toURL()});
- DriverManager.registerDriver(new DriverWrapper((Driver) Class.forName(AppConfig.getInstance().getProperty("db.driver"), true, cloader).newInstance()));
-
- changelog = "uk/chromis/pos/liquibase/migratelog.xml";
-
- Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(DriverManager.getConnection(db_url2, db_user2, db_password2)));
- liquibase = new Liquibase(changelog, new ClassLoaderResourceAccessor(), database);
- liquibase.update("implement");
- } catch (DatabaseException ex) {
- Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
- } catch (LiquibaseException ex) {
- Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
- } catch (MalformedURLException | SQLException | ClassNotFoundException | InstantiationException | IllegalAccessException ex) {
- Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
- }
- return (true);
- }
-
- /**
- *
- * @return
- */
- public Boolean addFKeys() {
-
- try {
- ClassLoader cloader = new URLClassLoader(new URL[]{new File(AppConfig.getInstance().getProperty("db.driverlib")).toURI().toURL()});
- DriverManager.registerDriver(new DriverWrapper((Driver) Class.forName(AppConfig.getInstance().getProperty("db.driver"), true, cloader).newInstance()));
-
- changelog = "uk/chromis/pos/liquibase/createfkslog.xml";
-
- Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(DriverManager.getConnection(db_url2, db_user2, db_password2)));
- liquibase = new Liquibase(changelog, new ClassLoaderResourceAccessor(), database);
- liquibase.update("implement");
- } catch (DatabaseException ex) {
- Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
- } catch (LiquibaseException ex) {
- Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
- } catch (MalformedURLException | SQLException | ClassNotFoundException | InstantiationException | IllegalAccessException ex) {
- Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
- }
- return (true);
}
- /**
- *
- * @return
- */
@Override
public JComponent getComponent() {
return this;
}
- /**
- *
- * @return
- */
@Override
public String getTitle() {
return AppLocal.getIntString("Menu.Configuration");
}
- /**
- *
- * @return
- */
public Boolean getSeconddbDetails() {
-
db_user2 = jtxtDbUser.getText();
db_url2 = jtxtDbURL.getText();
pass = jtxtDbPassword.getPassword();
db_password2 = new String(pass);
-
Properties connectionProps = new Properties();
connectionProps.put("user", db_user2);
connectionProps.put("password", db_password2);
try {
Class.forName(jtxtDbDriver.getText());
-
ClassLoader cloader = new URLClassLoader(new URL[]{new File(jtxtDbDriverLib.getText()).toURI().toURL()});
DriverManager.registerDriver(new DriverWrapper((Driver) Class.forName(jtxtDbDriver.getText(), true, cloader).newInstance()));
con2 = (Connection) DriverManager.getConnection(db_url2, db_user2, db_password2);
-
- session2 = new Session(db_url2, db_user2, db_password2);
+ Session session2 = new Session(db_url2, db_user2, db_password2);
sdbmanager2 = con2.getMetaData().getDatabaseProductName();
return (true);
} catch (ClassNotFoundException | MalformedURLException | InstantiationException | IllegalAccessException | SQLException e) {
@@ -225,10 +146,6 @@ public Boolean getSeconddbDetails() {
}
}
- /**
- *
- * @throws BasicException
- */
@Override
public void activate() throws BasicException {
// connect to the database
@@ -243,7 +160,7 @@ public void activate() throws BasicException {
}
try {
- session = AppViewConnection.createSession();
+ Session session = AppViewConnection.createSession();
con = DriverManager.getConnection(db_url, db_user, db_password);
sdbmanager = con.getMetaData().getDatabaseProductName();
} catch (BasicException | SQLException e) {
@@ -254,13 +171,9 @@ public void activate() throws BasicException {
}
- /**
- *
- * @return
- */
@Override
public boolean deactivate() {
- return (true);
+ return true;
}
/**
@@ -289,6 +202,7 @@ private void initComponents() {
jLabel5 = new javax.swing.JLabel();
jNewdbType = new javax.swing.JComboBox();
jButtonTest = new javax.swing.JButton();
+ pb = new javax.swing.JProgressBar();
setPreferredSize(new java.awt.Dimension(600, 300));
@@ -323,11 +237,6 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jLabel18.setText(AppLocal.getIntString("label.dbdriverlib")); // NOI18N
jtxtDbDriverLib.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
- jtxtDbDriverLib.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- jtxtDbDriverLibActionPerformed(evt);
- }
- });
jbtnDbDriverLib.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/fileopen.png"))); // NOI18N
jbtnDbDriverLib.setMaximumSize(new java.awt.Dimension(64, 32));
@@ -343,21 +252,11 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jLabel2.setText(AppLocal.getIntString("Label.DbURL")); // NOI18N
jtxtDbURL.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
- jtxtDbURL.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- jtxtDbURLActionPerformed(evt);
- }
- });
jLabel3.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel3.setText(AppLocal.getIntString("Label.DbUser")); // NOI18N
jtxtDbUser.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
- jtxtDbUser.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- jtxtDbUserActionPerformed(evt);
- }
- });
jLabel4.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jLabel4.setText(AppLocal.getIntString("Label.DbPassword")); // NOI18N
@@ -422,7 +321,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
- .addContainerGap(20, Short.MAX_VALUE)
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jbtnDbDriverLib, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(jPanel2Layout.createSequentialGroup()
@@ -460,17 +359,19 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, 583, Short.MAX_VALUE)
- .addContainerGap())
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
- .addContainerGap(364, Short.MAX_VALUE)
- .addComponent(jbtnMigrate, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jbtnMigrate, javax.swing.GroupLayout.PREFERRED_SIZE, 184, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jbtnExit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(26, 26, 26))
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(pb, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -481,7 +382,9 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- .addGap(18, 18, 18)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(pb, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jbtnMigrate, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jbtnExit, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
@@ -489,838 +392,554 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
);
}// //GEN-END:initComponents
- private void jbtnMigrateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnMigrateActionPerformed
- if (getSeconddbDetails()) {
-// check if this a supported migration path
-
- if (createMigratedb()) {
-
- try {
- stmt = (Statement) con.createStatement();
- stmt2 = (Statement) con2.createStatement();
-
-//copy applications table
- SQL = "SELECT * FROM APPLICATIONS";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO APPLICATIONS (ID, NAME, VERSION) VALUES (?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("NAME"));
- pstmt.setString(3, rs.getString("VERSION"));
- pstmt.executeUpdate();
- }
-
-// copy attribute table
- SQL = "SELECT * FROM ATTRIBUTE";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO ATTRIBUTE (ID, NAME) VALUES (?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("NAME"));
- pstmt.executeUpdate();
- }
+ private void replaceSequenceNumbers() {
+ pb.setString("Transferring sequences tables ");
+ ResultSet seqRS;
-// copy attributeinstance table
- SQL = "SELECT * FROM ATTRIBUTEINSTANCE";
- while (rs.next()) {
- SQL = "INSERT INTO ATTRIBUTEINSTANCE (ID, ATTRIBUTEINSTANCE_ID, ATTRIBUTE_ID, VALUE) VALUES (?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("ATTRIBUTEINSTANCE_ID"));
- pstmt.setString(3, rs.getString("ATTRIBUTE_ID"));
- pstmt.setString(4, rs.getString("VALUE"));
- pstmt.executeUpdate();
- }
+ try {
+ seqRS = con.createStatement().executeQuery("SELECT * FROM PICKUP_NUMBER");
+ updateSequence(getNextValue(seqRS), "PICKUP_NUMBER");
+ } catch (SQLException ex) {
+ }
+ try {
+ seqRS = con.createStatement().executeQuery("SELECT * FROM TICKETSNUM");
+ updateSequence(getNextValue(seqRS), "TICKETSNUM");
+ } catch (SQLException ex) {
+ }
+ try {
+ seqRS = con.createStatement().executeQuery("SELECT * FROM TICKETSNUM_PAYMENT");
+ updateSequence(getNextValue(seqRS), "TICKETSNUM_PAYMENT");
+ } catch (SQLException ex) {
+ }
+ try {
+ seqRS = con.createStatement().executeQuery("SELECT * FROM TICKETSNUM_REFUND");
+ updateSequence(getNextValue(seqRS), "TICKETSNUM_REFUND");
+ } catch (SQLException ex) {
+ }
+ try {
+ seqRS = con.createStatement().executeQuery("SELECT * FROM TICKETSNUM_INVOICE");
+ updateSequence(getNextValue(seqRS), "TICKETSNUM_INVOICE");
+ } catch (SQLException ex) {
+ }
+ }
-// copy attributeset table
- SQL = "SELECT * FROM ATTRIBUTESET";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO ATTRIBUTESET (ID, NAME) VALUES (?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("NAME"));
- pstmt.executeUpdate();
- }
+ private void updateSequence(String nextValue, String table) throws SQLException {
+ if ("MySQL".equals(sdbmanager2)) {
+ con2.createStatement().executeUpdate("UPDATE " + table + " SET ID = " + nextValue);
+ } else if (("Apache Derby".equals(sdbmanager2))) {
+ con2.createStatement().executeUpdate("DROP TABLE " + table);
+ Integer nextInt = Integer.parseInt(nextValue);
+ nextInt++;
+ con2.createStatement().executeUpdate("CREATE TABLE " + table + " (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH " + nextInt.toString() + "))");
+ } else {
+ Integer nextInt = Integer.parseInt(nextValue);
+ nextInt++;
+ con2.createStatement().executeUpdate("ALTER SEQUENCE " + table + " RESTART WITH " + nextInt.toString());
+ }
+ }
-// copy attributesetinstance table
- SQL = "SELECT * FROM ATTRIBUTESETINSTANCE";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO ATTRIBUTESETINSTANCE (ID, ATTRIBUTESET_ID, DESCRIPTION) VALUES (?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("ATTRIBUTESET_ID"));
- pstmt.setString(3, rs.getString("DESCRIPTION"));
- pstmt.executeUpdate();
- }
+ private String getNextValue(ResultSet rs) {
+ try {
+ while (rs.next()) {
+ if (("PostgreSQL".equals(sdbmanager))) {
+ return rs.getString("LAST_VALUE");
+ } else {;
+ return rs.getString("ID");
+ }
+ }
+ } catch (SQLException ex) {
+ }
+ return "1";
+ }
-// copy attributeuse table
- SQL = "SELECT * FROM ATTRIBUTEUSE";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO ATTRIBUTEUSE(ID, ATTRIBUTESET_ID, ATTRIBUTE_ID, LINENO) VALUES (?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("ATTRIBUTESET_ID"));
- pstmt.setString(3, rs.getString("ATTRIBUTE_ID"));
- pstmt.setInt(4, rs.getInt("LINENO"));
- pstmt.executeUpdate();
- }
+ private void performAction() {
+ if (getSeconddbDetails()) {
+ if (createDB()) {
+ DatabaseMetaData md;
+ ResultSet rsTables = null;
+ Statement stmtTables;
+ try {
+ md = con.getMetaData();
+ switch (sdbmanager) {
+ case "MySQL":
+ rsTables = md.getTables(null, null, "%", null);
+ break;
+ case "PostgreSQL":
+ stmtTables = con.createStatement();
+ rsTables = stmtTables.executeQuery("SELECT * FROM information_schema.tables WHERE table_type = 'BASE TABLE' AND table_schema = 'public' ORDER BY table_type, table_name");
+ break;
+ default:
+ stmtTables = con.createStatement();
+ rsTables = stmtTables.executeQuery("SELECT * FROM sys.systables WHERE tabletype='T' ORDER BY tablename");
+ }
+ while (rsTables.next()) {
+ String tableName;
+ switch (sdbmanager) {
+ case "MySQL":
+ tableName = rsTables.getString(3).toUpperCase();
+ break;
+ case "PostgreSQL":
+ tableName = rsTables.getString("table_name").toUpperCase();
+ break;
+ default:
+ tableName = rsTables.getString("tablename").toUpperCase();
+ }
-// copy attributevalue table
- SQL = "SELECT * FROM ATTRIBUTEVALUE";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO ATTRIBUTEVALUE (ID, ATTRIBUTE_ID, VALUE) VALUES (?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("ATTRIBUTE_ID"));
- pstmt.setString(3, rs.getString("VALUE"));
- pstmt.executeUpdate();
+ if (!tableName.equalsIgnoreCase("ticketsnum") && !tableName.equalsIgnoreCase("pickup_number")
+ && !tableName.equalsIgnoreCase("ticketsnum_invoice") && !tableName.equalsIgnoreCase("ticketsnum_payment")
+ && !tableName.equalsIgnoreCase("ticketsnum_refund")) {
+
+ pb.setString("Transferring data from table " + tableName);
+ String SQL = " SELECT * FROM " + tableName;
+ Statement dataStmt = con.createStatement();
+ ResultSet dataRS = dataStmt.executeQuery(SQL);
+ ResultSetMetaData rsmd = dataRS.getMetaData();
+ PreparedStatement pstmt;
+
+ while (dataRS.next()) {
+ StringBuilder SQLInsert = new StringBuilder();
+ StringBuilder SQLSubString = new StringBuilder();
+ SQLSubString.append("values (");
+ SQLInsert.append("INSERT INTO ");
+ SQLInsert.append(tableName);
+ SQLInsert.append(" (");
+
+ for (int j = 1; j <= rsmd.getColumnCount(); j++) {
+ if (dataRS.getString(rsmd.getColumnName(j)) != null) {
+ SQLInsert.append(rsmd.getColumnName(j));
+ SQLInsert.append(", ");
+ SQLSubString.append("?, ");
+ }
+ }
+
+ SQLInsert.setLength(SQLInsert.length() - 2);
+ SQLInsert.append(") ");
+ SQLSubString.setLength(SQLSubString.length() - 2);
+ SQLSubString.append(") ");
+ SQLInsert.append(SQLSubString);
+
+ pstmt = con2.prepareStatement(SQLInsert.toString());
+ int i = 1;
+ for (int j = 1; j <= rsmd.getColumnCount(); j++) {
+
+ if (dataRS.getString(rsmd.getColumnName(j)) != null) {
+ switch (rsmd.getColumnType(j)) {
+ case 12: //varchar
+ pstmt.setString(i, dataRS.getString(rsmd.getColumnName(j)));
+ break;
+ case 8: //double
+ pstmt.setDouble(i, dataRS.getDouble(rsmd.getColumnName(j)));
+ break;
+ case 16: //boolean
+ case -7:
+ pstmt.setBoolean(i, dataRS.getBoolean(rsmd.getColumnName(j)));
+ break;
+ case 2004: //blob
+ case -2:
+ case -4:
+ pstmt.setBytes(i, dataRS.getBytes(rsmd.getColumnName(j)));
+ break;
+ case 4:
+ case 5://integer
+ pstmt.setInt(i, dataRS.getInt(rsmd.getColumnName(j)));
+ break;
+ case 93: //timestamp
+ if (dataRS.getTimestamp(rsmd.getColumnName(j)).toString().equals("0000-00-00 00:00:00")) {
+ pstmt.setTimestamp(i, Timestamp.valueOf("2016-05-03 00:00:01"));
+ } else {
+ pstmt.setTimestamp(i, dataRS.getTimestamp(rsmd.getColumnName(j)));
+ }
+ break;
+ case 2:
+ pstmt.setBigDecimal(i, dataRS.getBigDecimal(rsmd.getColumnName(j)));
+ break;
+ }
+ i++;
+ }
+ }
+ pstmt.executeUpdate();
+ }
+ }
}
+ } catch (SQLException ex) {
+ Logger.getLogger(JPaneldbMigrate.class.getName()).log(Level.SEVERE, null, ex);
+ }
-// copy breaks table
- SQL = "SELECT * FROM BREAKS";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO BREAKS(ID, NAME, NOTES, VISIBLE) VALUES (?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("NAME"));
- pstmt.setString(3, rs.getString("NOTES"));
- pstmt.setBoolean(4, rs.getBoolean("VISIBLE"));
- pstmt.executeUpdate();
- }
+ replaceSequenceNumbers();
-// copy categories table
- SQL = "SELECT * FROM CATEGORIES";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO CATEGORIES(ID, NAME, PARENTID, IMAGE, TEXTTIP, CATSHOWNAME, COLOUR ) VALUES (?, ?, ?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("NAME"));
- pstmt.setString(3, rs.getString("PARENTID"));
- pstmt.setBytes(4, rs.getBytes("IMAGE"));
- pstmt.setString(5, rs.getString("TEXTTIP"));
- pstmt.setBoolean(6, rs.getBoolean("CATSHOWNAME"));
- pstmt.setString(7, rs.getString("COLOUR"));
- pstmt.executeUpdate();
- }
+ try {
+ con2.createStatement().executeUpdate("DELETE FROM DATABASECHANGELOG WHERE ID='New Database'");
+ } catch (SQLException ex) {
-// copy closedcash table
- SQL = "SELECT * FROM CLOSEDCASH";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO CLOSEDCASH(MONEY, HOST, HOSTSEQUENCE, DATESTART, DATEEND, NOSALES ) VALUES (?, ?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("MONEY"));
- pstmt.setString(2, rs.getString("HOST"));
- pstmt.setInt(3, rs.getInt("HOSTSEQUENCE"));
- pstmt.setTimestamp(4, rs.getTimestamp("DATESTART"));
- pstmt.setTimestamp(5, rs.getTimestamp("DATEEND"));
- pstmt.setInt(6, rs.getInt("NOSALES"));
- pstmt.executeUpdate();
- }
+ }
-// copy csvimport table
- SQL = "SELECT * FROM CSVIMPORT";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO CSVIMPORT (ID, ROWNUMBER, CSVERROR, REFERENCE, CODE, NAME, PRICEBUY, PRICESELL, PREVIOUSBUY, PREVIOUSSELL, CATEGORY ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("ROWNUMBER"));
- pstmt.setString(3, rs.getString("CSVERROR"));
- pstmt.setString(4, rs.getString("REFERENCE"));
- pstmt.setString(5, rs.getString("CODE"));
- pstmt.setString(6, rs.getString("NAME"));
- pstmt.setDouble(7, rs.getDouble("PRICEBUY"));
- pstmt.setDouble(8, rs.getDouble("PRICESELL"));
- pstmt.setDouble(9, rs.getDouble("PREVIOUSBUY"));
- pstmt.setDouble(10, rs.getDouble("PREVIOUSSELL"));
- pstmt.setString(11, rs.getString("CATEGORY"));
- pstmt.executeUpdate();
- }
+ try {
+ con2.createStatement().executeUpdate("DELETE FROM DATABASECHANGELOG WHERE ID='Good FKs'");
+ } catch (SQLException ex) {
+ }
-// copy CUSTOMERS table
- SQL = "SELECT * FROM CUSTOMERS";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO CUSTOMERS (ID, SEARCHKEY, TAXID, NAME, TAXCATEGORY, CARD, MAXDEBT, ADDRESS, ADDRESS2, POSTAL, CITY, REGION, COUNTRY, FIRSTNAME, LASTNAME, EMAIL, PHONE, PHONE2, FAX, NOTES, VISIBLE, CURDATE, CURDEBT, IMAGE )"
- + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("SEARCHKEY"));
- pstmt.setString(3, rs.getString("TAXID"));
- pstmt.setString(4, rs.getString("NAME"));
- pstmt.setString(5, rs.getString("TAXCATEGORY"));
- pstmt.setString(6, rs.getString("CARD"));
- pstmt.setDouble(7, rs.getDouble("MAXDEBT"));
- pstmt.setString(8, rs.getString("ADDRESS"));
- pstmt.setString(9, rs.getString("ADDRESS2"));
- pstmt.setString(10, rs.getString("POSTAL"));
- pstmt.setString(11, rs.getString("CITY"));
- pstmt.setString(12, rs.getString("REGION"));
- pstmt.setString(13, rs.getString("COUNTRY"));
- pstmt.setString(14, rs.getString("FIRSTNAME"));
- pstmt.setString(15, rs.getString("LASTNAME"));
- pstmt.setString(16, rs.getString("EMAIL"));
- pstmt.setString(17, rs.getString("PHONE"));
- pstmt.setString(18, rs.getString("PHONE2"));
- pstmt.setString(19, rs.getString("FAX"));
- pstmt.setString(20, rs.getString("NOTES"));
- pstmt.setBoolean(21, rs.getBoolean("VISIBLE"));
- pstmt.setTimestamp(22, rs.getTimestamp("CURDATE"));
- pstmt.setDouble(23, rs.getDouble("CURDEBT"));
- pstmt.setBytes(24, rs.getBytes("IMAGE"));
- pstmt.executeUpdate();
- }
+ try {
+ con2.createStatement().executeUpdate("DELETE FROM DATABASECHANGELOG WHERE ID='derby10.10.20'");
+ } catch (SQLException ex) {
+ }
-// copy DATABASECHANGELOG table
- pstmt2 = con.prepareStatement("DELETE FROM DATABASECHANGELOG");
- pstmt2.executeUpdate();
- SQL = "SELECT * FROM DATABASECHANGELOG";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO DATABASECHANGELOG (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, EXECTYPE, MD5SUM, DESCRIPTION, COMMENTS, TAG, LIQUIBASE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("AUTHOR"));
- pstmt.setString(3, rs.getString("FILENAME"));
- pstmt.setTimestamp(4, rs.getTimestamp("DATEEXECUTED"));
- pstmt.setInt(5, rs.getInt("ORDEREXECUTED"));
- pstmt.setString(6, rs.getString("EXECTYPE"));
- pstmt.setString(7, rs.getString("MD5SUM"));
- pstmt.setString(8, rs.getString("DESCRIPTION"));
- pstmt.setString(9, rs.getString("COMMENTS"));
- pstmt.setString(10, rs.getString("TAG"));
- pstmt.setString(11, rs.getString("LIQUIBASE"));
- pstmt.executeUpdate();
- }
+ try {
+ con2.createStatement().executeUpdate("DELETE FROM DATABASECHANGELOG WHERE ID='Insert into tables required indexes for migration (New Database)'");
+ } catch (SQLException ex) {
+ }
-// copy DBPERMISSIONS table
- SQL = "SELECT * FROM DBPERMISSIONS";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO DBPERMISSIONS (CLASSNAME, SECTION, DISPLAYNAME, DESCRIPTION) VALUES (?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("CLASSNAME"));
- pstmt.setString(2, rs.getString("SECTION"));
- pstmt.setString(3, rs.getString("DISPLAYNAME"));
- pstmt.setString(4, rs.getString("DESCRIPTION"));
- pstmt.executeUpdate();
- }
-// copy DRAWEROPEN table
- SQL = "SELECT * FROM DRAWEROPENED";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO DRAWEROPENED (OPENDATE, NAME, TICKETID) VALUES (?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("OPENDATE"));
- pstmt.setString(2, rs.getString("NAME"));
- pstmt.setString(3, rs.getString("TICKETID"));
- pstmt.executeUpdate();
- }
+ try {
+ con2.createStatement().executeUpdate("DELETE FROM DATABASECHANGELOG WHERE ID='Create Foreign Keys in tables part of migration (New Database)'");
+ } catch (SQLException ex) {
+ }
-// copy FLOORS table
- SQL = "SELECT * FROM FLOORS";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO FLOORS (ID, NAME, IMAGE) VALUES (?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("NAME"));
- pstmt.setBytes(3, rs.getBytes("IMAGE"));
- pstmt.executeUpdate();
- }
+ try {
+ con2.createStatement().executeUpdate("DELETE FROM DATABASECHANGELOG WHERE ID='Create Primary keys (new db - migrate function)'");
+ } catch (SQLException ex) {
+ }
-// copy LEAVES table
- SQL = "SELECT * FROM LEAVES";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO LEAVES (ID, PPLID, NAME, STARTDATE, ENDDATE, NOTES) VALUES (?, ?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("PPLID"));
- pstmt.setString(3, rs.getString("NAME"));
- pstmt.setTimestamp(4, rs.getTimestamp("STARTDATE"));
- pstmt.setTimestamp(5, rs.getTimestamp("ENDDATE"));
- pstmt.setString(6, rs.getString("NOTES"));
- pstmt.executeUpdate();
- }
+ try {
+ ClassLoader cloader = new URLClassLoader(new URL[]{new File(AppConfig.getInstance().getProperty("db.driverlib")).toURI().toURL()});
+ DriverManager.registerDriver(new DriverWrapper((Driver) Class.forName(AppConfig.getInstance().getProperty("db.driver"), true, cloader).newInstance()));
+ Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(DriverManager.getConnection(db_url2, db_user2, db_password2)));
+ pb.setString("Adding Primary Keys ");
+ changelog = "uk/chromis/pos/liquibase/common/primarykeys.xml";
+ liquibase = new Liquibase(changelog, new ClassLoaderResourceAccessor(), database);
+ liquibase.update("implement");
+ pb.setString("Creating Indexes and Foreign Keys ");
+ changelog = "uk/chromis/pos/liquibase/common/addIndexes.xml";
+ liquibase = new Liquibase(changelog, new ClassLoaderResourceAccessor(), database);
+ liquibase.update("implement");
+ } catch (DatabaseException ex) {
+ Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (LiquibaseException ex) {
+ Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
+ } catch (MalformedURLException | SQLException | ClassNotFoundException | InstantiationException | IllegalAccessException ex) {
+ Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
+ }
-// copy LINEREMOVED table
- SQL = "SELECT * FROM LINEREMOVED";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO LINEREMOVED (REMOVEDDATE, NAME, TICKETID, PRODUCTID, PRODUCTNAME, UNITS) VALUES (?, ?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setTimestamp(1, rs.getTimestamp("REMOVEDDATE"));
- pstmt.setString(2, rs.getString("NAME"));
- pstmt.setString(3, rs.getString("TICKETID"));
- pstmt.setString(4, rs.getString("PRODUCTID"));
- pstmt.setString(5, rs.getString("PRODUCTNAME"));
- pstmt.setInt(6, rs.getInt("UNITS"));
- pstmt.executeUpdate();
- }
+ pb.setString("Migrating Complete ... ");
+ pb.setIndeterminate(false);
-// copy LOCATIONS table
- SQL = "SELECT * FROM LOCATIONS";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO LOCATIONS (ID, NAME, ADDRESS) VALUES (?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("NAME"));
- pstmt.setString(3, rs.getString("ADDRESS"));
- pstmt.executeUpdate();
- }
+ AppConfig.getInstance().setProperty("db.engine", sdbmanager2);
+ AppConfig.getInstance().setProperty("db.driverlib", jtxtDbDriverLib.getText());
+ AppConfig.getInstance().setProperty("db.driver", jtxtDbDriver.getText());
+ AppConfig.getInstance().setProperty("db.URL", jtxtDbURL.getText());
+ AppConfig.getInstance().setProperty("db.user", jtxtDbUser.getText());
+ AltEncrypter cypher = new AltEncrypter("cypherkey" + jtxtDbUser.getText());
+ AppConfig.getInstance().setProperty("db.password", "crypt:" + cypher.encrypt(new String(jtxtDbPassword.getPassword())));
+ dirty.setDirty(false);
-// copy MOORERS TABLE
- SQL = "SELECT * FROM MOORERS";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO MOORERS (VESSELNAME, SIZE, DAYS, POWER) VALUES (?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("VESSELNAME"));
- pstmt.setInt(2, rs.getInt("SIZE"));
- pstmt.setInt(3, rs.getInt("DAYS"));
- pstmt.setBoolean(4, rs.getBoolean("POWER"));
- pstmt.executeUpdate();
- }
+ for (PanelConfig c : m_panelconfig) {
+ c.saveProperties();
+ }
-// copy ORDERS table
- SQL = "SELECT * FROM ORDERS";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO ORDERS (ID, ORDERID, QTY, DETAILS, ATTRIBUTES, NOTES, TICKETID, ORDERTIME, DISPLAYID, AUXILIARY) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("ORDERID"));
- pstmt.setInt(3, rs.getInt("QTY"));
- pstmt.setString(4, rs.getString("DETAILS"));
- pstmt.setString(5, rs.getString("ATTRIBUTES"));
- pstmt.setString(6, rs.getString("NOTES"));
- pstmt.setString(7, rs.getString("TICKETID"));
- pstmt.setTimestamp(8, rs.getTimestamp("ORDERTIME"));
- pstmt.setString(9, rs.getString("DISPLAYID"));
- pstmt.setInt(10, rs.getInt("AUXILIARY"));
- pstmt.executeUpdate();
- }
+ try {
+ AppConfig.getInstance().save();
+ JOptionPane.showMessageDialog(this, AppLocal.getIntString("message.restartchanges"), AppLocal.getIntString("message.title"), JOptionPane.INFORMATION_MESSAGE);
+ jbtnMigrate.setEnabled(false);
+ } catch (IOException ex) {
+ Logger.getLogger(JPaneldbMigrate.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ } else {
+ pb.setString("");
+ pb.setIndeterminate(false);
+ JOptionPane.showMessageDialog(this, "Database already exists", "Database Found", JOptionPane.INFORMATION_MESSAGE);
+ }
+ }
+ }
-// copy payments table
- SQL = "SELECT * FROM PAYMENTS";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO PAYMENTS (ID, RECEIPT, PAYMENT, TOTAL, TRANSID, NOTES, TENDERED, CARDNAME, RETURNMSG) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("RECEIPT"));
- pstmt.setString(3, rs.getString("PAYMENT"));
- pstmt.setDouble(4, rs.getDouble("TOTAL"));
- pstmt.setString(5, rs.getString("TRANSID"));
- pstmt.setString(6, rs.getString("NOTES"));
- pstmt.setDouble(7, rs.getDouble("TENDERED"));
- pstmt.setString(8, rs.getString("CARDNAME"));
- pstmt.setBytes(9, rs.getBytes("RETURNMSG"));
- pstmt.executeUpdate();
- }
+ private Boolean createDB() {
+ // check if the database already exists
+ Statement chkStmt;
+ try {
+ chkStmt = con2.createStatement();
+ ResultSet chkRS = chkStmt.executeQuery("SELECT * FROM APPLICATIONS");
+ chkRS.close();
+ chkStmt.close();
+ return false;
+ } catch (SQLException ex) {
+ }
-// copy PEOPLE table
- SQL = "SELECT * FROM PEOPLE";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO PEOPLE (ID, NAME, APPPASSWORD, CARD, ROLE, VISIBLE, IMAGE) VALUES (?, ?, ?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("NAME"));
- pstmt.setString(3, rs.getString("APPPASSWORD"));
- pstmt.setString(4, rs.getString("CARD"));
- pstmt.setString(5, rs.getString("ROLE"));
- pstmt.setBoolean(6, rs.getBoolean("VISIBLE"));
- pstmt.setBytes(7, rs.getBytes("IMAGE"));
- pstmt.executeUpdate();
- }
+ pb.setString("Creating blank database ..... ");
+ if ((!"MySQL".equals(sdbmanager2)) && (!"PostgreSQL".equals(sdbmanager2)) && (!"Apache Derby".equals(sdbmanager2))) {
+ return (false);
+ }
-// copy Places table
- SQL = "SELECT * FROM PLACES";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO PLACES (ID, NAME, X, Y, FLOOR, CUSTOMER, WAITER, TICKETID, TABLEMOVED) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("NAME"));
- pstmt.setInt(3, rs.getInt("X"));
- pstmt.setInt(4, rs.getInt("Y"));
- pstmt.setString(5, rs.getString("FLOOR"));
- pstmt.setString(6, rs.getString("CUSTOMER"));
- pstmt.setString(7, rs.getString("WAITER"));
- pstmt.setString(8, rs.getString("TICKETID"));
- pstmt.setBoolean(9, rs.getBoolean("TABLEMOVED"));
- pstmt.executeUpdate();
- }
+ DatabaseMetaData md;
+ ResultSet rsTables = null;
+ Statement stmtTables;
+ try {
+ md = con.getMetaData();
+ switch (sdbmanager) {
+ case "MySQL":
+ rsTables = md.getTables(null, null, "%", null);
+ break;
+ case "PostgreSQL":
+ stmtTables = con.createStatement();
+ rsTables = stmtTables.executeQuery("SELECT * FROM information_schema.tables WHERE table_type = 'BASE TABLE' AND table_schema = 'public' ORDER BY table_type, table_name");
+ break;
+ default:
+ stmtTables = con.createStatement();
+ rsTables = stmtTables.executeQuery("SELECT * FROM sys.systables WHERE tabletype='T' ORDER BY tablename");
+ }
-// copy Products table
- SQL = "SELECT * FROM PRODUCTS";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO PRODUCTS (ID, REFERENCE, CODE, CODETYPE, NAME, PRICEBUY, PRICESELL, CATEGORY, TAXCAT, ATTRIBUTESET_ID,"
- + " STOCKCOST, STOCKVOLUME, IMAGE, ISCOM, ISSCALE, ISKITCHEN, PRINTKB, SENDSTATUS, ISSERVICE, DISPLAY, ATTRIBUTES,"
- + " ISVPRICE, ISVERPATRIB, TEXTTIP, WARRANTY, STOCKUNITS, ALIAS, ALWAYSAVAILABLE, CANDISCOUNT, ISPACK, PACKQUANTITY, "
- + " PACKPRODUCT, ISCATALOG, CATORDER, PROMOTIONID )"
- + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("REFERENCE"));
- pstmt.setString(3, rs.getString("CODE"));
- pstmt.setString(4, rs.getString("CODETYPE"));
- pstmt.setString(5, rs.getString("NAME"));
- pstmt.setDouble(6, rs.getDouble("PRICEBUY"));
- pstmt.setDouble(7, rs.getDouble("PRICESELL"));
- pstmt.setString(8, rs.getString("CATEGORY"));
- pstmt.setString(9, rs.getString("TAXCAT"));
- pstmt.setString(10, rs.getString("ATTRIBUTESET_ID"));
- pstmt.setDouble(11, rs.getDouble("STOCKCOST"));
- pstmt.setDouble(12, rs.getDouble("STOCKVOLUME"));
- pstmt.setBytes(13, rs.getBytes("IMAGE"));
- pstmt.setBoolean(14, rs.getBoolean("ISCOM"));
- pstmt.setBoolean(15, rs.getBoolean("ISSCALE"));
- pstmt.setBoolean(16, rs.getBoolean("ISKITCHEN"));
- pstmt.setBoolean(17, rs.getBoolean("PRINTKB"));
- pstmt.setBoolean(18, rs.getBoolean("SENDSTATUS"));
- pstmt.setBoolean(19, rs.getBoolean("ISSERVICE"));
- pstmt.setString(20, rs.getString("DISPLAY"));
- pstmt.setBytes(21, rs.getBytes("ATTRIBUTES"));
- pstmt.setBoolean(22, rs.getBoolean("ISVPRICE"));
- pstmt.setBoolean(23, rs.getBoolean("ISVERPATRIB"));
- pstmt.setString(24, rs.getString("TEXTTIP"));
- pstmt.setBoolean(25, rs.getBoolean("WARRANTY"));
- pstmt.setDouble(26, rs.getDouble("STOCKUNITS"));
- pstmt.setString(27, rs.getString("ALIAS"));
- pstmt.setBoolean(28, rs.getBoolean("ALWAYSAVAILABLE"));
- pstmt.setBoolean(29, rs.getBoolean("CANDISCOUNT"));
- pstmt.setBoolean(30, rs.getBoolean("ISPACK"));
- pstmt.setDouble(31, rs.getDouble("PACKQUANTITY"));
- pstmt.setString(32, rs.getString("PACKPRODUCT"));
- pstmt.setString(33, rs.getString("ISCATALOG"));
- pstmt.setString(34, rs.getString("CATORDER"));
- pstmt.setString(35, rs.getString("PROMOTIONID"));
-
- if (!"xxx999_999xxx_x9x9x9".equals(rs.getString(1))) {
- pstmt.executeUpdate();
+ while (rsTables.next()) {
+ switch (sdbmanager) {
+ case "MySQL":
+ if (!rsTables.getString(3).equalsIgnoreCase("ticketsnum") && !rsTables.getString(3).equalsIgnoreCase("pickup_number")
+ && !rsTables.getString(3).equalsIgnoreCase("ticketsnum_invoice") && !rsTables.getString(3).equalsIgnoreCase("ticketsnum_payment")
+ && !rsTables.getString(3).equalsIgnoreCase("ticketsnum_refund")) {
+ createTable(rsTables.getString(3));
}
- }
-
- // copy PRODUCTS_COM table
- SQL = "SELECT * FROM PRODUCTS_COM";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO PRODUCTS_COM(ID, PRODUCT, PRODUCT2 ) VALUES (?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("PRODUCT"));
- pstmt.setString(3, rs.getString("PRODUCT2"));
- pstmt.executeUpdate();
- }
-
- // copy RECEIPTS table
- SQL = "SELECT * FROM RECEIPTS";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO RECEIPTS(ID, MONEY, DATENEW, ATTRIBUTES, PERSON ) VALUES (?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("MONEY"));
- pstmt.setTimestamp(3, rs.getTimestamp("DATENEW"));
- pstmt.setBytes(4, rs.getBytes("ATTRIBUTES"));
- pstmt.setString(5, rs.getString("PERSON"));
- pstmt.executeUpdate();
- }
-
-// copy reservation_customers table
- SQL = "SELECT * FROM RESERVATION_CUSTOMERS";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO RESERVATION_CUSTOMERS(ID, CUSTOMER) VALUES (?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("CUSTOMER"));
- pstmt.executeUpdate();
- }
-
- // copy reservationS table
- SQL = "SELECT * FROM RESERVATIONS";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO RESERVATIONS(ID, CREATED, DATENEW, TITLE, CHAIRS, ISDONE, DESCRIPTION ) VALUES (?, ?, ?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setTimestamp(2, rs.getTimestamp("CREATED"));
- pstmt.setTimestamp(3, rs.getTimestamp("DATENEW"));
- pstmt.setString(4, rs.getString("TITLE"));
- pstmt.setInt(5, rs.getInt("CHAIRS"));
- pstmt.setBoolean(6, rs.getBoolean("ISDONE"));
- pstmt.setString(7, rs.getString("DESCRIPTION"));
- pstmt.executeUpdate();
- }
-
-// copy resources table
- SQL = "SELECT * FROM RESOURCES";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO RESOURCES(ID, NAME, RESTYPE, CONTENT) VALUES (?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("NAME"));
- pstmt.setInt(3, rs.getInt("RESTYPE"));
- pstmt.setBytes(4, rs.getBytes("CONTENT"));
- pstmt.executeUpdate();
- }
-
- // copy ROLES table
- SQL = "SELECT * FROM ROLES";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO ROLES(ID, NAME, PERMISSIONS, RIGHTSLEVEL ) VALUES (?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("NAME"));
- pstmt.setBytes(3, rs.getBytes("PERMISSIONS"));
- pstmt.setInt(4, rs.getInt("RIGHTSLEVEL"));
- pstmt.executeUpdate();
- }
-
- // copy SHAREDTICKETS table
- SQL = "SELECT * FROM SHAREDTICKETS";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO SHAREDTICKETS(ID, NAME, CONTENT, APPUSER, PICKUPID ) VALUES (?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("NAME"));
- pstmt.setBytes(3, rs.getBytes("CONTENT"));
- pstmt.setBytes(4, rs.getBytes("APPUSER"));
- pstmt.setInt(5, rs.getInt("PICKUPID"));
- pstmt.executeUpdate();
- }
-
- // copy SHIFT_BREAKS table
- SQL = "SELECT * FROM SHIFT_BREAKS";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO SHIFT_BREAKS(ID, SHIFTID, BREAKID, STARTTIME, ENDTIME ) VALUES (?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("SHIFTID"));
- pstmt.setString(3, rs.getString("BREAKID"));
- pstmt.setTimestamp(4, rs.getTimestamp("STARTTIME"));
- pstmt.setTimestamp(5, rs.getTimestamp("ENDTIME"));
- pstmt.executeUpdate();
- }
-
- // copy SHIFTS table
- SQL = "SELECT * FROM SHIFTS";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO SHIFTS(ID, STARTSHIFT, ENDSHIFT, PPLID ) VALUES (?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setTimestamp(2, rs.getTimestamp("STARTSHIFT"));
- pstmt.setTimestamp(3, rs.getTimestamp("ENDSHIFT"));
- pstmt.setString(4, rs.getString("PPLID"));
- pstmt.executeUpdate();
- }
-
- // copy STOCKCHANGES table
- SQL = "SELECT * FROM STOCKCHANGES";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO STOCKCHANGES(ID, LOCATION, USERNAME, UPLOADTIME, PRODUCTID, TYPE, DISPLAY, FIELD, TEXTVALUE, BLOBVALUE, PROCESSED ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("LOCATION"));
- pstmt.setString(3, rs.getString("USERNAME"));
- pstmt.setTimestamp(4, rs.getTimestamp("UPLOADTIME"));
- pstmt.setString(5, rs.getString("PRODUCTID"));
- pstmt.setInt(6, rs.getInt("TYPE"));
- pstmt.setString(7, rs.getString("DISPLAY"));
- pstmt.setString(8, rs.getString("FIELD"));
- pstmt.setString(9, rs.getString("TEXTVALUE"));
- pstmt.setBytes(10, rs.getBytes("BLOBVALUE"));
- pstmt.setInt(11, rs.getInt("CHANGES_PROCESSED"));
- pstmt.executeUpdate();
- }
-
- // copy STOCKCURRENT table
- SQL = "SELECT * FROM STOCKCURRENT";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO STOCKCURRENT(LOCATION, PRODUCT, ATTRIBUTESETINSTANCE_ID, UNITS ) VALUES (?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("LOCATION"));
- pstmt.setString(2, rs.getString("PRODUCT"));
- pstmt.setString(3, rs.getString("ATTRIBUTESETINSTANCE_ID"));
- pstmt.setDouble(4, rs.getDouble("UNITS"));
- pstmt.executeUpdate();
- }
-
- // copy STOCKDIARY table
- SQL = "SELECT * FROM STOCKDIARY";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO STOCKDIARY(ID, DATENEW, REASON, LOCATION, PRODUCT, ATTRIBUTESETINSTANCE_ID, UNITS, PRICE, APPUSER ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setTimestamp(2, rs.getTimestamp("DATENEW"));
- pstmt.setInt(3, rs.getInt("REASON"));
- pstmt.setString(4, rs.getString("LOCATION"));
- pstmt.setString(5, rs.getString("PRODUCT"));
- pstmt.setString(6, rs.getString("ATTRIBUTESETINSTANCE_ID"));
- pstmt.setDouble(7, rs.getDouble("UNITS"));
- pstmt.setDouble(8, rs.getDouble("PRICE"));
- pstmt.setString(9, rs.getString("APPUSER"));
- pstmt.executeUpdate();
- }
-
- // copy STOCKLEVEL table
- SQL = "SELECT * FROM STOCKLEVEL";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO STOCKLEVEL(ID, LOCATION, PRODUCT, STOCKSECURITY, STOCKMAXIMUM ) VALUES (?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("LOCATION"));
- pstmt.setString(3, rs.getString("PRODUCT"));
- pstmt.setDouble(4, rs.getDouble("STOCKSECURITY"));
- pstmt.setDouble(5, rs.getDouble("STOCKMAXIMUM"));
- pstmt.executeUpdate();
- }
-
-// copy TAXCATEGORIES table
- SQL = "SELECT * FROM TAXCATEGORIES";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO TAXCATEGORIES (ID, NAME) VALUES (?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("NAME"));
- pstmt.executeUpdate();
- }
+ break;
+ case "PostgreSQL":
+ if (!rsTables.getString("table_name").equalsIgnoreCase("ticketsnum") && !rsTables.getString("table_name").equalsIgnoreCase("pickup_number")
+ && !rsTables.getString("table_name").equalsIgnoreCase("ticketsnum_invoice") && !rsTables.getString("table_name").equalsIgnoreCase("ticketsnum_payment")
+ && !rsTables.getString("table_name").equalsIgnoreCase("ticketsnum_refund")) {
+ createTable(rsTables.getString("table_name").toLowerCase());
+ }
+ break;
+ default:
+ if (!rsTables.getString("tablename").equalsIgnoreCase("ticketsnum") && !rsTables.getString("tablename").equalsIgnoreCase("pickup_number")
+ && !rsTables.getString("tablename").equalsIgnoreCase("ticketsnum_invoice") && !rsTables.getString("tablename").equalsIgnoreCase("ticketsnum_payment")
+ && !rsTables.getString("tablename").equalsIgnoreCase("ticketsnum_refund")) {
+ createTable(rsTables.getString("tablename").toUpperCase());
-// copy TAXCUSTCATEGORIES table
- SQL = "SELECT * FROM TAXCUSTCATEGORIES";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO TAXCUSTCATEGORIES (ID, NAME) VALUES (?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("NAME"));
- pstmt.executeUpdate();
- }
+ }
+ }
+ }
+ } catch (SQLException ex) {
+ Logger.getLogger(JPaneldbMigrate.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ try {
+ ClassLoader cloader = new URLClassLoader(new URL[]{new File(AppConfig.getInstance().getProperty("db.driverlib")).toURI().toURL()});
+ DriverManager.registerDriver(new DriverWrapper((Driver) Class.forName(AppConfig.getInstance().getProperty("db.driver"), true, cloader).newInstance()));
+ changelog = "uk/chromis/pos/liquibase/common/sequences.xml";
+ Database database = DatabaseFactory.getInstance().findCorrectDatabaseImplementation(new JdbcConnection(DriverManager.getConnection(db_url2, db_user2, db_password2)));
+ liquibase = new Liquibase(changelog, new ClassLoaderResourceAccessor(), database);
+ liquibase.update("implement");
-// copy TAXES table
- SQL = "SELECT * FROM TAXES";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO TAXES (ID, NAME, CATEGORY, CUSTCATEGORY, PARENTID, RATE, RATECASCADE, RATEORDER ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("NAME"));
- pstmt.setString(3, rs.getString("CATEGORY"));
- pstmt.setString(4, rs.getString("CUSTCATEGORY"));
- pstmt.setString(5, rs.getString("PARENTID"));
- pstmt.setDouble(6, rs.getDouble("RATE"));
- pstmt.setBoolean(7, rs.getBoolean("RATECASCADE"));
- pstmt.setInt(8, rs.getInt("RATEORDER"));
- pstmt.executeUpdate();
- }
+ } catch (DatabaseException ex) {
+ Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
-// copy TAXLINES table
- SQL = "SELECT * FROM TAXLINES";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO TAXLINES (ID, RECEIPT, TAXID, BASE, AMOUNT ) VALUES (?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("RECEIPT"));
- pstmt.setString(3, rs.getString("TAXID"));
- pstmt.setDouble(4, rs.getDouble("BASE"));
- pstmt.setDouble(5, rs.getDouble("AMOUNT"));
- pstmt.executeUpdate();
- }
+ } catch (LiquibaseException ex) {
+ Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
-// copy THIRDPARTIES table
- SQL = "SELECT * FROM THIRDPARTIES";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO THIRDPARTIES (ID, CIF, NAME, ADDRESS, CONTACTCOMM, CONTACTFACT, PAYRULE, FAXNUMBER, PHONENUMBER, MOBILENUMBER, EMAIL, WEBPAGE, NOTES ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setString(2, rs.getString("CIF"));
- pstmt.setString(3, rs.getString("NAME"));
- pstmt.setString(4, rs.getString("ADDRESS"));
- pstmt.setString(5, rs.getString("CONTACTCOMM"));
- pstmt.setString(6, rs.getString("CONTACTFACT"));
- pstmt.setString(7, rs.getString("PAYRULE"));
- pstmt.setString(8, rs.getString("FAXNUMBER"));
- pstmt.setString(9, rs.getString("PHONENUMBER"));
- pstmt.setString(10, rs.getString("MOBILENUMBER"));
- pstmt.setString(11, rs.getString("EMAIL"));
- pstmt.setString(12, rs.getString("WEBPAGE"));
- pstmt.setString(13, rs.getString("NOTES"));
- pstmt.executeUpdate();
- }
+ } catch (MalformedURLException | SQLException | ClassNotFoundException | InstantiationException | IllegalAccessException ex) {
+ Logger.getLogger(JRootApp.class.getName()).log(Level.SEVERE, null, ex);
+ }
-// copy TICKETLINES table
- SQL = "SELECT * FROM TICKETLINES";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO TICKETLINES (TICKET, LINE, PRODUCT, ATTRIBUTESETINSTANCE_ID, UNITS, PRICE, TAXID, ATTRIBUTES, REFUNDQTY ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("TICKET"));
- pstmt.setInt(2, rs.getInt("LINE"));
- pstmt.setString(3, rs.getString("PRODUCT"));
- pstmt.setString(4, rs.getString("ATTRIBUTESETINSTANCE_ID"));
- pstmt.setDouble(5, rs.getDouble("UNITS"));
- pstmt.setDouble(6, rs.getDouble("PRICE"));
- pstmt.setString(7, rs.getString("TAXID"));
- pstmt.setBytes(8, rs.getBytes("ATTRIBUTES"));
- pstmt.setString(9, rs.getString("REFUNDQTY"));
- pstmt.executeUpdate();
- }
+ try {
+ stmt = con2.createStatement();
+ stmt.executeUpdate("DELETE FROM DATABASECHANGELOG");
+ stmt.executeUpdate("DELETE FROM DATABASECHANGELOGLOCK");
+ } catch (SQLException ex) {
-// copy TICKETS table
- SQL = "SELECT * FROM TICKETS";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO TICKETS (ID, TICKETTYPE, TICKETID, PERSON, CUSTOMER, STATUS ) VALUES (?, ?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("ID"));
- pstmt.setInt(2, rs.getInt("TICKETTYPE"));
- pstmt.setInt(3, rs.getInt("TICKETID"));
- pstmt.setString(4, rs.getString("PERSON"));
- pstmt.setString(5, rs.getString("CUSTOMER"));
- pstmt.setInt(6, rs.getInt("STATUS"));
- pstmt.executeUpdate();
- }
+ }
-// copy TICKETS table
- SQL = "SELECT * FROM VOUCHERS";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- SQL = "INSERT INTO VOUCHERS (VOUCHER, SOLDDATE, REDEEMDATE, SOLDTICKETID, REDEEMTICKETID) VALUES (?, ?, ?, ?, ?)";
- pstmt = con2.prepareStatement(SQL);
- pstmt.setString(1, rs.getString("VOUCHER"));
- pstmt.setTimestamp(2, rs.getTimestamp("SOLDDATE"));
- pstmt.setTimestamp(3, rs.getTimestamp("REDEEMDATE"));
- pstmt.setString(4, rs.getString("SOLDTICKETID"));
- pstmt.setString(5, rs.getString("REDEEMTICKETID"));
- pstmt.executeUpdate();
- }
+ return (true);
+ }
-// GET THE SEQUENCE NUMBERS
- if (("Apache Derby".equals(sdbmanager)) || ("MySQL".equals(sdbmanager))) {
- SQL = "SELECT * FROM TICKETSNUM";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- ticketsnum = rs.getString("ID");
- }
- SQL = "SELECT * FROM TICKETSNUM_PAYMENT";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- ticketsnumPayment = rs.getString("ID");
+ private void createTable(String table) {
+ try {
+ String SQL = " SELECT * FROM " + table;
+ Statement dataStmt = con.createStatement();
+ ResultSet dataRS = dataStmt.executeQuery(SQL);
+ ResultSetMetaData rsmd = dataRS.getMetaData();
+ /*
+ System.out.println("=====================================================");
+ System.out.println("Table name : " + rsmd.getTableName(1));
+ System.out.println("Column count : " + rsmd.getColumnCount());
+ System.out.println("Column name : " + rsmd.getColumnName(1));
+ System.out.println("Column type : " + rsmd.getColumnTypeName(1));
+ System.out.println("Column type Int : " + rsmd.getColumnType(1));
+ System.out.println("=====================================================");
+ */
+ DatabaseMetaData mdColumns = con.getMetaData();
+ ResultSet rsColumns = mdColumns.getColumns(null, null, table, null);
+ StringBuilder sql = new StringBuilder();
+ sql.append("CREATE TABLE ");
+ sql.append(table.toUpperCase());
+ sql.append(" (\n");
+ //System.out.println("************************************************************");
+ //System.out.println(table);
+ //System.out.println("************************************************************");
+
+ while (rsColumns.next()) {
+ sql.append(rsColumns.getString("COLUMN_NAME"));
+ switch (rsColumns.getInt("DATA_TYPE")) {
+ case 12:
+ sql.append(" varchar(");
+ sql.append(rsColumns.getInt("COLUMN_SIZE"));
+ sql.append(")");
+ break;
+ case 8:
+ sql.append((sdbmanager2.equals("MySQL")) ? " DOUBLE" : " DOUBLE PRECISION");
+ break;
+ case -2:
+ case 2004:
+ case -4:
+ if (sdbmanager2.equals("MySQL")) {
+ sql.append(" mediumblob");
+ break;
+ } else if (sdbmanager2.equals("Apache Derby")) {
+ sql.append(" blob");
+ break;
}
- SQL = "SELECT * FROM TICKETSNUM_REFUND";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- ticketsnumRefund = rs.getString("ID");
+ sql.append(" bytea");
+ break;
+ case 16:
+ case -7:
+ sql.append((sdbmanager2.equals("MySQL")) ? " bit(1)" : " boolean");
+ break;
+ case 93:
+ sql.append((sdbmanager2.equals("MySQL")) ? " datetime" : " timestamp");
+ break;
+ case 4:
+ case 5:
+ sql.append(" integer");
+ break;
+ case 2:
+ sql.append(" numeric(");
+ for (int k = 1; k <= rsmd.getColumnCount(); k++) {
+ if (rsmd.getColumnName(k).equalsIgnoreCase(rsColumns.getString("COLUMN_NAME"))) {
+ sql.append(rsmd.getPrecision(k));
+ sql.append(",");
+ sql.append(rsmd.getScale(k));
+ sql.append(")");
+ }
}
+ break;
+ }
+ if (rsColumns.getString("IS_NULLABLE").equalsIgnoreCase("no")) {
+ if (rsColumns.getString("COLUMN_DEF") == null) {
+ sql.append(" not null");
} else {
- SQL = "SELECT * FROM TICKETSNUM";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- ticketsnum = rs.getString("LAST_VALUE");
- }
- SQL = "SELECT * FROM TICKETSNUM_PAYMENT";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- ticketsnumPayment = rs.getString("LAST_VALUE");
- }
- SQL = "SELECT * FROM TICKETSNUM_REFUND";
- rs = stmt.executeQuery(SQL);
- while (rs.next()) {
- ticketsnumRefund = rs.getString("LAST_VALUE");
+ sql.append(" default");
+ switch (rsColumns.getInt("DATA_TYPE")) {
+ case 4:
+ case 5:
+ sql.append(" ");
+ sql.append(rsColumns.getString("COLUMN_DEF"));
+ sql.append(" not null");
+ break;
+ case 8:
+ sql.append(" ");
+ sql.append(rsColumns.getString("COLUMN_DEF"));
+ sql.append(" not null");
+ break;
+ case 12:
+ sql.append(" '");
+ sql.append(rsColumns.getString("COLUMN_DEF").replaceAll("::character varying", "").replaceAll("'", ""));
+ sql.append("'");
+ sql.append(" not null");
+ break;
+ case 93:
+ if (rsColumns.getString("COLUMN_DEF").equalsIgnoreCase("CURRENT_TIMESTAMP") || rsColumns.getString("COLUMN_DEF").equalsIgnoreCase("now()")) {
+ sql.append(" ");
+ sql.append("CURRENT_TIMESTAMP");
+ break;
+ } else {
+ if (rsColumns.getString("COLUMN_DEF").equalsIgnoreCase("0000-00-00 00:00:00")) {
+ sql.setLength(sql.length() - 8);
+ } else {
+ sql.append(" '");
+ sql.append(rsColumns.getString("COLUMN_DEF").replaceAll("::timestamp without time zone", "").replaceAll("'", "").replaceAll("TIMESTAMP", "").replace("(", "").replace(")", ""));
+ sql.append("'");
+ sql.append(" not null");
+ }
+
+ break;
+ }
+ case 16:
+ case -7:
+ if (sdbmanager2.equals("MySQL")) {
+ if (rsColumns.getString("COLUMN_DEF").equalsIgnoreCase("true")) {
+ sql.append(" b'1'");
+ sql.append(" not null");
+ break;
+ } else if (rsColumns.getString("COLUMN_DEF").equalsIgnoreCase("false")) {
+ sql.append(" b'0'");
+ sql.append(" not null");
+ break;
+ }
+ }
+ if (rsColumns.getString("COLUMN_DEF").contains("B'1'") || rsColumns.getString("COLUMN_DEF").contains("b'1'")) {
+ sql.append(" true");
+ sql.append(" not null");
+ break;
+ } else if (rsColumns.getString("COLUMN_DEF").contains("B'0'") || rsColumns.getString("COLUMN_DEF").contains("b'0'")) {
+ sql.append(" false");
+ sql.append(" not null");
+ break;
+ }
+ sql.append(" ");
+ sql.append(rsColumns.getString("COLUMN_DEF"));
+ sql.append(" not null");
+ break;
+ case 2:
+ sql.append(" ");
+ sql.append(rsColumns.getString("COLUMN_DEF"));
+ sql.append(" not null");
+ break;
+ default:
+ sql.append(" ");
+ sql.append(rsColumns.getString("COLUMN_DEF"));
+ sql.append(" not null");
+ break;
}
}
-// WRITE SEQUENCE NUMBER
- if (("MySQL".equals(sdbmanager2))) {
- SQL = "UPDATE TICKETSNUM SET ID=" + ticketsnum;
- stmt2.executeUpdate(SQL);
- SQL = "UPDATE TICKETSNUM_PAYMENT SET ID=" + ticketsnumPayment;
- stmt2.executeUpdate(SQL);
- SQL = "UPDATE TICKETSNUM_REFUND SET ID=" + ticketsnumRefund;
- stmt2.executeUpdate(SQL);
- } else if (("Apache Derby".equals(sdbmanager))) {
- SQL = "CREATE TABLE TICKETSNUM (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH " + ticketsnum + "))";
- stmt2.executeUpdate(SQL);
- SQL = "CREATE TABLE TICKETSNUM_PAYMENT (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH " + ticketsnumPayment + "))";
- stmt2.executeUpdate(SQL);
- SQL = "CREATE TABLE TICKETSNUM_REFUND (ID INTEGER GENERATED ALWAYS AS IDENTITY (START WITH " + ticketsnumRefund + "))";
- stmt2.executeUpdate(SQL);
- } else {
- SQL = "ALTER SEQUENCE TICKETSNUM RESTART WITH " + ticketsnum;
- stmt2.executeUpdate(SQL);
- SQL = "ALTER SEQUENCE TICKETSNUM_PAYMENT RESTART WITH " + ticketsnumPayment;
- stmt2.executeUpdate(SQL);
- SQL = "ALTER SEQUENCE TICKETSNUM_REFUND RESTART WITH " + ticketsnumRefund;
- stmt2.executeUpdate(SQL);
- }
+ }
+ sql.append(",\n");
+ //String name = rsColumns.getString("COLUMN_NAME");
+ //String type = rsColumns.getString("TYPE_NAME");
+ //int size = rsColumns.getInt("COLUMN_SIZE");
+ //String dvalue = rsColumns.getString("COLUMN_DEF");
+ //int dType = rsColumns.getInt("DATA_TYPE");
+ //System.out.println("Column name: [" + name + "]; type: [" + type
+ // + "]; typeint: [" + dType + "]; size: [" + size + "]" + "; defaultvalue:[" + dvalue + "];");
+ }
-// Add foreign keys back into the datbase
- addFKeys();
+ sql.setLength(sql.length() - 2);
+ sql.append("\n)");
+ if (sdbmanager2.equals("MySQL")) {
+ sql.append(" ENGINE = InnoDB DEFAULT CHARSET=utf8 ");
+ }
+ //System.out.println("--------------------------------------------------------------");
+ //System.out.println(sql.toString());
+ Statement stmt2;
+ stmt2 = con2.createStatement();
+ stmt2.executeUpdate(sql.toString());
-// Write new database settings to properties file
- if ("MySQL".equals(sdbmanager2)) {
- AppConfig.getInstance().setProperty("db.engine", "MySQL");
- } else {
- AppConfig.getInstance().setProperty("db.engine", "PostgreSQL");
- }
- AppConfig.getInstance().setProperty("db.driverlib", jtxtDbDriverLib.getText());
- AppConfig.getInstance().setProperty("db.driver", jtxtDbDriver.getText());
- AppConfig.getInstance().setProperty("db.URL", jtxtDbURL.getText());
- AppConfig.getInstance().setProperty("db.user", jtxtDbUser.getText());
- AltEncrypter cypher = new AltEncrypter("cypherkey" + jtxtDbUser.getText());
- AppConfig.getInstance().setProperty("db.password", "crypt:" + cypher.encrypt(new String(jtxtDbPassword.getPassword())));
- dirty.setDirty(false);
-
- for (PanelConfig c : m_panelconfig) {
- c.saveProperties();
- }
+ } catch (SQLException ex) {
+ Logger.getLogger(JPaneldbMigrate.class.getName()).log(Level.SEVERE, null, ex);
+ try {
+ con2.close();
+ con.close();
- try {
- AppConfig.getInstance().save();
- JOptionPane.showMessageDialog(this, AppLocal.getIntString("message.restartchanges"), AppLocal.getIntString("message.title"), JOptionPane.INFORMATION_MESSAGE);
- } catch (IOException e) {
- JMessageDialog.showMessage(this, new MessageInf(MessageInf.SGN_WARNING, AppLocal.getIntString("message.cannotsaveconfig"), e));
- }
+ } catch (SQLException ex1) {
+ Logger.getLogger(JPaneldbMigrate.class.getName()).log(Level.SEVERE, null, ex1);
- JOptionPane.showMessageDialog(this, "Migration complete.");
- jbtnMigrate.setEnabled(false);
+ }
- } catch (SQLException | HeadlessException e) {
- JMessageDialog.showMessage(this, new MessageInf(MessageInf.SGN_WARNING, SQL, e));
- }
- } else {
- JFrame frame = new JFrame();
- JOptionPane.showMessageDialog(frame, AppLocal.getIntString("message.migratenotsupported"), AppLocal.getIntString("message.nigratemessage"), JOptionPane.WARNING_MESSAGE);
+ }
+ }
+ private void jbtnMigrateActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnMigrateActionPerformed
+ Thread workThread = new Thread() {
+ public void run() {
+ performAction();
}
- }
+ };
+ workThread.start();
+
+ pb.setIndeterminate(true);
+ pb.setStringPainted(true);
+ pb.setString("Migrating Database ..... Processing ");
+
+
}//GEN-LAST:event_jbtnMigrateActionPerformed
private void jbtnExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbtnExitActionPerformed
@@ -1328,24 +947,19 @@ private void jbtnExitActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRS
System.exit(0);
}//GEN-LAST:event_jbtnExitActionPerformed
- private void jtxtDbURLActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jtxtDbURLActionPerformed
- // TODO add your handling code here:
- }//GEN-LAST:event_jtxtDbURLActionPerformed
-
- private void jtxtDbDriverLibActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jtxtDbDriverLibActionPerformed
- // TODO add your handling code here:
- }//GEN-LAST:event_jtxtDbDriverLibActionPerformed
-
private void jNewdbTypeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jNewdbTypeActionPerformed
if ("MySQL".equals(jNewdbType.getSelectedItem())) {
jtxtDbDriverLib.setText(System.getProperty("user.dir") + "/lib/mysql-connector-java-5.1.26-bin.jar");
jtxtDbDriver.setText("com.mysql.jdbc.Driver");
jtxtDbURL.setText("jdbc:mysql://localhost:3306/chromispos");
+ //jtxtDbURL.setText("jdbc:mysql://192.168.254.75:3306/kidsgrove");
+ //jtxtDbUser.setText("eposuser");
+ //jtxtDbPassword.setText("epos");
} else if ("PostgreSQL".equals(jNewdbType.getSelectedItem())) {
jtxtDbDriverLib.setText(System.getProperty("user.dir") + "/lib/postgresql-9.2-1003.jdbc4.jar");
jtxtDbDriver.setText("org.postgresql.Driver");
jtxtDbURL.setText("jdbc:postgresql://localhost:5432/chromispos");
- } else if ("Derby".equals(jNewdbType.getSelectedItem())) {
+ } else if ("Apache Derby Embedded".equals(jNewdbType.getSelectedItem())) {
jtxtDbDriverLib.setText(System.getProperty("user.dir") + "/lib/derby-10.10.2.0.jar");
jtxtDbDriver.setText("org.apache.derby.jdbc.EmbeddedDriver");
jtxtDbURL.setText("jdbc:derby:" + new File(new File(System.getProperty("user.home")), AppLocal.APP_ID + "-database").getAbsolutePath() + ";create=true");
@@ -1354,10 +968,6 @@ private void jNewdbTypeActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FI
}
}//GEN-LAST:event_jNewdbTypeActionPerformed
- private void jtxtDbUserActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jtxtDbUserActionPerformed
- // TODO add your handling code here:
- }//GEN-LAST:event_jtxtDbUserActionPerformed
-
private void jButtonTestjButtonTestConnectionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonTestjButtonTestConnectionActionPerformed
try {
String driverlib = jtxtDbDriverLib.getText();
@@ -1405,5 +1015,6 @@ private void jButtonTestjButtonTestConnectionActionPerformed(java.awt.event.Acti
private javax.swing.JPasswordField jtxtDbPassword;
private javax.swing.JTextField jtxtDbURL;
private javax.swing.JTextField jtxtDbUser;
+ private javax.swing.JProgressBar pb;
// End of variables declaration//GEN-END:variables
}
diff --git a/src-pos/uk/chromis/pos/panels/AuxiliarFilter.form b/src-pos/uk/chromis/pos/panels/AuxiliarFilter.form
index 4c5e38ec..33686e4f 100644
--- a/src-pos/uk/chromis/pos/panels/AuxiliarFilter.form
+++ b/src-pos/uk/chromis/pos/panels/AuxiliarFilter.form
@@ -129,7 +129,9 @@
-
+
+
+
@@ -166,7 +168,9 @@
-
+
+
+
@@ -193,7 +197,9 @@
-
+
+
+
diff --git a/src-pos/uk/chromis/pos/panels/AuxiliarFilter.java b/src-pos/uk/chromis/pos/panels/AuxiliarFilter.java
index b8683b25..a84a6275 100644
--- a/src-pos/uk/chromis/pos/panels/AuxiliarFilter.java
+++ b/src-pos/uk/chromis/pos/panels/AuxiliarFilter.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -222,7 +222,8 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
});
Enter1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/products24.png"))); // NOI18N
- Enter1.setToolTipText("Enter Product ID");
+ java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N
+ Enter1.setToolTipText(bundle.getString("tiptext.enterproductid")); // NOI18N
Enter1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Enter1ActionPerformed(evt);
@@ -242,7 +243,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
});
Enter2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/barcode.png"))); // NOI18N
- Enter2.setToolTipText("Get Barcode");
+ Enter2.setToolTipText(bundle.getString("tiptext.getbarcode")); // NOI18N
Enter2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
Enter2ActionPerformed(evt);
@@ -257,7 +258,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
m_jSearch.setRequestFocusEnabled(false);
search.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/search24.png"))); // NOI18N
- search.setToolTipText("Search Products");
+ search.setToolTipText(bundle.getString("tiptext.searchproduct")); // NOI18N
search.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
searchActionPerformed(evt);
diff --git a/src-pos/uk/chromis/pos/panels/ComboItemLocal.java b/src-pos/uk/chromis/pos/panels/ComboItemLocal.java
index 963a7f0b..3303c78d 100644
--- a/src-pos/uk/chromis/pos/panels/ComboItemLocal.java
+++ b/src-pos/uk/chromis/pos/panels/ComboItemLocal.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/panels/EnumerationIter.java b/src-pos/uk/chromis/pos/panels/EnumerationIter.java
index c285c1e9..8ad7f613 100644
--- a/src-pos/uk/chromis/pos/panels/EnumerationIter.java
+++ b/src-pos/uk/chromis/pos/panels/EnumerationIter.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/panels/JPanelCloseMoney.java b/src-pos/uk/chromis/pos/panels/JPanelCloseMoney.java
index f438c572..42c62167 100644
--- a/src-pos/uk/chromis/pos/panels/JPanelCloseMoney.java
+++ b/src-pos/uk/chromis/pos/panels/JPanelCloseMoney.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -181,7 +181,7 @@ private void loadData() throws BasicException {
m_jPrintCashTop.setEnabled(false);
m_jCloseCashTop.setEnabled(false);
- m_jCount.setText(null); // AppLocal.getIntString("label.noticketstoclose");
+ m_jCount.setText(null);
m_jCash.setText(null);
m_jSales.setText(null);
@@ -733,10 +733,10 @@ private void m_jCloseCashTopActionPerformed(java.awt.event.ActionEvent evt) {//G
// creamos la caja activa
m_dlSystem.execInsertCash(
- new Object[] {m_App.getActiveCashIndex(), m_App.getProperties().getHost(), m_App.getActiveCashSequence(), m_App.getActiveCashDateStart(), m_App.getActiveCashDateEnd(),0});
+ new Object[] {m_App.getActiveCashIndex(), m_App.getProperties().getHost(), m_App.getActiveCashSequence(), m_App.getActiveCashDateStart(), m_App.getActiveCashDateEnd()});
m_dlSystem.execDrawerOpened(
- new Object[] {m_App.getAppUserView().getUser().getName(),"Close Cash"});
+ new Object[] {UUID.randomUUID().toString(),m_App.getAppUserView().getUser().getName(),"Close Cash"});
// ponemos la fecha de fin
m_PaymentsToClose.setDateEnd(dNow);
@@ -784,13 +784,13 @@ private void m_jCloseCashActionPerformed(java.awt.event.ActionEvent evt) {//GEN-
try {
// Creamos una nueva caja
m_App.setActiveCash(UUID.randomUUID().toString(), m_App.getActiveCashSequence() + 1, dNow, null);
-
+
// creamos la caja activa
m_dlSystem.execInsertCash(
- new Object[] {m_App.getActiveCashIndex(), m_App.getProperties().getHost(), m_App.getActiveCashSequence(), m_App.getActiveCashDateStart(), m_App.getActiveCashDateEnd(),0});
-
+ new Object[] {m_App.getActiveCashIndex(), m_App.getProperties().getHost(), m_App.getActiveCashSequence(), m_App.getActiveCashDateStart(), m_App.getActiveCashDateEnd()});
+
m_dlSystem.execDrawerOpened(
- new Object[] {m_App.getAppUserView().getUser().getName(),"Close Cash"});
+ new Object[] {UUID.randomUUID().toString(),m_App.getAppUserView().getUser().getName(),"Close Cash"});
// ponemos la fecha de fin
m_PaymentsToClose.setDateEnd(dNow);
diff --git a/src-pos/uk/chromis/pos/panels/JPanelPayments.java b/src-pos/uk/chromis/pos/panels/JPanelPayments.java
index 482f4d5a..7b69e21a 100644
--- a/src-pos/uk/chromis/pos/panels/JPanelPayments.java
+++ b/src-pos/uk/chromis/pos/panels/JPanelPayments.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/panels/JPanelPrinter.java b/src-pos/uk/chromis/pos/panels/JPanelPrinter.java
index 9a57ec18..e8ee9511 100644
--- a/src-pos/uk/chromis/pos/panels/JPanelPrinter.java
+++ b/src-pos/uk/chromis/pos/panels/JPanelPrinter.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/panels/JPanelTable.java b/src-pos/uk/chromis/pos/panels/JPanelTable.java
index 245e0b6b..3b36f69f 100644
--- a/src-pos/uk/chromis/pos/panels/JPanelTable.java
+++ b/src-pos/uk/chromis/pos/panels/JPanelTable.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -45,27 +45,12 @@
import uk.chromis.pos.forms.BeanFactoryException;
import uk.chromis.pos.forms.JPanelView;
-/**
- *
- * @author adrianromero
- */
public abstract class JPanelTable extends JPanel implements JPanelView, BeanFactoryApp {
- /**
- *
- */
protected BrowsableEditableData bd;
-
- /**
- *
- */
protected DirtyManager dirty;
-
- /**
- *
- */
+ protected boolean LoadOnActivation = true;
protected AppView app;
-
protected int m_ListWidth = 0;
/** Creates new form JPanelTableEditor */
@@ -78,6 +63,12 @@ public void setListWidth( int width ) {
m_ListWidth = width;
}
+ // Sets whether the data is loaded on first activation or loaded later
+ // after some filtering is set
+ public void setLoadOnActivation( boolean bLoad ) {
+ LoadOnActivation = bLoad;
+ }
+
/**
*
* @param app
@@ -93,18 +84,11 @@ public void init(AppView app) throws BeanFactoryException {
init();
}
- /**
- *
- * @return
- */
@Override
public Object getBean() {
return this;
}
- /**
- *
- */
protected void startNavigation() {
if (bd == null) {
@@ -126,7 +110,6 @@ protected void startNavigation() {
container.add(c, BorderLayout.CENTER);
}
- // el panel este
ListCellRenderer cr = getListCellRenderer();
if (cr != null) {
JListNavigator nl = new JListNavigator(bd);
@@ -148,7 +131,6 @@ protected void startNavigation() {
toolbar.add(c);
}
- // La Toolbar
c = new JLabelDirty(dirty);
c.applyComponentOrientation(getComponentOrientation());
toolbar.add(c);
@@ -164,88 +146,43 @@ protected void startNavigation() {
}
}
- /**
- *
- * @return
- */
public Component getToolbarExtras() {
return null;
}
- /**
- *
- * @return
- */
public Component getFilter() {
return null;
}
- /**
- *
- */
- protected abstract void init();
-
- /**
- *
- * @return
- */
- public abstract EditorRecord getEditor();
-
- /**
- *
- * @return
- */
- public abstract ListProvider getListProvider();
-
- /**
- *
- * @return
- */
+ protected abstract void init();
+ public abstract EditorRecord getEditor();
+ public abstract ListProvider getListProvider();
public abstract SaveProvider getSaveProvider();
-
- /**
- *
- * @return
- */
public Vectorer getVectorer() {
return null;
}
- /**
- *
- * @return
- */
public ComparatorCreator getComparatorCreator() {
return null;
}
- /**
- *
- * @return
- */
public ListCellRenderer getListCellRenderer() {
return null;
}
- /**
- *
- * @return
- */
@Override
public JComponent getComponent() {
return this;
}
- /**
- *
- * @throws BasicException
- */
@Override
public void activate() throws BasicException {
startNavigation();
- bd.actionLoad();
- //HS insert new customer 20.03.2014
+ if( LoadOnActivation ) {
+ bd.actionLoad();
+ }
+
if (CustomerInfoGlobal.getInstance()!=null){
bd.actionInsert();
}
diff --git a/src-pos/uk/chromis/pos/panels/JPanelTable2.java b/src-pos/uk/chromis/pos/panels/JPanelTable2.java
index 7f62581a..64716e72 100644
--- a/src-pos/uk/chromis/pos/panels/JPanelTable2.java
+++ b/src-pos/uk/chromis/pos/panels/JPanelTable2.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/panels/JProductFinder.form b/src-pos/uk/chromis/pos/panels/JProductFinder.form
index 6b9f163d..a05188bf 100644
--- a/src-pos/uk/chromis/pos/panels/JProductFinder.form
+++ b/src-pos/uk/chromis/pos/panels/JProductFinder.form
@@ -82,7 +82,9 @@
-
+
+
+
diff --git a/src-pos/uk/chromis/pos/panels/JProductFinder.java b/src-pos/uk/chromis/pos/panels/JProductFinder.java
index e036b70c..12bc60ea 100644
--- a/src-pos/uk/chromis/pos/panels/JProductFinder.java
+++ b/src-pos/uk/chromis/pos/panels/JProductFinder.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -44,20 +44,10 @@ public class JProductFinder extends javax.swing.JDialog {
private ProductInfoExt m_ReturnProduct;
private ListProvider lpr;
- /**
- *
- */
public final static int PRODUCT_ALL = 0;
-
- /**
- *
- */
public final static int PRODUCT_NORMAL = 1;
-
- /**
- *
- */
public final static int PRODUCT_AUXILIAR = 2;
+ public final static int PRODUCT_RECIPE = 3;
/** Creates new form JProductFinder */
private JProductFinder(java.awt.Frame parent, boolean modal) {
@@ -161,7 +151,7 @@ public Object getElementAt(int index) {
public int getSize() {
return m_data.size();
}
- }
+ }
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
@@ -198,7 +188,8 @@ private void initComponents() {
jButton3.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/ok.png"))); // NOI18N
jButton3.setText(AppLocal.getIntString("button.executefilter")); // NOI18N
- jButton3.setToolTipText("Execute Filter");
+ java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N
+ jButton3.setToolTipText(bundle.getString("tiptext.executefilter")); // NOI18N
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
diff --git a/src-pos/uk/chromis/pos/panels/JTicketsFinder.form b/src-pos/uk/chromis/pos/panels/JTicketsFinder.form
index ed421e8c..d3c6dfdb 100644
--- a/src-pos/uk/chromis/pos/panels/JTicketsFinder.form
+++ b/src-pos/uk/chromis/pos/panels/JTicketsFinder.form
@@ -274,7 +274,9 @@
-
+
+
+
@@ -288,7 +290,9 @@
-
+
+
+
@@ -312,7 +316,9 @@
-
+
+
+
@@ -359,7 +365,9 @@
-
+
+
+
@@ -376,7 +384,9 @@
-
+
+
+
diff --git a/src-pos/uk/chromis/pos/panels/JTicketsFinder.java b/src-pos/uk/chromis/pos/panels/JTicketsFinder.java
index 2098f299..6344a3ba 100644
--- a/src-pos/uk/chromis/pos/panels/JTicketsFinder.java
+++ b/src-pos/uk/chromis/pos/panels/JTicketsFinder.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -372,7 +372,8 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jTxtEndDate.setPreferredSize(new java.awt.Dimension(200, 25));
btnDateStart.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/date.png"))); // NOI18N
- btnDateStart.setToolTipText("Open Calendar");
+ java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("pos_messages"); // NOI18N
+ btnDateStart.setToolTipText(bundle.getString("tiptext.opencalendar")); // NOI18N
btnDateStart.setPreferredSize(new java.awt.Dimension(50, 25));
btnDateStart.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
@@ -381,7 +382,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
});
btnDateEnd.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/date.png"))); // NOI18N
- btnDateEnd.setToolTipText("Open Calendar");
+ btnDateEnd.setToolTipText(bundle.getString("tiptext.opencalendar")); // NOI18N
btnDateEnd.setPreferredSize(new java.awt.Dimension(50, 25));
btnDateEnd.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
@@ -393,7 +394,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jtxtCustomer.setPreferredSize(new java.awt.Dimension(200, 25));
btnCustomer.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/customer_sml.png"))); // NOI18N
- btnCustomer.setToolTipText("Open Customers");
+ btnCustomer.setToolTipText(bundle.getString("tiptext.opencustomers")); // NOI18N
btnCustomer.setFocusPainted(false);
btnCustomer.setFocusable(false);
btnCustomer.setMargin(new java.awt.Insets(8, 14, 8, 14));
@@ -488,7 +489,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/reload.png"))); // NOI18N
jButton1.setText(AppLocal.getIntString("button.clean")); // NOI18N
- jButton1.setToolTipText("Clear Filter");
+ jButton1.setToolTipText(bundle.getString("tiptext.clearfilter")); // NOI18N
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
@@ -499,7 +500,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
jButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/uk/chromis/images/ok.png"))); // NOI18N
jButton3.setText(AppLocal.getIntString("button.executefilter")); // NOI18N
- jButton3.setToolTipText("Execute Filter");
+ jButton3.setToolTipText(bundle.getString("tiptext.executefilter")); // NOI18N
jButton3.setFocusPainted(false);
jButton3.setFocusable(false);
jButton3.setRequestFocusEnabled(false);
@@ -588,8 +589,8 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
getContentPane().add(jPanel2, java.awt.BorderLayout.LINE_END);
- java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
- setBounds((screenSize.width-695)/2, (screenSize.height-522)/2, 695, 522);
+ setSize(new java.awt.Dimension(695, 522));
+ setLocationRelativeTo(null);
}// //GEN-END:initComponents
private void jcmdOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jcmdOKActionPerformed
selectedTicket = (FindTicketsInfo) jListTickets.getSelectedValue();
diff --git a/src-pos/uk/chromis/pos/panels/PaymentsEditor.java b/src-pos/uk/chromis/pos/panels/PaymentsEditor.java
index b48a793c..cb11dce7 100644
--- a/src-pos/uk/chromis/pos/panels/PaymentsEditor.java
+++ b/src-pos/uk/chromis/pos/panels/PaymentsEditor.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
diff --git a/src-pos/uk/chromis/pos/panels/PaymentsModel.java b/src-pos/uk/chromis/pos/panels/PaymentsModel.java
index 453b9fda..0dcd11b4 100644
--- a/src-pos/uk/chromis/pos/panels/PaymentsModel.java
+++ b/src-pos/uk/chromis/pos/panels/PaymentsModel.java
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015
+// Copyright (c) (c) 2015-2016
// http://www.chromis.co.uk
//
// This file is part of Chromis POS
@@ -16,13 +16,16 @@
//
// You should have received a copy of the GNU General Public License
// along with Chromis POS. If not, see .
-
package uk.chromis.pos.panels;
+import java.sql.Connection;
+import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.Logger;
import javax.swing.table.AbstractTableModel;
import uk.chromis.basic.BasicException;
import uk.chromis.data.loader.DataRead;
@@ -31,50 +34,47 @@
import uk.chromis.data.loader.SerializerReadBasic;
import uk.chromis.data.loader.SerializerReadClass;
import uk.chromis.data.loader.SerializerWriteString;
+import uk.chromis.data.loader.Session;
import uk.chromis.data.loader.StaticSentence;
import uk.chromis.format.Formats;
import uk.chromis.pos.forms.AppLocal;
import uk.chromis.pos.forms.AppView;
+import uk.chromis.pos.forms.DataLogicSystem;
import uk.chromis.pos.util.StringUtils;
-/**
- *
- * @authors adrianromero, jackgerrard, janarnagel
- *
- */
public class PaymentsModel {
private String m_sHost;
private int m_iSeq;
private Date m_dDateStart;
- private Date m_dDateEnd;
+ private Date m_dDateEnd;
private Date rDate;
-
+
private Integer m_iPayments;
private Double m_dPaymentsTotal;
private java.util.List m_lpayments;
-
private Integer m_iCategorySalesRows;
private Double m_dCategorySalesTotalUnits;
private Double m_dCategorySalesTotal;
private java.util.List m_lcategorysales;
-
+
private Integer m_iProductSalesRows;
private Double m_dProductSalesTotalUnits;
private Double m_dProductSalesTotal;
private java.util.List m_lproductsales;
private java.util.List m_lremovedlines;
-
+
private final static String[] PAYMENTHEADERS = {"Label.Payment", "label.Money"};
-
+
private Integer m_iSales;
private Double m_dSalesBase;
private Double m_dSalesTaxes;
private Double m_dSalesTaxNet;
private java.util.List m_lsales;
-
+
private final static String[] SALEHEADERS = {"label.taxcategory", "label.totaltax", "label.totalnet"};
+ private DataLogicSystem dlSystem;
private PaymentsModel() {
}
@@ -84,34 +84,34 @@ private PaymentsModel() {
* @return
*/
public static PaymentsModel emptyInstance() {
-
+
PaymentsModel p = new PaymentsModel();
-
+
p.m_iPayments = 0;
p.m_dPaymentsTotal = 0.0;
p.m_lpayments = new ArrayList<>();
p.m_iCategorySalesRows = 0;
p.m_dCategorySalesTotalUnits = 0.0;
p.m_dCategorySalesTotal = 0.0;
- p.m_lcategorysales = new ArrayList<>();
+ p.m_lcategorysales = new ArrayList<>();
p.m_iSales = null;
p.m_dSalesBase = null;
p.m_dSalesTaxes = null;
p.m_dSalesTaxNet = null;
-
+
p.m_iProductSalesRows = 0;
p.m_dProductSalesTotalUnits = 0.0;
p.m_dProductSalesTotal = 0.0;
p.m_lproductsales = new ArrayList<>();
// end
-
+
p.m_lremovedlines = new ArrayList<>();
-
+
p.m_lsales = new ArrayList<>();
return p;
}
-
+
/**
*
* @param app
@@ -119,24 +119,20 @@ public static PaymentsModel emptyInstance() {
* @throws BasicException
*/
public static PaymentsModel loadInstance(AppView app) throws BasicException {
-
+
PaymentsModel p = new PaymentsModel();
-
+
// Propiedades globales
p.m_sHost = app.getProperties().getHost();
p.m_iSeq = app.getActiveCashSequence();
p.m_dDateStart = app.getActiveCashDateStart();
p.m_dDateEnd = null;
-
- Object[] valcategorysales = (Object []) new StaticSentence(app.getSession()
- , "SELECT COUNT(*), SUM(TICKETLINES.UNITS), SUM((TICKETLINES.PRICE + TICKETLINES.PRICE * TAXES.RATE ) * TICKETLINES.UNITS) " +
- "FROM TICKETLINES, TICKETS, RECEIPTS, TAXES " +
- "WHERE TICKETLINES.TICKET = TICKETS.ID AND TICKETS.ID = RECEIPTS.ID AND TICKETLINES.TAXID = TAXES.ID AND TICKETLINES.PRODUCT IS NOT NULL AND RECEIPTS.MONEY = ? " +
- "GROUP BY RECEIPTS.MONEY"
- , SerializerWriteString.INSTANCE
- , new SerializerReadBasic(new Datas[] {Datas.INT, Datas.DOUBLE, Datas.DOUBLE}))
- .find(app.getActiveCashIndex());
+ Object[] valcategorysales = (Object[]) new StaticSentence(app.getSession(), "SELECT COUNT(*), SUM(TICKETLINES.UNITS), SUM((TICKETLINES.PRICE + TICKETLINES.PRICE * TAXES.RATE ) * TICKETLINES.UNITS) "
+ + "FROM TICKETLINES, TICKETS, RECEIPTS, TAXES "
+ + "WHERE TICKETLINES.TICKET = TICKETS.ID AND TICKETS.ID = RECEIPTS.ID AND TICKETLINES.TAXID = TAXES.ID AND TICKETLINES.PRODUCT IS NOT NULL AND RECEIPTS.MONEY = ? "
+ + "GROUP BY RECEIPTS.MONEY", SerializerWriteString.INSTANCE, new SerializerReadBasic(new Datas[]{Datas.INT, Datas.DOUBLE, Datas.DOUBLE}))
+ .find(app.getActiveCashIndex());
if (valcategorysales == null) {
p.m_iCategorySalesRows = 0;
@@ -145,66 +141,57 @@ public static PaymentsModel loadInstance(AppView app) throws BasicException {
} else {
p.m_iCategorySalesRows = (Integer) valcategorysales[0];
p.m_dCategorySalesTotalUnits = (Double) valcategorysales[1];
- p.m_dCategorySalesTotal= (Double) valcategorysales[2];
+ p.m_dCategorySalesTotal = (Double) valcategorysales[2];
}
- List categorys = new StaticSentence(app.getSession()
- , "SELECT a.NAME, sum(c.UNITS), sum(c.UNITS * (c.PRICE + (c.PRICE * d.RATE))) " +
- "FROM CATEGORIES as a " +
- "LEFT JOIN PRODUCTS as b on a.id = b.CATEGORY " +
- "LEFT JOIN TICKETLINES as c on b.id = c.PRODUCT " +
- "LEFT JOIN TAXES as d on c.TAXID = d.ID " +
- "LEFT JOIN RECEIPTS as e on c.TICKET = e.ID " +
- "WHERE e.MONEY = ? " +
- "GROUP BY a.NAME"
- , SerializerWriteString.INSTANCE
- , new SerializerReadClass(PaymentsModel.CategorySalesLine.class)) //new SerializerReadBasic(new Datas[] {Datas.STRING, Datas.DOUBLE}))
- .list(app.getActiveCashIndex());
+ List categorys = new StaticSentence(app.getSession(), "SELECT a.NAME, sum(c.UNITS), sum(c.UNITS * (c.PRICE + (c.PRICE * d.RATE))) "
+ + "FROM CATEGORIES as a "
+ + "LEFT JOIN PRODUCTS as b on a.id = b.CATEGORY "
+ + "LEFT JOIN TICKETLINES as c on b.id = c.PRODUCT "
+ + "LEFT JOIN TAXES as d on c.TAXID = d.ID "
+ + "LEFT JOIN RECEIPTS as e on c.TICKET = e.ID "
+ + "WHERE e.MONEY = ? "
+ + "GROUP BY a.NAME", SerializerWriteString.INSTANCE, new SerializerReadClass(PaymentsModel.CategorySalesLine.class)) //new SerializerReadBasic(new Datas[] {Datas.STRING, Datas.DOUBLE}))
+ .list(app.getActiveCashIndex());
if (categorys == null) {
p.m_lcategorysales = new ArrayList();
} else {
p.m_lcategorysales = categorys;
- }
-
+ }
+
// Payments
- Object[] valtickets = (Object []) new StaticSentence(app.getSession()
- , "SELECT COUNT(*), SUM(PAYMENTS.TOTAL) " +
- "FROM PAYMENTS, RECEIPTS " +
- "WHERE PAYMENTS.RECEIPT = RECEIPTS.ID AND RECEIPTS.MONEY = ?"
- , SerializerWriteString.INSTANCE
- , new SerializerReadBasic(new Datas[] {Datas.INT, Datas.DOUBLE}))
- .find(app.getActiveCashIndex());
-
+ Object[] valtickets = (Object[]) new StaticSentence(app.getSession(), "SELECT COUNT(*), SUM(PAYMENTS.TOTAL) "
+ + "FROM PAYMENTS, RECEIPTS "
+ + "WHERE PAYMENTS.RECEIPT = RECEIPTS.ID AND RECEIPTS.MONEY = ?", SerializerWriteString.INSTANCE, new SerializerReadBasic(new Datas[]{Datas.INT, Datas.DOUBLE}))
+ .find(app.getActiveCashIndex());
+
if (valtickets == null) {
p.m_iPayments = 0;
p.m_dPaymentsTotal = 0.0;
} else {
p.m_iPayments = (Integer) valtickets[0];
p.m_dPaymentsTotal = (Double) valtickets[1];
- }
-
- List l = new StaticSentence(app.getSession()
- , "SELECT PAYMENTS.PAYMENT, SUM(PAYMENTS.TOTAL), PAYMENTS.NOTES " +
- "FROM PAYMENTS, RECEIPTS " +
- "WHERE PAYMENTS.RECEIPT = RECEIPTS.ID AND RECEIPTS.MONEY = ? " +
- "GROUP BY PAYMENTS.PAYMENT, PAYMENTS.NOTES"
- , SerializerWriteString.INSTANCE
- , new SerializerReadClass(PaymentsModel.PaymentsLine.class)) //new SerializerReadBasic(new Datas[] {Datas.STRING, Datas.DOUBLE}))
- .list(app.getActiveCashIndex());
-
+ }
+
+ List l = new StaticSentence(app.getSession(), "SELECT PAYMENTS.PAYMENT, SUM(PAYMENTS.TOTAL), PAYMENTS.NOTES "
+ + "FROM PAYMENTS, RECEIPTS "
+ + "WHERE PAYMENTS.RECEIPT = RECEIPTS.ID AND RECEIPTS.MONEY = ? "
+ + "GROUP BY PAYMENTS.PAYMENT, PAYMENTS.NOTES", SerializerWriteString.INSTANCE, new SerializerReadClass(PaymentsModel.PaymentsLine.class)) //new SerializerReadBasic(new Datas[] {Datas.STRING, Datas.DOUBLE}))
+ .list(app.getActiveCashIndex());
+
if (l == null) {
p.m_lpayments = new ArrayList();
} else {
p.m_lpayments = l;
- }
-
+ }
+
// Sales
- Object[] recsales = (Object []) new StaticSentence(app.getSession(),
- "SELECT COUNT(DISTINCT RECEIPTS.ID), SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) " +
- "FROM RECEIPTS, TICKETLINES WHERE RECEIPTS.ID = TICKETLINES.TICKET AND RECEIPTS.MONEY = ?",
+ Object[] recsales = (Object[]) new StaticSentence(app.getSession(),
+ "SELECT COUNT(DISTINCT RECEIPTS.ID), SUM(TICKETLINES.UNITS * TICKETLINES.PRICE) "
+ + "FROM RECEIPTS, TICKETLINES WHERE RECEIPTS.ID = TICKETLINES.TICKET AND RECEIPTS.MONEY = ?",
SerializerWriteString.INSTANCE,
- new SerializerReadBasic(new Datas[] {Datas.INT, Datas.DOUBLE}))
+ new SerializerReadBasic(new Datas[]{Datas.INT, Datas.DOUBLE}))
.find(app.getActiveCashIndex());
if (recsales == null) {
p.m_iSales = null;
@@ -212,23 +199,22 @@ public static PaymentsModel loadInstance(AppView app) throws BasicException {
} else {
p.m_iSales = (Integer) recsales[0];
p.m_dSalesBase = (Double) recsales[1];
- }
-
+ }
+
// Taxes
- Object[] rectaxes = (Object []) new StaticSentence(app.getSession(),
- "SELECT SUM(TAXLINES.AMOUNT), SUM(TAXLINES.BASE) " +
- "FROM RECEIPTS, TAXLINES WHERE RECEIPTS.ID = TAXLINES.RECEIPT AND RECEIPTS.MONEY = ?"
- , SerializerWriteString.INSTANCE
- , new SerializerReadBasic(new Datas[] {Datas.DOUBLE, Datas.DOUBLE}))
- .find(app.getActiveCashIndex());
+ Object[] rectaxes = (Object[]) new StaticSentence(app.getSession(),
+ "SELECT SUM(TAXLINES.AMOUNT), SUM(TAXLINES.BASE) "
+ + "FROM RECEIPTS, TAXLINES WHERE RECEIPTS.ID = TAXLINES.RECEIPT AND RECEIPTS.MONEY = ?", SerializerWriteString.INSTANCE, new SerializerReadBasic(new Datas[]{Datas.DOUBLE, Datas.DOUBLE}))
+ .find(app.getActiveCashIndex());
if (rectaxes == null) {
p.m_dSalesTaxes = null;
p.m_dSalesTaxNet = null;
} else {
p.m_dSalesTaxes = (Double) rectaxes[0];
p.m_dSalesTaxNet = (Double) rectaxes[1];
- }
-
+ }
+
+ /*
List asales = new StaticSentence(app.getSession(),
"SELECT TAXCATEGORIES.NAME, SUM(TAXLINES.AMOUNT), SUM(TAXLINES.BASE), SUM(TAXLINES.BASE + TAXLINES.AMOUNT) " +
"FROM RECEIPTS, TAXLINES, TAXES, TAXCATEGORIES WHERE RECEIPTS.ID = TAXLINES.RECEIPT AND TAXLINES.TAXID = TAXES.ID AND TAXES.CATEGORY = TAXCATEGORIES.ID " +
@@ -242,34 +228,63 @@ public static PaymentsModel loadInstance(AppView app) throws BasicException {
} else {
p.m_lsales = asales;
}
-
+ */
+ try {
+ List asales = new StaticSentence(app.getSession(),
+ "SELECT TAXCATEGORIES.NAME, SUM(NEWTAXLINES.AMOUNT), SUM(NEWTAXLINES.BASE), SUM(NEWTAXLINES.BASE + NEWTAXLINES.AMOUNT) "
+ + "FROM RECEIPTS, "
+ + "(SELECT TAXLINES.ID,RECEIPT,TAXID,BASE,SUM(AMOUNT) as AMOUNT "
+ // + " FROM TAXLINES,TAXES where TAXLINES.TAXID=TAXES.ID and PARENTID is not null GROUP BY RECEIPT "
+ + " FROM TAXLINES,TAXES where TAXLINES.TAXID=TAXES.ID and PARENTID is not null GROUP BY RECEIPT, PARENTID "
+ + " union "
+ + " SELECT TAXLINES.ID, RECEIPT, TAXID, BASE, AMOUNT as AMOUNT "
+ + " FROM TAXLINES,TAXES "
+ + " where TAXLINES.TAXID=TAXES.ID and PARENTID is null) NEWTAXLINES, "
+ + " TAXES, TAXCATEGORIES "
+ + " WHERE RECEIPTS.ID = NEWTAXLINES.RECEIPT AND NEWTAXLINES.TAXID = TAXES.ID AND TAXES.CATEGORY = TAXCATEGORIES.ID"
+ + " AND RECEIPTS.MONEY = ?"
+ + " GROUP BY TAXCATEGORIES.NAME ", SerializerWriteString.INSTANCE, new SerializerReadClass(PaymentsModel.SalesLine.class))
+ .list(app.getActiveCashIndex());
+ if (asales == null) {
+ p.m_lsales = new ArrayList<>();
+ } else {
+ p.m_lsales = asales;
+ }
+ } catch (BasicException e) {
+ List asales = new StaticSentence(app.getSession(),
+ "SELECT TAXCATEGORIES.NAME, SUM(TAXLINES.AMOUNT), SUM(TAXLINES.BASE), SUM(TAXLINES.BASE + TAXLINES.AMOUNT) "
+ + "FROM RECEIPTS, TAXLINES, TAXES, TAXCATEGORIES WHERE RECEIPTS.ID = TAXLINES.RECEIPT AND TAXLINES.TAXID = TAXES.ID AND TAXES.CATEGORY = TAXCATEGORIES.ID "
+ + "AND RECEIPTS.MONEY = ?"
+ + "GROUP BY TAXCATEGORIES.NAME", SerializerWriteString.INSTANCE, new SerializerReadClass(PaymentsModel.SalesLine.class))
+ .list(app.getActiveCashIndex());
+ if (asales == null) {
+ p.m_lsales = new ArrayList<>();
+ } else {
+ p.m_lsales = asales;
+ }
+ }
+
SimpleDateFormat ndf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String startDateFormatted = ndf.format(app.getActiveCashDateStart());
- List removedLines = new StaticSentence(app.getSession()
- , "SELECT LINEREMOVED.NAME, LINEREMOVED.TICKETID, LINEREMOVED.PRODUCTNAME, SUM(LINEREMOVED.UNITS) AS TOTAL_UNITS " +
- "FROM LINEREMOVED " +
- "WHERE LINEREMOVED.REMOVEDDATE > ? " +
- "GROUP BY LINEREMOVED.NAME, LINEREMOVED.TICKETID, LINEREMOVED.PRODUCTNAME"
- , SerializerWriteString.INSTANCE
- , new SerializerReadClass(PaymentsModel.RemovedProductLines.class)) //new SerializerReadBasic(new Datas[] {Datas.STRING, Datas.DOUBLE}))
- .list(startDateFormatted);
-
+ List removedLines = new StaticSentence(app.getSession(), "SELECT LINEREMOVED.NAME, LINEREMOVED.TICKETID, LINEREMOVED.PRODUCTNAME, SUM(LINEREMOVED.UNITS) AS TOTAL_UNITS "
+ + "FROM LINEREMOVED "
+ + "WHERE LINEREMOVED.REMOVEDDATE > ? "
+ + "GROUP BY LINEREMOVED.NAME, LINEREMOVED.TICKETID, LINEREMOVED.PRODUCTNAME", SerializerWriteString.INSTANCE, new SerializerReadClass(PaymentsModel.RemovedProductLines.class)) //new SerializerReadBasic(new Datas[] {Datas.STRING, Datas.DOUBLE}))
+ .list(startDateFormatted);
+
if (removedLines == null) {
p.m_lremovedlines = new ArrayList();
} else {
p.m_lremovedlines = removedLines;
}
-
+
// Product Sales
- Object[] valproductsales = (Object []) new StaticSentence(app.getSession()
- , "SELECT COUNT(*), SUM(TICKETLINES.UNITS), SUM((TICKETLINES.PRICE + TICKETLINES.PRICE * TAXES.RATE ) * TICKETLINES.UNITS) " +
- "FROM TICKETLINES, TICKETS, RECEIPTS, TAXES " +
- "WHERE TICKETLINES.TICKET = TICKETS.ID AND TICKETS.ID = RECEIPTS.ID AND TICKETLINES.TAXID = TAXES.ID AND TICKETLINES.PRODUCT IS NOT NULL AND RECEIPTS.MONEY = ? " +
- "GROUP BY RECEIPTS.MONEY"
- , SerializerWriteString.INSTANCE
- , new SerializerReadBasic(new Datas[] {Datas.INT, Datas.DOUBLE, Datas.DOUBLE}))
- .find(app.getActiveCashIndex());
-
+ Object[] valproductsales = (Object[]) new StaticSentence(app.getSession(), "SELECT COUNT(*), SUM(TICKETLINES.UNITS), SUM((TICKETLINES.PRICE + TICKETLINES.PRICE * TAXES.RATE ) * TICKETLINES.UNITS) "
+ + "FROM TICKETLINES, TICKETS, RECEIPTS, TAXES "
+ + "WHERE TICKETLINES.TICKET = TICKETS.ID AND TICKETS.ID = RECEIPTS.ID AND TICKETLINES.TAXID = TAXES.ID AND TICKETLINES.PRODUCT IS NOT NULL AND RECEIPTS.MONEY = ? "
+ + "GROUP BY RECEIPTS.MONEY", SerializerWriteString.INSTANCE, new SerializerReadBasic(new Datas[]{Datas.INT, Datas.DOUBLE, Datas.DOUBLE}))
+ .find(app.getActiveCashIndex());
+
if (valproductsales == null) {
p.m_iProductSalesRows = 0;
p.m_dProductSalesTotalUnits = 0.0;
@@ -277,24 +292,21 @@ public static PaymentsModel loadInstance(AppView app) throws BasicException {
} else {
p.m_iProductSalesRows = (Integer) valproductsales[0];
p.m_dProductSalesTotalUnits = (Double) valproductsales[1];
- p.m_dProductSalesTotal= (Double) valproductsales[2];
+ p.m_dProductSalesTotal = (Double) valproductsales[2];
}
-
- List products = new StaticSentence(app.getSession()
- , "SELECT PRODUCTS.NAME, SUM(TICKETLINES.UNITS), TICKETLINES.PRICE, TAXES.RATE " +
- "FROM TICKETLINES, TICKETS, RECEIPTS, PRODUCTS, TAXES " +
- "WHERE TICKETLINES.PRODUCT = PRODUCTS.ID AND TICKETLINES.TICKET = TICKETS.ID AND TICKETS.ID = RECEIPTS.ID AND TICKETLINES.TAXID = TAXES.ID AND RECEIPTS.MONEY = ? " +
- "GROUP BY PRODUCTS.NAME, TICKETLINES.PRICE, TAXES.RATE"
- , SerializerWriteString.INSTANCE
- , new SerializerReadClass(PaymentsModel.ProductSalesLine.class)) //new SerializerReadBasic(new Datas[] {Datas.STRING, Datas.DOUBLE}))
- .list(app.getActiveCashIndex());
-
+
+ List products = new StaticSentence(app.getSession(), "SELECT PRODUCTS.NAME, SUM(TICKETLINES.UNITS), TICKETLINES.PRICE, TAXES.RATE "
+ + "FROM TICKETLINES, TICKETS, RECEIPTS, PRODUCTS, TAXES "
+ + "WHERE TICKETLINES.PRODUCT = PRODUCTS.ID AND TICKETLINES.TICKET = TICKETS.ID AND TICKETS.ID = RECEIPTS.ID AND TICKETLINES.TAXID = TAXES.ID AND RECEIPTS.MONEY = ? "
+ + "GROUP BY PRODUCTS.NAME, TICKETLINES.PRICE, TAXES.RATE", SerializerWriteString.INSTANCE, new SerializerReadClass(PaymentsModel.ProductSalesLine.class)) //new SerializerReadBasic(new Datas[] {Datas.STRING, Datas.DOUBLE}))
+ .list(app.getActiveCashIndex());
+
if (products == null) {
p.m_lproductsales = new ArrayList();
} else {
p.m_lproductsales = products;
}
-
+
return p;
}
@@ -353,16 +365,16 @@ public void setDateEnd(Date dValue) {
public Date getDateEnd() {
return m_dDateEnd;
}
-
+
/**
*
* @return
*/
- public String getDateStartDerby(){
+ public String getDateStartDerby() {
SimpleDateFormat ndf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return ndf.format(m_dDateStart);
}
-
+
/**
*
* @return
@@ -371,7 +383,7 @@ public String printHost() {
// return m_sHost;
return StringUtils.encodeXML(m_sHost);
}
-
+
/**
*
* @return
@@ -419,14 +431,14 @@ public String printPaymentsTotal() {
public List getPaymentLines() {
return m_lpayments;
}
-
+
/**
*
* @return
*/
public int getSales() {
return m_iSales == null ? 0 : m_iSales;
- }
+ }
/**
*
@@ -442,7 +454,7 @@ public String printSales() {
*/
public String printSalesBase() {
return Formats.CURRENCY.formatValue(m_dSalesBase);
- }
+ }
/**
*
@@ -451,16 +463,16 @@ public String printSalesBase() {
public String printSalesTaxes() {
return Formats.CURRENCY.formatValue(m_dSalesTaxes);
}
-
- /**
+
+ /**
*
* @return
*/
- public String printSalesTotal() {
+ public String printSalesTotal() {
return Formats.CURRENCY.formatValue((m_dSalesBase == null || m_dSalesTaxes == null)
? null
: m_dSalesBase + m_dSalesTaxes);
- }
+ }
/**
*
@@ -470,12 +482,11 @@ public List getSaleLines() {
return m_lsales;
}
-
/**
*
* @return
*/
- public double getCategorySalesRows() {
+ public double getCategorySalesRows() {
return m_iCategorySalesRows;
}
@@ -525,18 +536,17 @@ public String printCategorySalesTotal() {
*/
public List getCategorySalesLines() {
return m_lcategorysales;
- }
+ }
// end
-
/**
*
* @return
*/
- public double getProductSalesRows() {
+ public double getProductSalesRows() {
return m_iProductSalesRows;
}
-
+
/**
*
* @return
@@ -544,7 +554,7 @@ public double getProductSalesRows() {
public String printProductSalesRows() {
return Formats.INT.formatValue(m_iProductSalesRows);
}
-
+
/**
*
* @return
@@ -552,7 +562,7 @@ public String printProductSalesRows() {
public double getProductSalesTotalUnits() {
return m_dProductSalesTotalUnits;
}
-
+
/**
*
* @return
@@ -560,7 +570,7 @@ public double getProductSalesTotalUnits() {
public String printProductSalesTotalUnits() {
return Formats.DOUBLE.formatValue(m_dProductSalesTotalUnits);
}
-
+
/**
*
* @return
@@ -568,7 +578,7 @@ public String printProductSalesTotalUnits() {
public double getProductSalesTotal() {
return m_dProductSalesTotal;
}
-
+
/**
*
* @return
@@ -576,7 +586,7 @@ public double getProductSalesTotal() {
public String printProductSalesTotal() {
return Formats.CURRENCY.formatValue(m_dProductSalesTotal);
}
-
+
/**
*
* @return
@@ -585,16 +595,15 @@ public List getProductSalesLines() {
return m_lproductsales;
}
// end
-
/**
*
* @return
*/
- public List getRemovedProductLines() {
+ public List getRemovedProductLines() {
return m_lremovedlines;
}
-
+
/**
*
* @return
@@ -605,31 +614,36 @@ public AbstractTableModel getPaymentsModel() {
public String getColumnName(int column) {
return AppLocal.getIntString(PAYMENTHEADERS[column]);
}
+
@Override
public int getRowCount() {
return m_lpayments.size();
}
+
@Override
public int getColumnCount() {
return PAYMENTHEADERS.length;
}
+
@Override
public Object getValueAt(int row, int column) {
PaymentsLine l = m_lpayments.get(row);
switch (column) {
- case 0: return l.getType();
- case 1: return l.getValue();
- default: return null;
+ case 0:
+ return l.getType();
+ case 1:
+ return l.getValue();
+ default:
+ return null;
}
- }
+ }
};
}
-
/**
*
*/
- public static class CategorySalesLine implements SerializableRead {
+ public static class CategorySalesLine implements SerializableRead {
private String m_CategoryName;
private Double m_CategoryUnits;
@@ -652,6 +666,7 @@ public void readValues(DataRead dr) throws BasicException {
* @return
*/
public String printCategoryName() {
+ //return m_CategoryName;
return StringUtils.encodeXML(m_CategoryName);
}
@@ -686,17 +701,18 @@ public String printCategorySum() {
public Double getCategorySum() {
return m_CategorySum;
}
- }
+ }
/**
*
*/
- public static class RemovedProductLines implements SerializableRead {
+ public static class RemovedProductLines implements SerializableRead {
+
private String m_Name;
private String m_TicketId;
private String m_ProductName;
private Double m_TotalUnits;
-
+
/**
*
* @param dr
@@ -709,7 +725,7 @@ public void readValues(DataRead dr) throws BasicException {
m_ProductName = dr.getString(3);
m_TotalUnits = dr.getDouble(4);
}
-
+
/**
*
* @return
@@ -717,7 +733,7 @@ public void readValues(DataRead dr) throws BasicException {
public String printWorkerName() {
return StringUtils.encodeXML(m_Name);
}
-
+
/**
*
* @return
@@ -725,7 +741,7 @@ public String printWorkerName() {
public String printTicketId() {
return StringUtils.encodeXML(m_TicketId);
}
-
+
/**
*
* @return
@@ -733,7 +749,7 @@ public String printTicketId() {
public String printProductName() {
return StringUtils.encodeXML(m_ProductName);
}
-
+
/**
*
* @return
@@ -741,21 +757,21 @@ public String printProductName() {
public String printTotalUnits() {
return Formats.DOUBLE.formatValue(m_TotalUnits);
}
-
+
}
/**
*
*/
- public static class ProductSalesLine implements SerializableRead {
-
+ public static class ProductSalesLine implements SerializableRead {
+
private String m_ProductName;
private Double m_ProductUnits;
private Double m_ProductPrice;
private Double m_TaxRate;
private Double m_ProductPriceTax;
- private Double m_ProductPriceNet;
-
+ private Double m_ProductPriceNet;
+
/**
*
* @param dr
@@ -767,11 +783,11 @@ public void readValues(DataRead dr) throws BasicException {
m_ProductUnits = dr.getDouble(2);
m_ProductPrice = dr.getDouble(3);
m_TaxRate = dr.getDouble(4);
-
- m_ProductPriceTax = m_ProductPrice + m_ProductPrice*m_TaxRate;
+
+ m_ProductPriceTax = m_ProductPrice + m_ProductPrice * m_TaxRate;
m_ProductPriceNet = m_ProductPrice * m_TaxRate;
}
-
+
/**
*
* @return
@@ -779,7 +795,7 @@ public void readValues(DataRead dr) throws BasicException {
public String printProductName() {
return StringUtils.encodeXML(m_ProductName);
}
-
+
/**
*
* @return
@@ -787,7 +803,7 @@ public String printProductName() {
public String printProductUnits() {
return Formats.DOUBLE.formatValue(m_ProductUnits);
}
-
+
/**
*
* @return
@@ -795,7 +811,7 @@ public String printProductUnits() {
public Double getProductUnits() {
return m_ProductUnits;
}
-
+
/**
*
* @return
@@ -803,7 +819,7 @@ public Double getProductUnits() {
public String printProductPrice() {
return Formats.CURRENCY.formatValue(m_ProductPrice);
}
-
+
/**
*
* @return
@@ -811,7 +827,7 @@ public String printProductPrice() {
public Double getProductPrice() {
return m_ProductPrice;
}
-
+
/**
*
* @return
@@ -819,7 +835,7 @@ public Double getProductPrice() {
public String printTaxRate() {
return Formats.PERCENT.formatValue(m_TaxRate);
}
-
+
/**
*
* @return
@@ -827,7 +843,7 @@ public String printTaxRate() {
public Double getTaxRate() {
return m_TaxRate;
}
-
+
/**
*
* @return
@@ -835,34 +851,35 @@ public Double getTaxRate() {
public String printProductPriceTax() {
return Formats.CURRENCY.formatValue(m_ProductPriceTax);
}
-
+
/**
*
* @return
*/
public String printProductSubValue() {
- return Formats.CURRENCY.formatValue(m_ProductPriceTax*m_ProductUnits);
+ return Formats.CURRENCY.formatValue(m_ProductPriceTax * m_ProductUnits);
}
-
+
/**
* @return
*/
public String printProductPriceNet() {
- return Formats.CURRENCY.formatValue(m_ProductPrice*m_ProductUnits);
+ return Formats.CURRENCY.formatValue(m_ProductPrice * m_ProductUnits);
}
-
+
}
// end
-
+
/**
*
*/
public static class SalesLine implements SerializableRead {
-
+
private String m_SalesTaxName;
private Double m_SalesTaxes;
- private Double m_SalesTaxNet;
- private Double m_SalesTaxGross;
+ private Double m_SalesTaxNet;
+ private Double m_SalesTaxGross;
+
/**
*
* @param dr
@@ -872,8 +889,8 @@ public static class SalesLine implements SerializableRead {
public void readValues(DataRead dr) throws BasicException {
m_SalesTaxName = dr.getString(1);
m_SalesTaxes = dr.getDouble(2);
- m_SalesTaxNet = dr.getDouble(3);
- m_SalesTaxGross = dr.getDouble(4);
+ m_SalesTaxNet = dr.getDouble(3);
+ m_SalesTaxGross = dr.getDouble(4);
}
/**
@@ -881,8 +898,9 @@ public void readValues(DataRead dr) throws BasicException {
* @return
*/
public String printTaxName() {
+ // return m_SalesTaxName;
return StringUtils.encodeXML(m_SalesTaxName);
- }
+ }
/**
*
@@ -891,22 +909,21 @@ public String printTaxName() {
public String printTaxes() {
return Formats.CURRENCY.formatValue(m_SalesTaxes);
}
-
- /**
+
+ /**
* @return
*/
public String printTaxNet() {
return Formats.CURRENCY.formatValue(m_SalesTaxNet);
}
- /**
+ /**
* @return
*/
public String printTaxGross() {
return Formats.CURRENCY.formatValue(m_SalesTaxes + m_SalesTaxNet);
}
-
-
+
/**
*
* @return
@@ -922,23 +939,21 @@ public String getTaxName() {
public Double getTaxes() {
return m_SalesTaxes;
}
-
+
/**
* @return
*/
public Double getTaxNet() {
return m_SalesTaxNet;
}
-
+
/**
* @return
*/
public Double getTaxGross() {
return m_SalesTaxGross;
}
-
-
}
/**
@@ -951,36 +966,43 @@ public AbstractTableModel getSalesModel() {
public String getColumnName(int column) {
return AppLocal.getIntString(SALEHEADERS[column]);
}
+
@Override
public int getRowCount() {
return m_lsales.size();
}
+
@Override
public int getColumnCount() {
return SALEHEADERS.length;
}
+
@Override
public Object getValueAt(int row, int column) {
SalesLine l = m_lsales.get(row);
switch (column) {
- case 0: return l.getTaxName();
- case 1: return l.getTaxes();
- case 2: return l.getTaxNet();
- default: return null;
+ case 0:
+ return l.getTaxName();
+ case 1:
+ return l.getTaxes();
+ case 2:
+ return l.getTaxNet();
+ default:
+ return null;
}
- }
+ }
};
}
-
+
/**
*
*/
public static class PaymentsLine implements SerializableRead {
-
+
private String m_PaymentType;
private Double m_PaymentValue;
private String s_PaymentReason;
-
+
/**
*
* @param dr
@@ -990,9 +1012,9 @@ public static class PaymentsLine implements SerializableRead {
public void readValues(DataRead dr) throws BasicException {
m_PaymentType = dr.getString(1);
m_PaymentValue = dr.getDouble(2);
- s_PaymentReason=dr.getString(3) == null ? "": dr.getString(3);
+ s_PaymentReason = dr.getString(3) == null ? "" : dr.getString(3);
}
-
+
/**
*
* @return
@@ -1038,7 +1060,7 @@ public String printReason() {
* @return
*/
public String getReason() {
- return s_PaymentReason;
+ return s_PaymentReason;
+ }
}
- }
-}
\ No newline at end of file
+}
diff --git a/src-pos/uk/chromis/pos/panels/Printer.PartialCash.xml b/src-pos/uk/chromis/pos/panels/Printer.PartialCash.xml
index 9bdb295d..9b6a5e89 100644
--- a/src-pos/uk/chromis/pos/panels/Printer.PartialCash.xml
+++ b/src-pos/uk/chromis/pos/panels/Printer.PartialCash.xml
@@ -1,7 +1,7 @@
- #if ($ticketline.productAttSetInstId)
-
- ${ticketline.productAttSetInstDesc}
-
-
+
+ ${ticketline.printMultiply()}x
+ #if ($ticketline.isProductCom())
+ --${ticketline.printName()}
+ #else
+ ${ticketline.printName()}
#end
- #end
+
+
+ #if ($ticketline.productAttSetInstId)
+
+ ${ticketline.productAttSetInstDesc}
+
+
+ #end
+ #end
- #end
+ #end
------------------------------------------
diff --git a/src-pos/uk/chromis/pos/templates/Printer.TicketLine.xml b/src-pos/uk/chromis/pos/templates/Printer.TicketLine.xml
index d7aeccd1..b2169d5e 100644
--- a/src-pos/uk/chromis/pos/templates/Printer.TicketLine.xml
+++ b/src-pos/uk/chromis/pos/templates/Printer.TicketLine.xml
@@ -1,7 +1,7 @@
-
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+
+
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src-pos/uk/chromis/pos/templates/Role.Employee.xml b/src-pos/uk/chromis/pos/templates/Role.Employee.xml
index b871d569..ddc4b833 100644
--- a/src-pos/uk/chromis/pos/templates/Role.Employee.xml
+++ b/src-pos/uk/chromis/pos/templates/Role.Employee.xml
@@ -1,7 +1,7 @@
+ You should have received a copy of the GNU General Public License
+ along with Chromis POS. If not, see .
+-->
-
-
-
+
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
-
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src-pos/uk/chromis/pos/templates/Ticket.Close.xml b/src-pos/uk/chromis/pos/templates/Ticket.Close.xml
index 044ba97b..57c2c289 100644
--- a/src-pos/uk/chromis/pos/templates/Ticket.Close.xml
+++ b/src-pos/uk/chromis/pos/templates/Ticket.Close.xml
@@ -1,5 +1,5 @@
// Chromis POS - The New Face of Open Source POS
-// Copyright (c) 2015 Chromis , previous uniCenta & Openbravo POS works
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
//
// This file is part of chromis oPOS
//
@@ -24,15 +24,22 @@ import javax.swing.plaf.FontUIResource;
import uk.chromis.pos.payment.PaymentInfo;
import javax.swing.JOptionPane;
import javax.swing.JDialog;
+import uk.chromis.pos.forms.AppConfig;
+import uk.chromis.pos.printer.TicketPrinterException;
+import uk.chromis.pos.forms.DataLogicSystem;
+import uk.chromis.pos.forms.AppLocal;
boolean isCash = false;
String change = "";
PaymentInfo p = ticket.payments.getFirst();
+for (PaymentInfo p : ticket.payments){
if ("cash".equals(p.getName())) {
isCash = true;
change = p.printChange();
}
+}
+
// Get details of the original font before we change it otherwise all dialogboxes will use new settings
JOptionPane pane = new JOptionPane();
@@ -47,13 +54,22 @@ if(isCash) {
JOptionPane pane = new JOptionPane();
pane.setMessage(FontText);
pane.setPreferredSize( new Dimension(450,150));
- JDialog dialog = pane.createDialog("Cash payment");
+ JDialog dialog = pane.createDialog("Cash payment");
new Thread(new Runnable() {
void run() {
dialog.show();
+ try {
+ m_TTP.printTicket(dlSystem.getResourceAsXML("Display.Message"));
+ } catch (TicketPrinterException ex) {
+ m_App.getDeviceTicket().getDeviceDisplay().writeVisor(AppLocal.APP_NAME, AppLocal.APP_VERSION);
+ }
+
+
+
}
}).start();
}
+
// Return to default settings
UIManager.put("OptionPane.buttonFont", new FontUIResource(new Font(originalFont.getName(),originalFont.getStyle(),originalFont.getSize())));
\ No newline at end of file
diff --git a/src-pos/uk/chromis/pos/templates/Ticket.CloseTimer.xml b/src-pos/uk/chromis/pos/templates/Ticket.CloseTimer.xml
new file mode 100644
index 00000000..cc27b08b
--- /dev/null
+++ b/src-pos/uk/chromis/pos/templates/Ticket.CloseTimer.xml
@@ -0,0 +1,79 @@
+// Chromis POS - The New Face of Open Source POS
+// Copyright (c) (c) 2015-2016Chromis , previous uniCenta & Openbravo POS works
+//
+// This file is part of chromis oPOS
+//
+// Chromis POS is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Chromis POS is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Chromis POS. If not, see .
+// **************************************************************************
+// Ticket.Close
+// This script displays the amount of Cash Change (CashTendered - TicketValue) to be given to Customer
+
+import java.awt.Font;
+import javax.swing.plaf.FontUIResource;
+import uk.chromis.pos.payment.PaymentInfo;
+import javax.swing.JOptionPane;
+import javax.swing.JDialog;
+import uk.chromis.pos.forms.AppConfig;
+import javax.swing.Timer;
+import uk.chromis.pos.forms.AppLocal;
+
+boolean isCash = false;
+String change = "";
+PaymentInfo p = ticket.payments.getFirst();
+
+if ("cash".equals(p.getName())) {
+ isCash = true;
+ change = p.printChange();
+}
+
+// Get details of the original font before we change it otherwise all dialogboxes will use new settings
+JOptionPane pane = new JOptionPane();
+Font originalFont=pane.getFont();
+
+UIManager.put("OptionPane.buttonFont", new FontUIResource(new Font("ARIAL",Font.PLAIN,20)));
+message = "Change: " + change;
+ JLabel FontText = new JLabel(message);
+ FontText.setFont (new Font ( "Arial", Font.BOLD, 36) );
+
+if(isCash) {
+ JOptionPane pane = new JOptionPane();
+ pane.setMessage(FontText);
+ pane.setPreferredSize( new Dimension(450,150));
+ JDialog dialog = pane.createDialog("Cash payment");
+ dialog.addWindowListener(null);
+ dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
+
+ Timer timer = new Timer(10000, new ActionListener() { // 10 sec
+ public void actionPerformed(ActionEvent e) {
+ dialog.setVisible(false);
+ dialog.dispose();
+ }
+ });
+ timer.start();
+
+ new Thread(new Runnable() {
+ void run() {
+ dialog.show();
+ try {
+ m_TTP.printTicket(dlSystem.getResourceAsXML("Display.Message"));
+ } catch (TicketPrinterException ex) {
+ m_App.getDeviceTicket().getDeviceDisplay().writeVisor(AppLocal.APP_NAME, AppLocal.APP_VERSION);
+ }
+ }
+ }).start();
+}
+
+
+// Return to default settings
+UIManager.put("OptionPane.buttonFont", new FontUIResource(new Font(originalFont.getName(),originalFont.getStyle(),originalFont.getSize())));
\ No newline at end of file
diff --git a/src-pos/uk/chromis/pos/templates/Ticket.Line.xml b/src-pos/uk/chromis/pos/templates/Ticket.Line.xml
index bece0185..b063ff81 100644
--- a/src-pos/uk/chromis/pos/templates/Ticket.Line.xml
+++ b/src-pos/uk/chromis/pos/templates/Ticket.Line.xml
@@ -1,7 +1,7 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src-pos/uk/chromis/pos/templates/Ticket.TicketLineTaxesIncluded.xml b/src-pos/uk/chromis/pos/templates/Ticket.TicketLineTaxesIncluded.xml
index 3d418826..a528c717 100644
--- a/src-pos/uk/chromis/pos/templates/Ticket.TicketLineTaxesIncluded.xml
+++ b/src-pos/uk/chromis/pos/templates/Ticket.TicketLineTaxesIncluded.xml
@@ -1,7 +1,7 @@