diff --git a/.gitignore b/.gitignore index 094d2fb..994b0b8 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,8 @@ /dist/ /src/META-INF/private.key /teste.h2.db -/teste.trace.db \ No newline at end of file +/teste.trace.db +/arquivos/modelo/mfd.txt +/arquivos/modelo/leitura.txt +/arquivos/modelo/rodape.txt +/arquivos/modelo/cabecalho.txt \ No newline at end of file diff --git a/arquivos/importar/.DS_Store b/arquivos/importar/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/arquivos/importar/.DS_Store differ diff --git a/build.xml b/build.xml index 5003ca2..3f555d6 100755 --- a/build.xml +++ b/build.xml @@ -77,6 +77,7 @@ + @@ -93,7 +94,7 @@ - + @@ -103,6 +104,10 @@ + + + + diff --git a/conf/auxiliar.bak b/conf/auxiliar.bak index 1bf9d7d..0f025d3 100644 --- a/conf/auxiliar.bak +++ b/conf/auxiliar.bak @@ -1 +1 @@ -ozkd2dkMpGQ5e9FC5YjhKh+DZHnJsWLiYcfkbk1XSCiwq0MLdtMY6Z7jhoAaRh424Y09HYHSWl4RSjPgTBBqnRtY23lt1AJ6WvoW5TOsWZaAOzzRt327BjjKd883rU/MITNj1cT92zMv233ph7CVHvvHXty8HzGNaqma8uZ3x1iaVRe8CgokuOistfsP4H79Enm/zdNJmwYlJ7wkGDOEPkfqfYd3EAJyVI5l/k7eV2v9ZCZyTa+EVERPv5ok9AfRp7R+28rHwlhL+rQH7oGYlwxlK0ovwhYuUeADTvQGsw+xzehYiIi2Ei0kJea9xTwF9Kq1y6Zd/zEn2FGUyTg7LIRxc9wYtaNjE8xM/XIAODLpB4OA1lGHWBSfv+qRL254gPLzssliY52rWS7P+9t86/dbE2SqxCooCq9T8Q1GcL4221rq7gWW7350d59MkRup6fAvwG7+Hq7e8JHpcrdW5g0U/HYxaXuyUseTPCi4oZvyMok3M6Ul04ckUoWMPoWSAE+6im4CiF0mMA6QA2M8+lkQ0vAKWfXcV0lisEgMUyyz8nD4EBHBLfG8PSfXfP1EJknRedU7x5c/OCwOw/BohpZXOHgZth4DS3GoZFs8z4HJFvkLaveBB71YK5v2D56qZBQJ4GBkPon9HYrjZOEYxPYKA0N9/Mzr+t63GtSbmquGezMahebdIBp9eV21dzroVV7AzzCFrCXVAL8cxlm7hWvSsIG3sAbr68yIe9GfovtsuqSJKVyAOGS+80VePj8O7cO6FZm7EInNcW/mWYsnT+fc71Tv8NnnwNHDtYfUJ1WTK9be4zc93JdEQorrMaQAZulDfdeFA4+umPtdK/HLB/PFroiHHL9LvWp6YEKyr+NyPFrSQYSmXgRrxg+OsCrSfGnuUvq01Xaquq9+aXoXiw== \ No newline at end of file +D/TbSW0vTEc5Es8uzKGmBLdsMbbN0upZZx35BMkerc6rN/EPRTCJzFgw3OISR3gTEckUOHCWMfbHy4PHuqXZ+7ouH9/lPq66LxE3+yF+cEoSnyQDjunDRmovsgqmQA5/TASXNkohloCQQAbEJdWj/urkmp9Yi5IPK4bhfRGJmysQbleNKSb6IcHz4edKZIt6E7peJRB2KuaBZT5Fk6ATa9LWXT8WGQ9IscJzmKDPE5zTH2+NFFRPYaAP3h7tbR5RCBGi6Nfep1VT14mRj3tJcnawCG+iYASycKgQxBO2yT0Xv8ruMQ5HevtL7yy440mL7OOqgNoJepRw4JPrkmJu11JPfRgc/2ZJ0N3ef9PE1G+iNM7aFqqMAUG0CSHnwBU8BtVfn3NJ5d0DpHCYYNf1tjmbI+uV9pNOa10GEizezMJGvfonT4WAEP81nUNolJoZQK2SI7DeTv9EE6ACqIY88Ie6NN8rXcxebQjVAYw4+k6laFwh0fuxBZ5KtSVDv82UOTYpdFsxOJt8O9gv0unRGskzRY5BnhVX5kpPZzrTIjaNhOqVQlfFpa5lWZoeFEAs6tuHs4VUSC1c3LlS+mp7DqJTU3So/3uhkJEt/XLP8YU3uvhPyROI+UiHwWcGRMCmOWNYDiMFSIQVmbwIK3m0Wzt0+SdEkchRf2I0HEduo92CbnTJtBaHQoLckZA4XCC1+xa1bV1bHdsw67B39JSG695EJNR9Vi64R70tkcvX9hJilMmLQkRB+Z6mgD6iiAivz8xi0q2q3DRUITbd8TlzHYoOUIq2v0xA95+u4F5RfiZgDHdi9hCRrDOqBw8mbCjsOLfQ7B323HgIkGUUwbjxIN1F6sR8w0Ea6I0HNvndJaytaweMnTBig3V3l75GthQfturBzl/tiYqIbgfda4mrk2vpD1VjewB08hT7vi82mhdxvcomdtHr1anbV5WISfxIlvvm4DNySxtWMGzcJ+7d1fBy70w3kupe207YNypUEomtMdeWEpzEK6Z3cHXBUBrT5BzDHHf2heZHjnroE5yIxtgkBdWlkP8+rbPTD1l7Ds+nLFvE/9B/O4AhEPtwn+AejZtgT9I4AUdnYVjeUKeP61Ow7kDtNrB6OaoQsDz75ZFrfh0MKWcTK/zgRjc8g/OSNroTzva2J9qUmneKHOKNMvTZv8Cq6VbT1uru8qRGvCV+nrsHkzfnF7EqziWds3rnl4kiWAKsUMvQ7g2615JNd0+e4V7VuRtzUYkl3TGlQAik0LC9CACXAw== \ No newline at end of file diff --git a/conf/auxiliar.txt b/conf/auxiliar.txt index c5510d9..0f025d3 100644 --- a/conf/auxiliar.txt +++ b/conf/auxiliar.txt @@ -1 +1 @@ -QQ0K92tjU6qHypGJq3iyIXOkKfV74/tFSmQ35/4X6V1G2Sw+8/bXIjH4LbMqmdExwB3aXnL3bMkjm8kn7Ns5a6DYtmZEWL0FNcM8v4Elx1iC51BKYj7ML0OKuAc1LOfsFfJzHaICQJAS0TBW8NifYeJtSRz1kYiQqFXgomWfJwqDbuz1kdXmgS/bBtjIYAz5jsWJUmL7l83uYRv+xI6Er0lHTa9rmTTDts8cn5jyNbp/86pMmpee3OYN4APsmpV/U0tm5pN43wmRrScdwTOYIOH/BO29XtUozhafNJeubH/dIGA47zJW3B4/d39zrE0TJcXbqYLxjAcJwdjOUfQ1HYIIqqoZYIJffYt3l4KpF73SU5pQQIcIVKk06m2ChkQ54EP67hfuFe4zuehLXN1RonIPcov1SJxJiav1setw4B14Y4a0050fgr4ahvNv4mIuOmgm6/Yfepm0vN1CaYymk8RQVWq1bgNDOklBbeS69M9CY7ttGAZ82CKCQ81hewUegLCt0mF5iw8KvVE9nRmV3ysWFRXSZissQAatlv4D1N3EhW028E/hjzgQsELZclxM+5h1TpDBJlYuE1IAywUzs1sAeUoJAGTkCyuvAMYXzhHXHhMVRJmRuCfVnf429ee9WwDrMxwRFxdfhPbl8cPy4oRhtemhW5+tMi4gGL2hz2mTjyg0IR4ScuTK77xJFV/ROtEv1fh55M2JaTtbjmVe5mhwkIDhDQmt5YzzpbMC88YpahYkOukc10j6UK2HWOK4ftJgPyEUE5Uh84G5Q5gLARMuIWKwKMWBkWUO2PsOZBksvdcBdd8BoKIcrXquYw6eE84fzkopZrgte0/YMajBAC6wkiXYDVCtnYxXJrclghERXYzEP4cpNVFDb8ZAfc2yVsrtLPn8eLjql8dCf/18IIKmjouawvWtlyGnpHb5UnesBf4BUCOoINC8nm3X1Tqh3GY8VFGsKaE5OrCdEZ7PTrfX7iZMLXLHldsHqCNPkqRRPnx7rn3MgRMkJG6nNWmxbDLjGtDKrrRO60wLeTM+bbmFcJqSHo131pqRucK8Kv55ynLGZJ7z1SluDQp4knZAAyWERuf8B5OjFKQCXwoHxG9DaJmAC41OQwmEjS5ROOh8mN2WpdOGNYUkqiAW7Hzcyh8Le+hMQ/EcmtbJYW3BJMAptA6dmMTShUVBkHMGbfmqR2Fk19DbhDDIcZxxENBEpMicTLgGYytUjcEJ/mKdJWCjCyMfYRJOVReU4Oms/6DVPIP5Zm6h7Q== \ No newline at end of file +D/TbSW0vTEc5Es8uzKGmBLdsMbbN0upZZx35BMkerc6rN/EPRTCJzFgw3OISR3gTEckUOHCWMfbHy4PHuqXZ+7ouH9/lPq66LxE3+yF+cEoSnyQDjunDRmovsgqmQA5/TASXNkohloCQQAbEJdWj/urkmp9Yi5IPK4bhfRGJmysQbleNKSb6IcHz4edKZIt6E7peJRB2KuaBZT5Fk6ATa9LWXT8WGQ9IscJzmKDPE5zTH2+NFFRPYaAP3h7tbR5RCBGi6Nfep1VT14mRj3tJcnawCG+iYASycKgQxBO2yT0Xv8ruMQ5HevtL7yy440mL7OOqgNoJepRw4JPrkmJu11JPfRgc/2ZJ0N3ef9PE1G+iNM7aFqqMAUG0CSHnwBU8BtVfn3NJ5d0DpHCYYNf1tjmbI+uV9pNOa10GEizezMJGvfonT4WAEP81nUNolJoZQK2SI7DeTv9EE6ACqIY88Ie6NN8rXcxebQjVAYw4+k6laFwh0fuxBZ5KtSVDv82UOTYpdFsxOJt8O9gv0unRGskzRY5BnhVX5kpPZzrTIjaNhOqVQlfFpa5lWZoeFEAs6tuHs4VUSC1c3LlS+mp7DqJTU3So/3uhkJEt/XLP8YU3uvhPyROI+UiHwWcGRMCmOWNYDiMFSIQVmbwIK3m0Wzt0+SdEkchRf2I0HEduo92CbnTJtBaHQoLckZA4XCC1+xa1bV1bHdsw67B39JSG695EJNR9Vi64R70tkcvX9hJilMmLQkRB+Z6mgD6iiAivz8xi0q2q3DRUITbd8TlzHYoOUIq2v0xA95+u4F5RfiZgDHdi9hCRrDOqBw8mbCjsOLfQ7B323HgIkGUUwbjxIN1F6sR8w0Ea6I0HNvndJaytaweMnTBig3V3l75GthQfturBzl/tiYqIbgfda4mrk2vpD1VjewB08hT7vi82mhdxvcomdtHr1anbV5WISfxIlvvm4DNySxtWMGzcJ+7d1fBy70w3kupe207YNypUEomtMdeWEpzEK6Z3cHXBUBrT5BzDHHf2heZHjnroE5yIxtgkBdWlkP8+rbPTD1l7Ds+nLFvE/9B/O4AhEPtwn+AejZtgT9I4AUdnYVjeUKeP61Ow7kDtNrB6OaoQsDz75ZFrfh0MKWcTK/zgRjc8g/OSNroTzva2J9qUmneKHOKNMvTZv8Cq6VbT1uru8qRGvCV+nrsHkzfnF7EqziWds3rnl4kiWAKsUMvQ7g2615JNd0+e4V7VuRtzUYkl3TGlQAik0LC9CACXAw== \ No newline at end of file diff --git a/conf/config.properties b/conf/config.properties index 03ee75f..8c5ebe2 100644 --- a/conf/config.properties +++ b/conf/config.properties @@ -47,16 +47,20 @@ pag.troca=true pag.pos=true ## ECF ## -# ip ou url da maquina que esta com o ACBr rodando (padrao = localhost) -ecf.servidor=localhost -# porta onde o ACBr responde (padrao = 3434) +# nome da marca do ECF, se for acesso direto e fiscal [BEMATECH ou DARUMA], se for acesso direto e nao fiscal [BEMATECH_NF ou DARUMA_NF], se for fiscal com acesso pelo ACRRmonitor [ACBR] +ecf.marca=ACBR +# utilizar um numero para identificar o modelo usado, somente para as Nao Fiscal, veja a documentacao para saber qual numero usar +ecf.modelo= +# porta onde o ECF esta configurado [COM1, COM2, USB e etc], se ACBR usar 3434 ecf.porta=3434 +# velocidade de comunicacao da porta [9600 ou 115200], se ACBR colocar o timeout 10000 +ecf.velocidade=10000 # tempo em segundos de espera para recuperar a Z ecf.tempo=30 # quantidade de tentativas de recuperar os dados da Z ecf.tentativas=3 -# gerar arquivo cat52 para NFA ou NFP -ecf.cat52=true +# gerar arquivo cat52 para NFA ou NFP, caso seja pra gerar colocar o nome do arquivo de acordo com o ECF. +ecf.cat52= # nome de suprimento ecf.suprimento=Suprimento # nome de sangria diff --git a/dlls/Bematech.zip b/dlls/Bematech.zip old mode 100755 new mode 100644 index 95fd8b4..0fe0f7f Binary files a/dlls/Bematech.zip and b/dlls/Bematech.zip differ diff --git a/dlls/Daruma.zip b/dlls/Daruma.zip old mode 100755 new mode 100644 index 8b84993..ec32fd0 Binary files a/dlls/Daruma.zip and b/dlls/Daruma.zip differ diff --git a/dlls/Elgin.zip b/dlls/Elgin.zip deleted file mode 100644 index 6ddd87f..0000000 Binary files a/dlls/Elgin.zip and /dev/null differ diff --git a/dlls/Epson.zip b/dlls/Epson.zip deleted file mode 100644 index b1f5d53..0000000 Binary files a/dlls/Epson.zip and /dev/null differ diff --git a/dlls/Leiame.txt b/dlls/Leiame.txt index 12b2d92..f4ae2c8 100755 --- a/dlls/Leiame.txt +++ b/dlls/Leiame.txt @@ -1,5 +1,5 @@ ## Leiame ## -# Descompacte o zip correspondente da impressora que ira usar, e coloque todos os arquivos dentro da pasta ACBrMonitor. +# Descompacte o zip correspondente da impressora que ira usar, e coloque todos os arquivos dentro da pasta ACBrMonitor caso utilize o ACRB, se for usar acesso direto coloque os arquivos na pasta C:\Windows\system32\ -# Caso nao tenha um zip para sua impressora entre no site do fabricante para fazer o download, ou melhor entre em contato conosco suporte@phdss.com.br \ No newline at end of file +# Caso nao tenha um zip para sua impressora entre no site do fabricante para fazer o download, ou se desejar entre em contato conosco suporte@phdss.com.br \ No newline at end of file diff --git a/dlls/Sweda.zip b/dlls/Sweda.zip deleted file mode 100644 index 6feba87..0000000 Binary files a/dlls/Sweda.zip and /dev/null differ diff --git a/lib/h2.jar b/lib/db/h2.jar similarity index 100% rename from lib/h2.jar rename to lib/db/h2.jar diff --git a/lib/mysql.jar b/lib/db/mysql.jar similarity index 100% rename from lib/mysql.jar rename to lib/db/mysql.jar diff --git a/lib/postgresql.jar b/lib/db/postgresql.jar similarity index 100% rename from lib/postgresql.jar rename to lib/db/postgresql.jar diff --git a/lib/ecf/BematechFrameworkJNA.jar b/lib/ecf/BematechFrameworkJNA.jar new file mode 100644 index 0000000..d463676 Binary files /dev/null and b/lib/ecf/BematechFrameworkJNA.jar differ diff --git a/lib/ecf/DarumaFrameworkJNA.jar b/lib/ecf/DarumaFrameworkJNA.jar new file mode 100644 index 0000000..22c686d Binary files /dev/null and b/lib/ecf/DarumaFrameworkJNA.jar differ diff --git a/lib/jna.jar b/lib/ecf/jna.jar similarity index 100% rename from lib/jna.jar rename to lib/ecf/jna.jar diff --git a/lib/platform.jar b/lib/ecf/platform.jar similarity index 100% rename from lib/platform.jar rename to lib/ecf/platform.jar diff --git a/lib/beanio.jar b/lib/file/beanio.jar similarity index 100% rename from lib/beanio.jar rename to lib/file/beanio.jar diff --git a/lib/ini4j.jar b/lib/file/ini4j.jar similarity index 100% rename from lib/ini4j.jar rename to lib/file/ini4j.jar diff --git a/lib/jasypt.jar b/lib/file/jasypt.jar similarity index 100% rename from lib/jasypt.jar rename to lib/file/jasypt.jar diff --git a/lib/log4j.jar b/lib/file/log4j.jar similarity index 100% rename from lib/log4j.jar rename to lib/file/log4j.jar diff --git a/lib/jaxb/.DS_Store b/lib/jaxb/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/lib/jaxb/.DS_Store differ diff --git a/lib/jpa/.DS_Store b/lib/jpa/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/lib/jpa/.DS_Store differ diff --git a/lib/libs.txt b/lib/libs.txt index 9ddca67..8289dee 100644 --- a/lib/libs.txt +++ b/lib/libs.txt @@ -31,6 +31,7 @@ jersey-json-1.8.jar jersey-multipart-1.8.jar jersey-server-1.8.jar jersey-simple-server-1.8.jar +simple-4.1.21.jar # NFe 2.00 nfexml2.jar @@ -66,20 +67,25 @@ poi.jar saaj.jar xalan-2.7.0.jar -# Projetos -OpenECF.jar -OpenPAF.jar -OpenTEF.jar - -# Outras -jasypt-1.9.0.jar -beanio.jar -ini4j-0.5.2.jar +# Bancos h2-1.3.170.jar mysql-connector-java-5.1.18-bin.jar postgresql-9.2-1000.jdbc4.jar -simple-4.1.21.jar -loj4j-1.2.16.jar + +# ECFs jna.jar plataform.jar -swing-layout-1.0.4.jar \ No newline at end of file +BematechFrameworkJNA.jar +FrameworkJNA.jar + +# Arquivos +jasypt-1.9.0.jar +beanio.jar +ini4j-0.5.2.jar +loj4j-1.2.16.jar +swing-layout-1.0.4.jar + +# Projetos +OpenECF.jar +OpenPAF.jar +OpenTEF.jar \ No newline at end of file diff --git a/lib/nblibraries.properties b/lib/nblibraries.properties index 1862991..48da38c 100755 --- a/lib/nblibraries.properties +++ b/lib/nblibraries.properties @@ -71,7 +71,8 @@ libs.restlib.classpath=\ ${base}/rest/jersey-json.jar:\ ${base}/rest/jersey-multipart.jar:\ ${base}/rest/jersey-server.jar:\ - ${base}/rest/jersey-simple-server.jar + ${base}/rest/jersey-simple-server.jar:\ + ${base}/rest/simple.jar libs.restlib.displayName=REST libs.swing-layout.classpath=\ ${base}/swing-layout/swing-layout-1.0.4.jar diff --git a/lib/rest/.DS_Store b/lib/rest/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/lib/rest/.DS_Store differ diff --git a/lib/simple.jar b/lib/rest/simple.jar similarity index 100% rename from lib/simple.jar rename to lib/rest/simple.jar diff --git a/nbproject/.DS_Store b/nbproject/.DS_Store new file mode 100644 index 0000000..aaf98ad Binary files /dev/null and b/nbproject/.DS_Store differ diff --git a/nbproject/build-impl.xml b/nbproject/build-impl.xml index 1f2008e..f66c055 100755 --- a/nbproject/build-impl.xml +++ b/nbproject/build-impl.xml @@ -918,6 +918,13 @@ is divided into following sections: + + + + + + + @@ -1421,6 +1428,13 @@ is divided into following sections: + + + + + + + diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties index 964d545..4822a41 100755 --- a/nbproject/genfiles.properties +++ b/nbproject/genfiles.properties @@ -3,6 +3,6 @@ build.xml.script.CRC32=9293e70a build.xml.stylesheet.CRC32=28e38971@1.50.2.46 # This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. # Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. -nbproject/build-impl.xml.data.CRC32=6a4ff81a -nbproject/build-impl.xml.script.CRC32=55f2abc8 +nbproject/build-impl.xml.data.CRC32=c46a48d1 +nbproject/build-impl.xml.script.CRC32=50a3ba7b nbproject/build-impl.xml.stylesheet.CRC32=5a01deb7@1.68.1.46 diff --git a/nbproject/private/.DS_Store b/nbproject/private/.DS_Store new file mode 100644 index 0000000..59f1bc5 Binary files /dev/null and b/nbproject/private/.DS_Store differ diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml index 6d7387a..9eccfe4 100755 --- a/nbproject/private/private.xml +++ b/nbproject/private/private.xml @@ -11,7 +11,7 @@ src/br/com/openpdv/visao/core/Caixa.java - 1453 + 1456 diff --git a/nbproject/project.properties b/nbproject/project.properties index 4e9e87b..4d8af80 100755 --- a/nbproject/project.properties +++ b/nbproject/project.properties @@ -31,17 +31,18 @@ dist.jar=${dist.dir}/OpenPDV.jar dist.javadoc.dir=${dist.dir}/javadoc endorsed.classpath= excludes= -file.reference.beanio.jar=lib/beanio.jar -file.reference.h2.jar=lib/h2.jar -file.reference.ini4j.jar=lib/ini4j.jar -file.reference.jasypt.jar=lib/jasypt.jar -file.reference.jna.jar=lib/jna.jar -file.reference.log4j.jar=lib/log4j.jar -file.reference.mysql.jar=lib/mysql.jar +file.reference.beanio.jar=lib/file/beanio.jar +file.reference.BematechFrameworkJNA.jar=lib/ecf/BematechFrameworkJNA.jar +file.reference.DarumaFrameworkJNA.jar=lib/ecf/DarumaFrameworkJNA.jar +file.reference.h2.jar=lib/db/h2.jar +file.reference.ini4j.jar=lib/file/ini4j.jar +file.reference.jasypt.jar=lib/file/jasypt.jar +file.reference.jna.jar=lib/ecf/jna.jar +file.reference.log4j.jar=lib/file/log4j.jar +file.reference.mysql.jar=lib/db/mysql.jar file.reference.OpenPDV-conf=conf -file.reference.platform.jar=lib/platform.jar -file.reference.postgresql.jar=lib/postgresql.jar -file.reference.simple.jar=lib/simple.jar +file.reference.platform.jar=lib/ecf/platform.jar +file.reference.postgresql.jar=lib/db/postgresql.jar includes=** jar.archive.disabled=${jnlp.enabled} jar.compress=true @@ -51,20 +52,22 @@ javac.classpath=\ ${libs.jaxb.classpath}:\ ${libs.restlib.classpath}:\ ${libs.NFe_2.0.classpath}:\ + ${libs.swing-layout.classpath}:\ + ${reference.AdmPDV.jar}:\ ${reference.OpenECF.jar}:\ ${reference.OpenPAF.jar}:\ ${reference.OpenTEF.jar}:\ ${file.reference.beanio.jar}:\ + ${file.reference.BematechFrameworkJNA.jar}:\ + ${file.reference.DarumaFrameworkJNA.jar}:\ + ${file.reference.jna.jar}:\ + ${file.reference.platform.jar}:\ ${file.reference.ini4j.jar}:\ ${file.reference.jasypt.jar}:\ - ${file.reference.jna.jar}:\ ${file.reference.log4j.jar}:\ - ${file.reference.platform.jar}:\ - ${file.reference.simple.jar}:\ ${file.reference.h2.jar}:\ ${file.reference.mysql.jar}:\ - ${file.reference.postgresql.jar}:\ - ${libs.swing-layout.classpath} + ${file.reference.postgresql.jar} # Space-separated list of extra javac options javac.compilerargs= javac.deprecation=true @@ -103,9 +106,11 @@ manifest.file=manifest.mf meta.inf.dir=${src.dir}/META-INF mkdist.disabled=false platform.active=default_platform +project.AdmPDV=../AdmPDV project.OpenECF=../OpenECF project.OpenPAF=../OpenPAF project.OpenTEF=../OpenTEF +reference.AdmPDV.jar=${project.AdmPDV}/dist/AdmPDV.jar reference.OpenECF.jar=${project.OpenECF}/dist/OpenECF.jar reference.OpenPAF.jar=${project.OpenPAF}/dist/OpenPAF.jar reference.OpenTEF.jar=${project.OpenTEF}/dist/OpenTEF.jar diff --git a/nbproject/project.xml b/nbproject/project.xml index 00a5cd2..6ca85b5 100755 --- a/nbproject/project.xml +++ b/nbproject/project.xml @@ -15,6 +15,14 @@ ./lib/nblibraries.properties + + AdmPDV + jar + + jar + clean + jar + OpenECF jar diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000..977a042 Binary files /dev/null and b/src/.DS_Store differ diff --git a/src/br/com/openpdv/controlador/comandos/ComandoAbrirVenda.java b/src/br/com/openpdv/controlador/comandos/ComandoAbrirVenda.java index 753ee08..7d359a7 100755 --- a/src/br/com/openpdv/controlador/comandos/ComandoAbrirVenda.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoAbrirVenda.java @@ -1,7 +1,7 @@ package br.com.openpdv.controlador.comandos; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.controlador.permissao.Login; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.ecf.EcfVenda; @@ -9,7 +9,8 @@ import br.com.openpdv.modelo.sistema.SisCliente; import br.com.openpdv.visao.core.Caixa; import br.com.phdss.ECF; -import br.com.phdss.EComandoECF; +import br.com.phdss.EComando; +import br.com.phdss.IECF; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -26,6 +27,7 @@ public class ComandoAbrirVenda implements IComando { private Logger log; private SisCliente cliente; private String[] resp; + private IECF ecf; /** * Costrutor padrao. @@ -42,6 +44,7 @@ public ComandoAbrirVenda() { public ComandoAbrirVenda(SisCliente cliente) { this.log = Logger.getLogger(ComandoAbrirVenda.class); this.cliente = cliente; + this.ecf = ECF.getInstancia(); } @Override @@ -52,7 +55,7 @@ public void executar() throws OpenPdvException { try { AbrirVendaBanco(); } catch (OpenPdvException ex) { - ECF.enviar(EComandoECF.ECF_CancelaCupom); + ecf.enviar(EComando.ECF_CancelaCupom); throw ex; } // coloca na tela @@ -70,9 +73,9 @@ public void desfazer() throws OpenPdvException { * @exception OpenPdvException dispara caso nao consiga executar. */ public void abrirVendaECF() throws OpenPdvException { - ECF.enviar(EComandoECF.ECF_CorrigeEstadoErro); - resp = ECF.enviar(EComandoECF.ECF_AbreCupom); - if (ECF.ERRO.equals(resp[0])) { + ecf.enviar(EComando.ECF_CorrigeEstadoErro); + resp = ecf.enviar(EComando.ECF_AbreCupom); + if (IECF.ERRO.equals(resp[0])) { log.error("Erro ao abrir a venda no ECF. -> " + resp[1]); throw new OpenPdvException(resp[1]); } @@ -96,24 +99,24 @@ public void AbrirVendaBanco() throws OpenPdvException { venda.setSisCliente(cliente); venda.setInformouCliente(cliente != null); // ccf - resp = ECF.enviar(EComandoECF.ECF_NumCCF); - if (ECF.OK.equals(resp[0])) { + resp = ecf.enviar(EComando.ECF_NumCCF); + if (IECF.OK.equals(resp[0])) { venda.setEcfVendaCcf(Integer.valueOf(resp[1])); } else { log.error("Erro ao abrir a venda no BD. -> " + resp[1]); throw new OpenPdvException(resp[1]); } // coo - resp = ECF.enviar(EComandoECF.ECF_NumCupom); - if (ECF.OK.equals(resp[0])) { + resp = ecf.enviar(EComando.ECF_NumCupom); + if (IECF.OK.equals(resp[0])) { venda.setEcfVendaCoo(Integer.valueOf(resp[1])); } else { log.error("Erro ao abrir a venda no BD. -> " + resp[1]); throw new OpenPdvException(resp[1]); } // data - resp = ECF.enviar(EComandoECF.ECF_DataHora); - if (ECF.OK.equals(resp[0])) { + resp = ecf.enviar(EComando.ECF_DataHora); + if (IECF.OK.equals(resp[0])) { Date data = null; try { data = new SimpleDateFormat("dd/MM/yy HH:mm:ss").parse(resp[1]); @@ -147,7 +150,7 @@ public void AbrirVendaBanco() throws OpenPdvException { */ public void abrirVendaTela() throws OpenPdvException { Caixa.getInstancia().getBobina().removeAllElements(); - Caixa.getInstancia().getBobina().addElement(ECF.LS); + Caixa.getInstancia().getBobina().addElement(IECF.LS); EcfVenda venda = Caixa.getInstancia().getVenda(); String data = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(venda.getEcfVendaData()); Caixa.getInstancia().getBobina().addElement(data @@ -158,7 +161,7 @@ public void abrirVendaTela() throws OpenPdvException { Caixa.getInstancia().getBobina().addElement("ITEM CÓDIGO DESCRIÇÃO "); // linha 2 Caixa.getInstancia().getBobina().addElement("QTD. UN VL.UNIT.(R$) ST VL.ITEM(R$)"); - Caixa.getInstancia().getBobina().addElement(ECF.LS); + Caixa.getInstancia().getBobina().addElement(IECF.LS); } public SisCliente getCliente() { diff --git a/src/br/com/openpdv/controlador/comandos/ComandoAdicionarItem.java b/src/br/com/openpdv/controlador/comandos/ComandoAdicionarItem.java index 09529d5..74b696e 100755 --- a/src/br/com/openpdv/controlador/comandos/ComandoAdicionarItem.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoAdicionarItem.java @@ -1,12 +1,13 @@ package br.com.openpdv.controlador.comandos; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.ecf.EcfVendaProduto; import br.com.openpdv.visao.core.Caixa; import br.com.phdss.ECF; -import br.com.phdss.EComandoECF; +import br.com.phdss.EComando; +import br.com.phdss.IECF; import br.com.phdss.controlador.PAF; import org.apache.log4j.Logger; @@ -19,6 +20,7 @@ public class ComandoAdicionarItem implements IComando { private Logger log; private EcfVendaProduto vendaProduto; + private IECF ecf; /** * Construtor padrao. @@ -35,6 +37,7 @@ public ComandoAdicionarItem() { public ComandoAdicionarItem(EcfVendaProduto vendaProduto) { this.log = Logger.getLogger(ComandoCancelarItem.class); this.vendaProduto = vendaProduto; + this.ecf = ECF.getInstancia(); } @Override @@ -42,7 +45,7 @@ public void executar() throws OpenPdvException { // adicionar o item no ECF adicionarItemEcf(); // pega o ultimo numero - String[] resp = ECF.enviar(EComandoECF.ECF_NumUltItem); + String[] resp = ecf.enviar(EComando.ECF_NumUltItem); // salva no bd adicionarItemBanco(resp[1]); // mostra na tela @@ -66,18 +69,18 @@ public void adicionarItemEcf() throws OpenPdvException { String qtd = Util.formataNumero(vendaProduto.getEcfVendaProdutoQuantidade(), 1, 2, false).replace(",", "."); String valor = Util.formataNumero(vendaProduto.getEcfVendaProdutoBruto(), 1, 2, false).replace(",", "."); String und = vendaProduto.getProdEmbalagem().getProdEmbalagemNome(); - if (und.length() > 3) { - und = und.substring(0, 3); + if (und.length() > 2) { + und = und.substring(0, 2); } - String[] resp = ECF.enviar(EComandoECF.ECF_VendeItem, new String[]{codigo, descricao, aliquota, qtd, valor, "0", und}); - if (ECF.OK.equals(resp[0])) { + String[] resp = ecf.enviar(EComando.ECF_VendeItem, new String[]{codigo, descricao, aliquota, qtd, valor, "0", und}); + if (IECF.OK.equals(resp[0])) { // atualiza o gt try { - resp = ECF.enviar(EComandoECF.ECF_GrandeTotal); - if (ECF.OK.equals(resp[0])) { + resp = ecf.enviar(EComando.ECF_GrandeTotal); + if (IECF.OK.equals(resp[0])) { PAF.AUXILIAR.setProperty("ecf.gt", resp[1]); - PAF.criptografar(); + Util.criptografar(null, PAF.AUXILIAR); } else { throw new Exception(resp[1]); } @@ -117,21 +120,21 @@ public void adicionarItemTela(String ordem) throws OpenPdvException { StringBuilder linha1 = new StringBuilder(); linha1.append(Util.formataNumero(ordem, 3, 0, false)); linha1.append(" "); - linha1.append(Util.formataTexto(vendaProduto.getEcfVendaProdutoCodigo(), " ", 14, false)); + linha1.append(Util.formataTexto(vendaProduto.getEcfVendaProdutoCodigo(), " ", 14, Util.EDirecao.ESQUERDA)); linha1.append(" "); linha1.append(vendaProduto.getProdProduto().getProdProdutoDescricao().length() > 28 ? vendaProduto.getProdProduto().getProdProdutoDescricao().substring(0, 28) : vendaProduto.getProdProduto().getProdProdutoDescricao()); Caixa.getInstancia().getBobina().addElement(linha1.toString()); // linha 2 StringBuilder linha2 = new StringBuilder(); - linha2.append(Util.formataTexto(Util.formataNumero(vendaProduto.getEcfVendaProdutoQuantidade(), 1, 2, false), " ", 8, true)); + linha2.append(Util.formataTexto(Util.formataNumero(vendaProduto.getEcfVendaProdutoQuantidade(), 1, 2, false), " ", 8, Util.EDirecao.DIREITA)); linha2.append(" "); linha2.append(vendaProduto.getProdEmbalagem().getProdEmbalagemNome().length() > 3 ? vendaProduto.getProdEmbalagem().getProdEmbalagemNome().subSequence(0, 3) : vendaProduto.getProdEmbalagem().getProdEmbalagemNome()); linha2.append(" x "); - linha2.append(Util.formataTexto(Util.formataNumero(vendaProduto.getEcfVendaProdutoLiquido(), 1, 2, false), " ", 13, true)); - linha2.append(Util.formataTexto(getAliquota(), " ", 5, false)); - linha2.append(Util.formataTexto(Util.formataNumero(vendaProduto.getEcfVendaProdutoTotal(), 1, 2, false), " ", 13, false)); + linha2.append(Util.formataTexto(Util.formataNumero(vendaProduto.getEcfVendaProdutoLiquido(), 1, 2, false), " ", 13, Util.EDirecao.DIREITA)); + linha2.append(Util.formataTexto(getAliquota(), " ", 5, Util.EDirecao.ESQUERDA)); + linha2.append(Util.formataTexto(Util.formataNumero(vendaProduto.getEcfVendaProdutoTotal(), 1, 2, false), " ", 13, Util.EDirecao.ESQUERDA)); Caixa.getInstancia().getBobina().addElement(linha2.toString()); // colocando no foco selecionado Caixa.getInstancia().getLstBobina().setSelectedIndex(Caixa.getInstancia().getBobina().getSize() - 1); diff --git a/src/br/com/openpdv/controlador/comandos/ComandoCancelarCartao.java b/src/br/com/openpdv/controlador/comandos/ComandoCancelarCartao.java index 535df7b..dd22c24 100644 --- a/src/br/com/openpdv/controlador/comandos/ComandoCancelarCartao.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoCancelarCartao.java @@ -1,10 +1,11 @@ package br.com.openpdv.controlador.comandos; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.ecf.EcfPagamento; import br.com.phdss.ECF; -import br.com.phdss.EComandoECF; +import br.com.phdss.EComando; +import br.com.phdss.IECF; import br.com.phdss.TEF; /** @@ -15,6 +16,7 @@ public class ComandoCancelarCartao implements IComando { private EcfPagamento pag; + private IECF ecf; /** * Construtor padrao. @@ -23,6 +25,7 @@ public class ComandoCancelarCartao implements IComando { */ public ComandoCancelarCartao(EcfPagamento pag) { this.pag = pag; + this.ecf = ECF.getInstancia(); } @Override @@ -34,22 +37,22 @@ public void executar() throws OpenPdvException { try { TEF.bloquear(true); - ECF.enviar(EComandoECF.ECF_FechaRelatorio); - ECF.enviar(EComandoECF.ECF_AbreRelatorioGerencial, Util.getConfig().get("ecf.reltef")); - TEF.imprimirVias(TEF.getDados(), EComandoECF.ECF_LinhaRelatorioGerencial); - ECF.enviar(EComandoECF.ECF_FechaRelatorio); + ecf.enviar(EComando.ECF_FechaRelatorio); + ecf.enviar(EComando.ECF_AbreRelatorioGerencial, Util.getConfig().get("ecf.reltef")); + TEF.imprimirVias(TEF.getDados(), EComando.ECF_LinhaRelatorioGerencial); + ecf.enviar(EComando.ECF_FechaRelatorio); pag.setEcfPagamentoEstornoNsu(TEF.getDados().get("012-000")); TEF.confirmarTransacao(id, true); // pega o numero GNF da impressao do cartao - String[] resp = ECF.enviar(EComandoECF.ECF_NumGNF); + String[] resp = ecf.enviar(EComando.ECF_NumGNF); pag.setEcfPagamentoGnf(Integer.valueOf(resp[1])); // salva o documento para relatorio new ComandoSalvarDocumento("RG").executar(); TEF.bloquear(false); } catch (Exception ex) { TEF.bloquear(false); - ECF.enviar(EComandoECF.ECF_FechaRelatorio); + ecf.enviar(EComando.ECF_FechaRelatorio); TEF.confirmarTransacao(id, false); throw new OpenPdvException(ex); } diff --git a/src/br/com/openpdv/controlador/comandos/ComandoCancelarItem.java b/src/br/com/openpdv/controlador/comandos/ComandoCancelarItem.java index d3823b1..a063acc 100755 --- a/src/br/com/openpdv/controlador/comandos/ComandoCancelarItem.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoCancelarItem.java @@ -1,7 +1,7 @@ package br.com.openpdv.controlador.comandos; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.EComandoSQL; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.core.Sql; @@ -11,9 +11,8 @@ import br.com.openpdv.modelo.ecf.EcfVendaProduto; import br.com.openpdv.visao.core.Caixa; import br.com.phdss.ECF; -import br.com.phdss.EComandoECF; -import java.util.ArrayList; -import java.util.List; +import br.com.phdss.EComando; +import br.com.phdss.IECF; import org.apache.log4j.Logger; /** @@ -25,6 +24,7 @@ public class ComandoCancelarItem implements IComando { private Logger log; private EcfVendaProduto vendaProduto; + private IECF ecf; /** * Construtor padrao. @@ -41,6 +41,7 @@ public ComandoCancelarItem() { public ComandoCancelarItem(EcfVendaProduto vendaProduto) { this.log = Logger.getLogger(ComandoCancelarItem.class); this.vendaProduto = vendaProduto; + this.ecf = ECF.getInstancia(); } @Override @@ -64,8 +65,17 @@ public void desfazer() throws OpenPdvException { * @exception OpenPdvException dispara caso nao consiga executar. */ public void cancelarItemEcf() throws OpenPdvException { - String[] resp = ECF.enviar(EComandoECF.ECF_CancelaItemVendido, vendaProduto.getEcfVendaProdutoOrdem() + ""); - if (ECF.ERRO.equals(resp[0])) { + String codigo = vendaProduto.getEcfVendaProdutoCodigo(); + String aliquota = getAliquota().replace(",", "."); + String qtd = Util.formataNumero(vendaProduto.getEcfVendaProdutoQuantidade(), 1, 2, false).replace(",", "."); + String valor = Util.formataNumero(vendaProduto.getEcfVendaProdutoBruto(), 1, 2, false).replace(",", "."); + String und = vendaProduto.getProdEmbalagem().getProdEmbalagemNome(); + if (und.length() > 3) { + und = und.substring(0, 3); + } + + String[] resp = ecf.enviar(EComando.ECF_CancelaItemVendido, new String[]{vendaProduto.getEcfVendaProdutoOrdem() + "", codigo, aliquota, qtd, valor, und}); + if (IECF.ERRO.equals(resp[0])) { log.error("Erro ao cancelar o item no ECF. -> " + resp[1]); throw new OpenPdvException(resp[1]); } @@ -91,24 +101,54 @@ public void cancelarItemBanco() throws OpenPdvException { * @exception OpenPdvException dispara caso nao consiga executar. */ public void cancelarItemTela() throws OpenPdvException { - Caixa.getInstancia().getBobina().addElement(Util.formataTexto("", "*", ECF.COL, true)); + String aliquota = getAliquota().replace(",", "."); + String qtd = Util.formataNumero(vendaProduto.getEcfVendaProdutoQuantidade(), 1, 2, false).replace(",", "."); + String valor = Util.formataNumero(vendaProduto.getEcfVendaProdutoBruto(), 1, 2, false).replace(",", "."); + double total = Double.valueOf(qtd) * Double.valueOf(valor); + String und = vendaProduto.getProdEmbalagem().getProdEmbalagemNome(); + if (und.length() > 3) { + und = und.substring(0, 3); + } + // linha 1 - StringBuilder linha1 = new StringBuilder(); - linha1.append(Util.formataNumero(vendaProduto.getEcfVendaProdutoOrdem(), 3, 0, false)); - linha1.append(" "); - linha1.append(Util.formataTexto(vendaProduto.getEcfVendaProdutoCodigo(), " ", 14, true)); - linha1.append(" "); - linha1.append(vendaProduto.getProdProduto().getProdProdutoDescricao().length() > 28 - ? vendaProduto.getProdProduto().getProdProdutoDescricao().substring(0, 28) : vendaProduto.getProdProduto().getProdProdutoDescricao()); + StringBuilder linha1 = new StringBuilder("cancelamento item:"); + linha1.append(Util.formataNumero(vendaProduto.getEcfVendaProdutoOrdem(), 3, 0, false)).append(" "); + linha1.append(Util.formataTexto(vendaProduto.getEcfVendaProdutoCodigo(), " ", 14, Util.EDirecao.DIREITA)); Caixa.getInstancia().getBobina().addElement(linha1.toString()); // linha 2 - Caixa.getInstancia().getBobina().addElement("ITEM CANCELADO"); - Caixa.getInstancia().getBobina().addElement(Util.formataTexto("", "*", ECF.COL, true)); + StringBuilder linha2 = new StringBuilder(); + linha2.append(Util.formataTexto(Util.formataNumero(qtd, 1, 0, false), " ", 8, Util.EDirecao.ESQUERDA)); + linha2.append(und).append(" X "); + linha2.append(Util.formataTexto(Util.formataNumero(valor, 1, 2, false), " ", 11, Util.EDirecao.DIREITA)); + linha2.append(Util.formataTexto(aliquota, " ", 9, Util.EDirecao.DIREITA)); + linha2.append(Util.formataTexto("-" + Util.formataNumero(total, 1, 2, false) + " ", " ", 14, Util.EDirecao.ESQUERDA)); + Caixa.getInstancia().getBobina().addElement(linha2.toString()); // colocando no foco selecionado Caixa.getInstancia().getLstBobina().setSelectedIndex(Caixa.getInstancia().getBobina().getSize() - 1); Caixa.getInstancia().getLstBobina().ensureIndexIsVisible(Caixa.getInstancia().getBobina().getSize() - 1); } + /** + * Metodo que identifica o tipo e porcentagem da aliquota. + * + * @return no formato requerido. + */ + private String getAliquota() { + String aliquota; + switch (vendaProduto.getEcfVendaProdutoTributacao()) { + case 'T': + aliquota = Util.formataNumero(vendaProduto.getEcfVendaProdutoIcms(), 2, 2, false) + "T"; + break; + case 'S': + aliquota = Util.formataNumero(vendaProduto.getEcfVendaProdutoIssqn(), 2, 2, false) + "S"; + break; + default: + aliquota = String.valueOf(vendaProduto.getEcfVendaProdutoTributacao()) + String.valueOf(vendaProduto.getEcfVendaProdutoTributacao()); + break; + } + return aliquota; + } + public EcfVendaProduto getVendaProduto() { return vendaProduto; } @@ -116,4 +156,4 @@ public EcfVendaProduto getVendaProduto() { public void setVendaProduto(EcfVendaProduto vendaProduto) { this.vendaProduto = vendaProduto; } -} \ No newline at end of file +} diff --git a/src/br/com/openpdv/controlador/comandos/ComandoCancelarPagamento.java b/src/br/com/openpdv/controlador/comandos/ComandoCancelarPagamento.java index 28353d0..0c09eb7 100755 --- a/src/br/com/openpdv/controlador/comandos/ComandoCancelarPagamento.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoCancelarPagamento.java @@ -1,7 +1,7 @@ package br.com.openpdv.controlador.comandos; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.ecf.EcfPagamento; import br.com.phdss.TEF; diff --git a/src/br/com/openpdv/controlador/comandos/ComandoCancelarVenda.java b/src/br/com/openpdv/controlador/comandos/ComandoCancelarVenda.java index 5c16e36..bb8a4ff 100755 --- a/src/br/com/openpdv/controlador/comandos/ComandoCancelarVenda.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoCancelarVenda.java @@ -1,7 +1,7 @@ package br.com.openpdv.controlador.comandos; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.EComandoSQL; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.core.Sql; @@ -21,7 +21,8 @@ import br.com.openpdv.visao.core.Aguarde; import br.com.openpdv.visao.core.Caixa; import br.com.phdss.ECF; -import br.com.phdss.EComandoECF; +import br.com.phdss.EComando; +import br.com.phdss.IECF; import java.util.ArrayList; import java.util.List; import javax.swing.JOptionPane; @@ -38,6 +39,7 @@ public class ComandoCancelarVenda implements IComando { private CoreService service; private EcfVenda venda; private boolean auto; + private IECF ecf; /** * Construtor padrao. @@ -67,6 +69,7 @@ public ComandoCancelarVenda(boolean auto, SisUsuario gerente) { this.log = Logger.getLogger(ComandoCancelarVenda.class); this.service = new CoreService(); this.auto = auto; + this.ecf = ECF.getInstancia(); try { List vendas = service.selecionar(new EcfVenda(), 0, 1, null); @@ -89,6 +92,28 @@ public void executar() throws OpenPdvException { cancelarVendaBanco(); // cancela na tela cancelarVendaTela(); + // atualizando o servidor + if (!Util.getConfig().get("sinc.servidor").endsWith("localhost")) { + new Thread(new Runnable() { + + @Override + public void run() { + try { + List lista = new ArrayList<>(); + lista.add(venda); + lista = ComandoEnviarDados.getInstancia().enviar("venda", lista); + // marca a venda como sincronizada + if (!lista.isEmpty()) { + CoreService service = new CoreService(); + venda.setEcfVendaSinc(true); + service.salvar(venda); + } + } catch (Exception ex) { + log.error("Nao enviou no momento a venda com id -> " + venda.getId(), ex); + } + } + }).start(); + } } catch (OpenPdvException ex) { if (!auto) { throw new OpenPdvException("A última venda já está cancelada."); @@ -106,12 +131,11 @@ public void executar() throws OpenPdvException { Caixa.getInstancia().modoIndisponivel(); JOptionPane.showMessageDialog(null, "Ocorreram problemas ao cancelar os cartões!\nSistema ficará indisponível até resolver o problema!", "TEF", JOptionPane.ERROR_MESSAGE); } + // cancela a venda na tela + cancelarVendaTela(); } else { throw new OpenPdvException("A última venda já está cancelada."); } - - // cancela a venda na tela - cancelarVendaTela(); } @Override @@ -125,8 +149,8 @@ public void desfazer() throws OpenPdvException { * @exception OpenPdvException dispara caso nao consiga executar. */ public void cancelarVendaECF() throws OpenPdvException { - String[] resp = ECF.enviar(EComandoECF.ECF_CancelaCupom); - if (ECF.ERRO.equals(resp[0])) { + String[] resp = ecf.enviar(EComando.ECF_CancelaCupom, venda.getEcfVendaCcf() + "", venda.getEcfVendaCoo() + "", venda.getEcfVendaLiquido().toString()); + if (IECF.ERRO.equals(resp[0])) { log.error("Erro ao cancelar a venda. -> " + resp[1]); throw new OpenPdvException(resp[1]); } @@ -216,6 +240,8 @@ public void cancelarVendaBanco() throws OpenPdvException { } ParametroBinario pb = new ParametroBinario("ecfVendaCancelada", true); gp.add(pb); + ParametroBinario pb1 = new ParametroBinario("ecfVendaSinc", false); + gp.add(pb1); ParametroObjeto po = new ParametroObjeto("sisGerente", venda.getSisGerente()); gp.add(po); Sql sql = new Sql(new EcfVenda(), EComandoSQL.ATUALIZAR, fn, gp); diff --git a/src/br/com/openpdv/controlador/comandos/ComandoCupomPresente.java b/src/br/com/openpdv/controlador/comandos/ComandoCupomPresente.java index 225f8d8..9176b82 100644 --- a/src/br/com/openpdv/controlador/comandos/ComandoCupomPresente.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoCupomPresente.java @@ -1,7 +1,7 @@ package br.com.openpdv.controlador.comandos; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.core.filtro.ECompara; import br.com.openpdv.modelo.core.filtro.FiltroNumero; @@ -9,7 +9,8 @@ import br.com.openpdv.modelo.ecf.EcfVendaProduto; import br.com.openpdv.visao.core.Caixa; import br.com.phdss.ECF; -import br.com.phdss.EComandoECF; +import br.com.phdss.EComando; +import br.com.phdss.IECF; import java.text.SimpleDateFormat; import java.util.Collections; import java.util.Comparator; @@ -26,6 +27,7 @@ public class ComandoCupomPresente implements IComando { private Logger log = Logger.getLogger(ComandoCupomPresente.class); private CoreService service = new CoreService(); private EcfVenda venda; + private IECF ecf; /** * Construtor padrao. @@ -38,6 +40,8 @@ public ComandoCupomPresente(int ccf) { this.venda = (EcfVenda) service.selecionar(new EcfVenda(), fn); } catch (OpenPdvException ex) { this.venda = null; + } finally { + this.ecf = ECF.getInstancia(); } } @@ -48,6 +52,7 @@ public ComandoCupomPresente(int ccf) { */ public ComandoCupomPresente(EcfVenda venda) { this.venda = venda; + this.ecf = ECF.getInstancia(); } @Override @@ -112,7 +117,7 @@ public int compare(EcfVendaProduto o1, EcfVendaProduto o2) { try { int item = Integer.valueOf(texto); if (item < 1 || item > venda.getEcfVendaProdutos().size()) { - JOptionPane.showMessageDialog(Caixa.getInstancia(), "O número informado não corresponde a nenhum item da venda.", "Cancelar Item", JOptionPane.WARNING_MESSAGE); + JOptionPane.showMessageDialog(Caixa.getInstancia(), "O número informado não corresponde a nenhum item da venda.", "Cupom Presente", JOptionPane.WARNING_MESSAGE); } else { EcfVendaProduto vp = venda.getEcfVendaProdutos().get(item - 1); if (vp.getEcfVendaProdutoCancelado() == false) { @@ -128,7 +133,7 @@ public int compare(EcfVendaProduto o1, EcfVendaProduto o2) { } } } catch (NumberFormatException nfe) { - JOptionPane.showMessageDialog(Caixa.getInstancia(), "Não foi informado um número inteiro.", "Cancelar Item", JOptionPane.WARNING_MESSAGE); + JOptionPane.showMessageDialog(Caixa.getInstancia(), "Não foi informado um número inteiro.", "Cupom Presente", JOptionPane.WARNING_MESSAGE); } } } @@ -144,9 +149,9 @@ public void desfazer() throws OpenPdvException { private void abrirCupom() throws OpenPdvException { // abrindo o relatorio - String[] resp = ECF.enviar(EComandoECF.ECF_AbreRelatorioGerencial, Util.getConfig().get("ecf.relpresente")); + String[] resp = ecf.enviar(EComando.ECF_AbreRelatorioGerencial, Util.getConfig().get("ecf.relpresente")); if (resp[0].equals("ERRO")) { - ECF.enviar(EComandoECF.ECF_CorrigeEstadoErro); + ecf.enviar(EComando.ECF_CorrigeEstadoErro); throw new OpenPdvException(resp[1]); } } @@ -154,16 +159,16 @@ private void abrirCupom() throws OpenPdvException { private String cabecalho() { StringBuilder sb = new StringBuilder(); // cabecalho - sb.append(ECF.LD).append(ECF.SL); - sb.append("CUPOM PRESENTE").append(ECF.SL); - sb.append(ECF.LD).append(ECF.SL); + sb.append(IECF.LD).append(IECF.SL); + sb.append("").append(Util.formataTexto("CUPOM PRESENTE", " ", IECF.COL, Util.EDirecao.AMBOS)).append("").append(IECF.SL); + sb.append(IECF.LD).append(IECF.SL); // dados da venda - sb.append("Venda: ").append(new SimpleDateFormat("dd/MM/yyyy").format(venda.getEcfVendaData())); + sb.append("Venda: ").append(new SimpleDateFormat("dd/MM/yyyy").format(venda.getEcfVendaData())); sb.append(" CCF: ").append(Util.formataNumero(venda.getEcfVendaCcf(), 6, 0, false)); sb.append(" COO: ").append(Util.formataNumero(venda.getEcfVendaCoo(), 6, 0, false)); - sb.append(ECF.SL); - sb.append("ITEM CODIGO DESCRICAO QTD.").append(ECF.SL); - sb.append(ECF.LS); + sb.append(IECF.SL); + sb.append("ITEM CODIGO DESCRICAO QTD.").append(IECF.SL); + sb.append(IECF.LS).append(IECF.SL); return sb.toString(); } @@ -171,37 +176,37 @@ private String item(EcfVendaProduto vp) { StringBuilder sb = new StringBuilder(); sb.append(Util.formataNumero(vp.getEcfVendaProdutoOrdem(), 3, 0, false)); sb.append(" "); - sb.append(Util.formataTexto(vp.getEcfVendaProdutoCodigo(), " ", 14, true)); + sb.append(Util.formataTexto(vp.getEcfVendaProdutoCodigo(), " ", 14, Util.EDirecao.DIREITA)); sb.append(" "); String desc = vp.getProdProduto().getProdProdutoDescricao().length() > 23 ? vp.getProdProduto().getProdProdutoDescricao().substring(0, 23) : vp.getProdProduto().getProdProdutoDescricao(); - sb.append(Util.formataTexto(desc, " ", 23, true)); + sb.append(Util.formataTexto(desc, " ", 23, Util.EDirecao.DIREITA)); sb.append(" "); - sb.append(Util.formataTexto(Util.formataNumero(vp.getEcfVendaProdutoQuantidade(), 1, 0, false), " ", 3, false)); - sb.append(ECF.SL); + sb.append(Util.formataTexto(Util.formataNumero(vp.getEcfVendaProdutoQuantidade(), 1, 0, false), " ", 3, Util.EDirecao.ESQUERDA)); + sb.append(IECF.SL); return sb.toString(); } private String rodape() { StringBuilder sb = new StringBuilder(); // rodape - sb.append(ECF.LD).append(ECF.SL); - sb.append(Util.getConfig().get("ecf.msgpresente")).append(ECF.SL); + sb.append(IECF.LD).append(IECF.SL); + sb.append(Util.getConfig().get("ecf.msgpresente")).append(IECF.SL); sb.append("OPERADOR: ").append(venda.getSisUsuario().getSisUsuarioLogin()); if (venda.getSisVendedor() != null) { sb.append(" - VENDEDOR: ").append(venda.getSisVendedor().getSisUsuarioLogin()); } - sb.append(ECF.SL).append(ECF.LD).append(ECF.SL); + sb.append(IECF.SL).append(IECF.LD).append(IECF.SL); return sb.toString(); } private void fecharCupom(String texto) throws OpenPdvException { // envia o comando com todo o texto - String[] resp = ECF.enviar(EComandoECF.ECF_LinhaRelatorioGerencial, texto); - if (resp[0].equals("ERRO")) { - ECF.enviar(EComandoECF.ECF_CorrigeEstadoErro); + String[] resp = ecf.enviar(EComando.ECF_LinhaRelatorioGerencial, texto); + if (resp[0].equals(IECF.ERRO)) { + ecf.enviar(EComando.ECF_CorrigeEstadoErro); throw new OpenPdvException(resp[1]); } else { - ECF.enviar(EComandoECF.ECF_FechaRelatorio); + ecf.enviar(EComando.ECF_FechaRelatorio); } } } diff --git a/src/br/com/openpdv/controlador/comandos/ComandoEmitirMovimentoECF.java b/src/br/com/openpdv/controlador/comandos/ComandoEmitirMovimentoECF.java index 71661c4..777beb8 100755 --- a/src/br/com/openpdv/controlador/comandos/ComandoEmitirMovimentoECF.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoEmitirMovimentoECF.java @@ -1,12 +1,13 @@ package br.com.openpdv.controlador.comandos; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.core.filtro.*; import br.com.openpdv.modelo.ecf.*; import br.com.phdss.ECF; -import br.com.phdss.EComandoECF; +import br.com.phdss.EComando; +import br.com.phdss.IECF; import br.com.phdss.controlador.PAF; import br.com.phdss.modelo.anexo.vi.*; import java.text.SimpleDateFormat; @@ -26,6 +27,7 @@ public class ComandoEmitirMovimentoECF implements IComando { private Date inicio; private Date fim; private String path; + private IECF ecf; /** * Construtor padrao passando os parametros necessarios. @@ -40,6 +42,7 @@ public ComandoEmitirMovimentoECF(EcfImpressora impressora, Date inicio, Date fim this.inicio = inicio; this.fim = fim; this.service = new CoreService(); + this.ecf = ECF.getInstancia(); } @Override @@ -60,12 +63,12 @@ public void executar() throws OpenPdvException { r01.setUsuario(1); r01.setTipoECF(impressora.getEcfImpressoraTipo()); r01.setMarcaECF(impressora.getEcfImpressoraMarca()); - String[] resp = ECF.enviar(EComandoECF.ECF_NumVersao); - if (ECF.OK.equals(resp[0])) { + String[] resp = ecf.enviar(EComando.ECF_NumVersao); + if (IECF.OK.equals(resp[0])) { r01.setVersaoSB(resp[1]); } - resp = ECF.enviar(EComandoECF.ECF_DataHoraSB); - if (ECF.OK.equals(resp[0])) { + resp = ecf.enviar(EComando.ECF_DataHoraSB); + if (IECF.OK.equals(resp[0])) { r01.setDataSB(new SimpleDateFormat("dd/MM/yy HH:mm:ss").parse(resp[1])); } r01.setNumeroECF(impressora.getEcfImpressoraCaixa()); @@ -82,7 +85,7 @@ public void executar() throws OpenPdvException { arquivoMD5.append("arquivos"); arquivoMD5.append(System.getProperty("file.separator")); arquivoMD5.append("arquivoMD5.txt"); - r01.setPafMD5(PAF.gerarMD5(arquivoMD5.toString())); + r01.setPafMD5(Util.gerarMD5(arquivoMD5.toString())); r01.setPafER(PAF.AUXILIAR.getProperty("paf.er")); r01.setInicio(inicio); r01.setFim(fim); diff --git a/src/br/com/openpdv/controlador/comandos/ComandoEmitirReducaoZ.java b/src/br/com/openpdv/controlador/comandos/ComandoEmitirReducaoZ.java index b2765c9..7b517f5 100755 --- a/src/br/com/openpdv/controlador/comandos/ComandoEmitirReducaoZ.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoEmitirReducaoZ.java @@ -1,8 +1,7 @@ package br.com.openpdv.controlador.comandos; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.core.Util; -import br.com.openpdv.controlador.permissao.Login; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.EComandoSQL; import br.com.openpdv.modelo.core.EDirecao; import br.com.openpdv.modelo.core.OpenPdvException; @@ -20,8 +19,9 @@ import br.com.openpdv.modelo.ecf.EcfZTotais; import br.com.openpdv.visao.core.Caixa; import br.com.phdss.ECF; -import br.com.phdss.EComandoECF; -import br.com.phdss.EEstadoECF; +import br.com.phdss.EComando; +import br.com.phdss.EEstado; +import br.com.phdss.IECF; import br.com.phdss.controlador.PAF; import java.io.ByteArrayInputStream; import java.io.InputStream; @@ -41,6 +41,7 @@ public class ComandoEmitirReducaoZ implements IComando { private Logger log; private CoreService service; private Date dataMovimento; + private IECF ecf; /** * Construtor padrao. @@ -48,6 +49,7 @@ public class ComandoEmitirReducaoZ implements IComando { public ComandoEmitirReducaoZ() { this.log = Logger.getLogger(ComandoEmitirReducaoZ.class); this.service = new CoreService(); + this.ecf = ECF.getInstancia(); } @Override @@ -63,7 +65,7 @@ public void executar() throws OpenPdvException { // gera os totais dos pagamentos new ComandoTotalizarPagamentos(dataMovimento).executar(); // gera o arquivo do cat52 - if (Boolean.valueOf(Util.getConfig().get("ecf.cat52"))) { + if (Util.getConfig().get("ecf.cat52") != null) { new ComandoGerarCat52(Caixa.getInstancia().getEmpresa(), Caixa.getInstancia().getImpressora(), dataMovimento).executar(); } // atualizando o servidor @@ -83,25 +85,25 @@ public void desfazer() throws OpenPdvException { * @exception OpenPdvException dispara caso nao consiga executar. */ public void emitirReducaoZEcf() throws OpenPdvException { - ECF.enviar(EComandoECF.ECF_ReducaoZ); + ecf.enviar(EComando.ECF_ReducaoZ); - // enquanto o estado nao for bloquado(Z emitida) ou o limite superar 3 tentativas - EEstadoECF estado; + // enquanto o estado nao for bloqueado(Z emitida) ou o limite superar 3 tentativas + EEstado estado; int tempo = Integer.valueOf(Util.getConfig().get("ecf.tempo")); int tentativas = Integer.valueOf(Util.getConfig().get("ecf.tentativas")); do { // recupera o estado try { - estado = ECF.validarEstado(); + estado = ecf.validarEstado(); } catch (Exception ex) { - estado = EEstadoECF.estDesconhecido; + estado = EEstado.estDesconhecido; } finally { tentativas--; } // espera alguns segundos - if (estado != EEstadoECF.estBloqueada) { + if (estado != EEstado.estBloqueada) { try { Thread.sleep(tempo * 1000); } catch (InterruptedException ex) { @@ -119,8 +121,8 @@ public void emitirReducaoZEcf() throws OpenPdvException { * @exception OpenPdvException dispara caso nao consiga executar. */ public void emitirReducaoZBanco() throws OpenPdvException { - String[] resp = ECF.enviar(EComandoECF.ECF_DadosUltimaReducaoZ); - if (ECF.OK.equals(resp[0])) { + String[] resp = ecf.enviar(EComando.ECF_DadosUltimaReducaoZ); + if (IECF.OK.equals(resp[0])) { try { // pega os dados InputStream stream = new ByteArrayInputStream(resp[1].replace(",", ".").getBytes("UTF-8")); @@ -141,7 +143,7 @@ public void emitirReducaoZBanco() throws OpenPdvException { // gera o registro EcfZ EcfZ z = new EcfZ(); z.setEcfImpressora(Caixa.getInstancia().getImpressora()); - z.setEcfZUsuario(Login.getOperador() == null ? 0 : Login.getOperador().getId()); + z.setEcfZUsuario(1); z.setEcfZCrz(ini.get("ECF", "NumCRZ", int.class)); z.setEcfZCooIni(cooIni); z.setEcfZCooFin(ini.get("ECF", "NumCOO", int.class)); @@ -301,7 +303,7 @@ public void emitirReducaoZBanco() throws OpenPdvException { // salva os totais do z service.salvar(totais.values()); } catch (Exception ex) { - log.error("Erro ao gerar ao salvar os dados da reducao Z -> " + resp[1], ex); + log.error("Erro ao gerar e salvar os dados da reducao Z -> " + resp[1], ex); throw new OpenPdvException("Nao foi possivel salvar os dados da Z no banco!\nAvise o administrador pra realizar manualmente!"); } } else { @@ -319,8 +321,8 @@ public void emitirLMFC() throws OpenPdvException { Date data; // data atual do ECF - String[] resp = ECF.enviar(EComandoECF.ECF_DataHora); - if (ECF.OK.equals(resp[0])) { + String[] resp = ecf.enviar(EComando.ECF_DataHora); + if (IECF.OK.equals(resp[0])) { try { data = new SimpleDateFormat("dd/MM/yy HH:mm:ss").parse(resp[1]); } catch (ParseException ex) { @@ -345,7 +347,7 @@ public void emitirLMFC() throws OpenPdvException { String inicio = new SimpleDateFormat("dd/MM/yyyy").format(cal.getTime()); cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH)); String fim = new SimpleDateFormat("dd/MM/yyyy").format(cal.getTime()); - PAF.leituraMF(EComandoECF.ECF_PafMf_Lmfc_Impressao, new String[]{inicio, fim}); + PAF.leituraMF(EComando.ECF_PafMf_Lmfc_Impressao, new String[]{inicio, fim}); } } } diff --git a/src/br/com/openpdv/controlador/comandos/ComandoEnviarDados.java b/src/br/com/openpdv/controlador/comandos/ComandoEnviarDados.java index cf6b76a..222ca03 100644 --- a/src/br/com/openpdv/controlador/comandos/ComandoEnviarDados.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoEnviarDados.java @@ -1,14 +1,13 @@ package br.com.openpdv.controlador.comandos; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.Dados; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.core.filtro.ECompara; import br.com.openpdv.modelo.core.filtro.EJuncao; import br.com.openpdv.modelo.core.filtro.FiltroBinario; import br.com.openpdv.modelo.core.filtro.FiltroData; -import br.com.openpdv.modelo.core.filtro.FiltroNumero; import br.com.openpdv.modelo.core.filtro.GrupoFiltro; import br.com.openpdv.modelo.ecf.EcfNota; import br.com.openpdv.modelo.ecf.EcfNotaEletronica; @@ -223,7 +222,7 @@ private void zs() { private void salvar() throws OpenPdvException { try { PAF.AUXILIAR.setProperty("out.recebimento", Util.getData(new Date())); - PAF.criptografar(); + Util.criptografar(null, PAF.AUXILIAR); } catch (Exception ex) { throw new OpenPdvException("Erro ao salvar no arquivo auxiliar.\nVerifique o log do sistema.", ex); } diff --git a/src/br/com/openpdv/controlador/comandos/ComandoEnviarDadosLocal.java b/src/br/com/openpdv/controlador/comandos/ComandoEnviarDadosLocal.java index f2cfd5b..89eb40b 100644 --- a/src/br/com/openpdv/controlador/comandos/ComandoEnviarDadosLocal.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoEnviarDadosLocal.java @@ -2,7 +2,7 @@ import br.com.openpdv.modelo.core.Dados; import br.com.openpdv.rest.RestContexto; -import br.com.phdss.controlador.PAF; +import br.com.phdss.Util; import java.io.FileWriter; import java.util.Date; import java.util.List; @@ -30,7 +30,7 @@ public ComandoEnviarDadosLocal(Date inicio, Date fim) { @Override protected List enviar(String tipo, List lista) throws Exception { - StringBuilder sb = new StringBuilder(PAF.getPathArquivos()); + StringBuilder sb = new StringBuilder(Util.getPathArquivos()); sb.append("exportar").append(System.getProperty("file.separator")); sb.append(tipo).append("_").append(new Date().getTime()).append(".json"); fw = new FileWriter(sb.toString()); diff --git a/src/br/com/openpdv/controlador/comandos/ComandoEnviarDadosRemoto.java b/src/br/com/openpdv/controlador/comandos/ComandoEnviarDadosRemoto.java index 7e77cf9..f530109 100644 --- a/src/br/com/openpdv/controlador/comandos/ComandoEnviarDadosRemoto.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoEnviarDadosRemoto.java @@ -1,6 +1,7 @@ package br.com.openpdv.controlador.comandos; -import br.com.openpdv.controlador.core.Util; +import br.com.openpdv.controlador.core.Conexao; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.Dados; import com.sun.jersey.api.client.WebResource; import java.util.ArrayList; @@ -27,7 +28,7 @@ public ComandoEnviarDadosRemoto(Date inicio, Date fim) { @Override protected List enviar(String tipo, List lista) throws Exception { - wr = Util.getRest(Util.getConfig().get("sinc.server") + "/" + tipo); + wr = Conexao.getRest(Util.getConfig().get("sinc.server") + "/" + tipo); List enviados = new ArrayList<>(); for (E obj : lista) { diff --git a/src/br/com/openpdv/controlador/comandos/ComandoEnviarNFe.java b/src/br/com/openpdv/controlador/comandos/ComandoEnviarNFe.java index 434006d..384b401 100755 --- a/src/br/com/openpdv/controlador/comandos/ComandoEnviarNFe.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoEnviarNFe.java @@ -1,7 +1,7 @@ package br.com.openpdv.controlador.comandos; import br.com.openpdv.controlador.core.NFe; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.ecf.ENotaStatus; import br.com.openpdv.modelo.ecf.EcfNotaEletronica; diff --git a/src/br/com/openpdv/controlador/comandos/ComandoEnviarNFeCancelada.java b/src/br/com/openpdv/controlador/comandos/ComandoEnviarNFeCancelada.java index 0bb5385..2ef842e 100755 --- a/src/br/com/openpdv/controlador/comandos/ComandoEnviarNFeCancelada.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoEnviarNFeCancelada.java @@ -1,7 +1,7 @@ package br.com.openpdv.controlador.comandos; import br.com.openpdv.controlador.core.NFe; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.ecf.ENotaStatus; import br.com.openpdv.modelo.ecf.EcfNotaEletronica; diff --git a/src/br/com/openpdv/controlador/comandos/ComandoEnviarNFeInutilizada.java b/src/br/com/openpdv/controlador/comandos/ComandoEnviarNFeInutilizada.java index f687f1b..e2d8ec8 100755 --- a/src/br/com/openpdv/controlador/comandos/ComandoEnviarNFeInutilizada.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoEnviarNFeInutilizada.java @@ -1,7 +1,7 @@ package br.com.openpdv.controlador.comandos; import br.com.openpdv.controlador.core.NFe; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.ecf.ENotaStatus; import br.com.openpdv.modelo.ecf.EcfNotaEletronica; diff --git a/src/br/com/openpdv/controlador/comandos/ComandoFecharVenda.java b/src/br/com/openpdv/controlador/comandos/ComandoFecharVenda.java index 4bded99..63c6a54 100755 --- a/src/br/com/openpdv/controlador/comandos/ComandoFecharVenda.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoFecharVenda.java @@ -1,7 +1,7 @@ package br.com.openpdv.controlador.comandos; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.EComandoSQL; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.core.Sql; @@ -17,7 +17,8 @@ import br.com.openpdv.visao.core.Aguarde; import br.com.openpdv.visao.core.Caixa; import br.com.phdss.ECF; -import br.com.phdss.EComandoECF; +import br.com.phdss.EComando; +import br.com.phdss.IECF; import br.com.phdss.TEF; import br.com.phdss.controlador.PAF; import java.util.ArrayList; @@ -41,6 +42,7 @@ public class ComandoFecharVenda implements IComando { private double acres_desc; private String obs; private EcfVenda venda; + private IECF ecf; /** * Construtor padrao. @@ -58,6 +60,7 @@ public ComandoFecharVenda(List pagamentos, double bruto, double ac this.acres_desc = acres_desc; this.venda = Caixa.getInstancia().getVenda(); this.obs = obs; + this.ecf = ECF.getInstancia(); } @Override @@ -85,11 +88,13 @@ public void run() { List lista = new ArrayList<>(); venda.setEcfPagamentos(pagamentos); lista.add(venda); - ComandoEnviarDados.getInstancia().enviar("venda", lista); + lista = ComandoEnviarDados.getInstancia().enviar("venda", lista); // marca a venda como sincronizada - CoreService service = new CoreService(); - venda.setEcfVendaSinc(true); - service.salvar(venda); + if (!lista.isEmpty()) { + CoreService service = new CoreService(); + venda.setEcfVendaSinc(true); + service.salvar(venda); + } } catch (Exception ex) { log.error("Nao enviou no momento a venda com id -> " + venda.getId(), ex); } @@ -119,27 +124,25 @@ public void fecharVendaECF() throws OpenPdvException { // sub totaliza String AD = Util.formataNumero(acres_desc, 1, 2, false).replace(",", "."); StringBuilder sb = new StringBuilder(); - //sb.append(Util.formataTexto("MD5: " + PAF.AUXILIAR.getProperty("out.autenticado"), " ", ECF.COL, true)); - // @TODO remover esta linha abaixo. - sb.append(Util.formataTexto("MD5: 33b5a11f390b986c5b2163270db0b6c6", " ", ECF.COL, true)); - + sb.append("MD5: ").append(PAF.AUXILIAR.getProperty("out.autenticado")).append(IECF.SL); + // identifica o operador do caixa e o vendedor String operador = "OPERADOR: " + venda.getSisUsuario().getSisUsuarioLogin(); if (venda.getSisVendedor() != null) { operador += " - VENDEDOR: " + venda.getSisVendedor().getSisUsuarioLogin(); } - sb.append(Util.formataTexto(operador, " ", ECF.COL, true)); + sb.append(operador).append(IECF.SL); // caso nao tenha sido informado o cliente if (venda.getSisCliente() == null) { - sb.append(Util.formataTexto("CONSUMIDOR NAO INFORMOU O CPF/CNPJ", " ", ECF.COL, true)); + sb.append("CONSUMIDOR NAO INFORMOU O CPF/CNPJ").append(IECF.SL); } else if (Caixa.getInstancia().getVenda().isInformouCliente() == false) { - sb.append("CNPJ/CPF: ").append(venda.getSisCliente().getSisClienteDoc()).append(ECF.SL); + sb.append("CNPJ/CPF consumidor:").append(venda.getSisCliente().getSisClienteDoc()).append(IECF.SL); if (!venda.getSisCliente().getSisClienteNome().equals("")) { - sb.append("NOME: ").append(venda.getSisCliente().getSisClienteNome()).append(ECF.SL); + sb.append("NOME:").append(venda.getSisCliente().getSisClienteNome()).append(IECF.SL); } if (!venda.getSisCliente().getSisClienteEndereco().equals("")) { - sb.append("ENDEREÇO: ").append(venda.getSisCliente().getSisClienteEndereco()).append(ECF.SL); + sb.append("END:").append(venda.getSisCliente().getSisClienteEndereco()).append(IECF.SL); } } @@ -148,15 +151,15 @@ public void fecharVendaECF() throws OpenPdvException { sb.append("MINAS LEGAL: "); sb.append(PAF.AUXILIAR.getProperty("cli.cnpj")).append(" "); sb.append(Util.formataData(venda.getEcfVendaData(), "ddMMyyyy")).append(" "); - sb.append(Util.formataNumero(bruto + acres_desc, 0, 2, true).replace(",", "")); + sb.append(Util.formataNumero(bruto + acres_desc, 0, 2, true).replace(",", "")).append(IECF.SL); } else if (PAF.AUXILIAR.getProperty("paf.cupom_mania").equalsIgnoreCase("SIM")) { // caso seja no estado de RJ, colocar o cupom mania - sb.append(Util.formataTexto("CUPOM MANIA - CONCORRA A PREMIOS", " ", ECF.COL, true)); + sb.append("CUPOM MANIA - CONCORRA A PREMIOS").append(IECF.SL); sb.append("ENVIE SMS P/ 6789: "); sb.append(Util.formataNumero(PAF.AUXILIAR.getProperty("cli.ie"), 8, 0, false)); sb.append(Util.formataData(venda.getEcfVendaData(), "ddMMyyyy")); sb.append(Util.formataNumero(venda.getEcfVendaCoo(), 6, 0, false)); - sb.append(Util.formataNumero(Caixa.getInstancia().getImpressora().getEcfImpressoraCaixa(), 3, 0, false)); + sb.append(Util.formataNumero(Caixa.getInstancia().getImpressora().getEcfImpressoraCaixa(), 3, 0, false)).append(IECF.SL); } // caso a opcao de mostrar os valores de impostos esteja ativa @@ -176,11 +179,11 @@ public void fecharVendaECF() throws OpenPdvException { double porcentagem = impostos / (bruto + acres_desc) * 100; sb.append("Val Aprox Trib R$ "); sb.append(Util.formataNumero(impostos, 1, 2, false).replace(",", ".")).append(" ["); - sb.append(Util.formataNumero(porcentagem, 1, 2, false).replace(",", ".")).append("%] Fonte: IBPT").append(ECF.SL); + sb.append(Util.formataNumero(porcentagem, 1, 2, false).replace(",", ".")).append("%] Fonte: IBPT").append(IECF.SL); } - String[] resp = ECF.enviar(EComandoECF.ECF_SubtotalizaCupom, AD, sb.toString()); - if (ECF.ERRO.equals(resp[0])) { + String[] resp = ecf.enviar(EComando.ECF_SubtotalizaCupom, AD, sb.toString()); + if (IECF.ERRO.equals(resp[0])) { log.error("Erro ao fechar a venda. -> " + resp[1]); throw new OpenPdvException(resp[1]); } @@ -198,8 +201,8 @@ public void fecharVendaECF() throws OpenPdvException { String dinheiro = Util.getConfig().get("ecf.dinheiro"); if (pags.containsKey(dinheiro)) { String valor = Util.formataNumero(pags.remove(dinheiro), 1, 2, false).replace(",", "."); - resp = ECF.enviar(EComandoECF.ECF_EfetuaPagamento, dinheiro, valor); - if (ECF.ERRO.equals(resp[0])) { + resp = ecf.enviar(EComando.ECF_EfetuaPagamento, dinheiro, valor); + if (IECF.ERRO.equals(resp[0])) { log.error("Erro ao fechar a venda. -> " + resp[1]); throw new OpenPdvException(resp[1]); } @@ -208,8 +211,8 @@ public void fecharVendaECF() throws OpenPdvException { String troca = Util.getConfig().get("ecf.troca"); if (pags.containsKey(troca)) { String valor = Util.formataNumero(pags.remove(troca), 1, 2, false).replace(",", "."); - resp = ECF.enviar(EComandoECF.ECF_EfetuaPagamento, troca, valor); - if (ECF.ERRO.equals(resp[0])) { + resp = ecf.enviar(EComando.ECF_EfetuaPagamento, troca, valor); + if (IECF.ERRO.equals(resp[0])) { log.error("Erro ao fechar a venda. -> " + resp[1]); throw new OpenPdvException(resp[1]); } @@ -217,24 +220,24 @@ public void fecharVendaECF() throws OpenPdvException { // imprime os demais for (Entry pag : pags.entrySet()) { String valor = Util.formataNumero(pag.getValue(), 1, 2, false).replace(",", "."); - resp = ECF.enviar(EComandoECF.ECF_EfetuaPagamento, pag.getKey(), valor); - if (ECF.ERRO.equals(resp[0])) { + resp = ecf.enviar(EComando.ECF_EfetuaPagamento, pag.getKey(), valor); + if (IECF.ERRO.equals(resp[0])) { log.error("Erro ao fechar a venda. -> " + resp[1]); throw new OpenPdvException(resp[1]); } } // fecha a venda - resp = ECF.enviar(EComandoECF.ECF_FechaCupom); - if (ECF.ERRO.equals(resp[0])) { + resp = ecf.enviar(EComando.ECF_FechaCupom); + if (IECF.ERRO.equals(resp[0])) { log.error("Erro ao fechar a venda. -> " + resp[1]); throw new OpenPdvException(resp[1]); } else { // atualiza o gt try { - resp = ECF.enviar(EComandoECF.ECF_GrandeTotal); - if (ECF.OK.equals(resp[0])) { + resp = ecf.enviar(EComando.ECF_GrandeTotal); + if (IECF.OK.equals(resp[0])) { PAF.AUXILIAR.setProperty("ecf.gt", resp[1]); - PAF.criptografar(); + Util.criptografar(null, PAF.AUXILIAR); } else { throw new Exception(resp[1]); } @@ -243,7 +246,7 @@ public void fecharVendaECF() throws OpenPdvException { throw new OpenPdvException("Erro ao atualizar o GT."); } } - } catch (Exception ex) { + } catch (OpenPdvException ex) { TEF.bloquear(false); int escolha = JOptionPane.showOptionDialog(null, "Impressora não responde, tentar novamente?", "TEF", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, new String[]{"SIM", "NÃO"}, JOptionPane.YES_OPTION); diff --git a/src/br/com/openpdv/controlador/comandos/ComandoGerarCat52.java b/src/br/com/openpdv/controlador/comandos/ComandoGerarCat52.java index d00f044..ad27b70 100644 --- a/src/br/com/openpdv/controlador/comandos/ComandoGerarCat52.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoGerarCat52.java @@ -1,7 +1,7 @@ package br.com.openpdv.controlador.comandos; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.core.filtro.ECompara; import br.com.openpdv.modelo.core.filtro.EJuncao; @@ -18,7 +18,8 @@ import br.com.openpdv.modelo.ecf.EcfZTotais; import br.com.openpdv.modelo.sistema.SisEmpresa; import br.com.phdss.ECF; -import br.com.phdss.EComandoECF; +import br.com.phdss.EComando; +import br.com.phdss.IECF; import br.com.phdss.controlador.PAF; import br.com.phdss.modelo.cat52.Cat52; import br.com.phdss.modelo.cat52.E00; @@ -50,6 +51,8 @@ public class ComandoGerarCat52 implements IComando { private EcfImpressora impressora; private EcfZ ecfZ; private String path; + private IECF ecf; + private final int usuario = 1; /** * Construtor padrao passando os parametros necessarios. @@ -62,6 +65,7 @@ public ComandoGerarCat52(SisEmpresa empresa, EcfImpressora impressora, Date data this.log = Logger.getLogger(ComandoGerarCat52.class); this.empresa = empresa; this.impressora = impressora; + this.ecf = ECF.getInstancia(); // seleciona a Z CoreService service = new CoreService(); @@ -108,7 +112,7 @@ public void executar() throws OpenPdvException { e00.setSerie(impressora.getEcfImpressoraSerie()); e00.setMfAdicional(impressora.getEcfImpressoraMfadicional()); e00.setModelo(impressora.getEcfImpressoraModelo()); - e00.setUsuario(1); + e00.setUsuario(usuario); e00.setTipoEcf(impressora.getEcfImpressoraTipo()); e00.setMarcaEcf(impressora.getEcfImpressoraMarca()); e00.setCnpj_cpf(PAF.AUXILIAR.getProperty("sh.cnpj").replaceAll("\\D", "")); @@ -122,20 +126,13 @@ public void executar() throws OpenPdvException { e01.setSerie(impressora.getEcfImpressoraSerie()); e01.setMfAdicional(impressora.getEcfImpressoraMfadicional()); e01.setModelo(impressora.getEcfImpressoraModelo()); - e01.setUsuario(1); - String[] resp = ECF.enviar(EComandoECF.ECF_NumVersao); - if (ECF.OK.equals(resp[0])) { - e01.setVersaoSB(resp[1]); - } else { - e01.setVersaoSB("01.00.00"); - } - resp = ECF.enviar(EComandoECF.ECF_DataHoraSB); - Date dataSB; - if (ECF.OK.equals(resp[0])) { - dataSB = new SimpleDateFormat("dd/MM/yy HH:mm:ss").parse(resp[1]); - } else { - dataSB = new Date(); - } + e01.setTipoEcf(impressora.getEcfImpressoraTipo()); + e01.setMarcaEcf(impressora.getEcfImpressoraMarca()); + String[] resp = ecf.enviar(EComando.ECF_NumVersao); + String versaoSB = IECF.OK.equals(resp[0]) ? resp[1] : "010000"; + e01.setVersaoSB(versaoSB.substring(0, 2) + "." + versaoSB.substring(2, 4) + "." + versaoSB.substring(4)); + resp = ecf.enviar(EComando.ECF_DataHoraSB); + Date dataSB = IECF.OK.equals(resp[0]) ? new SimpleDateFormat("dd/MM/yy HH:mm:ss").parse(resp[1]) : new Date(); e01.setDataSB(dataSB); e01.setSequencial(impressora.getEcfImpressoraCaixa()); e01.setCnpj(empresa.getSisEmpresaCnpj().replaceAll("\\D", "")); @@ -152,7 +149,7 @@ public void executar() throws OpenPdvException { e02.setSerie(impressora.getEcfImpressoraSerie()); e02.setMfAdicional(impressora.getEcfImpressoraMfadicional()); e02.setModelo(impressora.getEcfImpressoraModelo()); - e02.setUsuario(1); + e02.setUsuario(usuario); e02.setCnpj(empresa.getSisEmpresaCnpj().replaceAll("\\D", "")); e02.setIe(empresa.getSisEmpresaIe().replaceAll("\\D", "")); e02.setRazao(empresa.getSisEmpresaRazao()); @@ -165,7 +162,7 @@ public void executar() throws OpenPdvException { e12.setSerie(impressora.getEcfImpressoraSerie()); e12.setMfAdicional(impressora.getEcfImpressoraMfadicional()); e12.setModelo(impressora.getEcfImpressoraModelo()); - e12.setUsuario(1); + e12.setUsuario(usuario); e12.setCrz(ecfZ.getEcfZCrz()); e12.setCoo(ecfZ.getEcfZCooFin()); e12.setCro(ecfZ.getEcfZCro()); @@ -181,7 +178,7 @@ public void executar() throws OpenPdvException { e13.setSerie(impressora.getEcfImpressoraSerie()); e13.setMfAdicional(impressora.getEcfImpressoraMfadicional()); e13.setModelo(impressora.getEcfImpressoraModelo()); - e13.setUsuario(1); + e13.setUsuario(usuario); e13.setCrz(ecfZ.getEcfZCrz()); e13.setTotalizador(total.getEcfZTotaisCodigo()); e13.setValor(total.getEcfZTotaisValor()); @@ -196,7 +193,7 @@ public void executar() throws OpenPdvException { e14.setSerie(impressora.getEcfImpressoraSerie()); e14.setMfAdicional(impressora.getEcfImpressoraMfadicional()); e14.setModelo(impressora.getEcfImpressoraModelo()); - e14.setUsuario(1); + e14.setUsuario(usuario); e14.setCcf(venda.getEcfVendaCcf()); e14.setCoo(venda.getEcfVendaCoo()); e14.setData(venda.getEcfVendaData()); @@ -221,7 +218,7 @@ public void executar() throws OpenPdvException { e15.setSerie(impressora.getEcfImpressoraSerie()); e15.setMfAdicional(impressora.getEcfImpressoraMfadicional()); e15.setModelo(impressora.getEcfImpressoraModelo()); - e15.setUsuario(1); + e15.setUsuario(usuario); e15.setCoo(venda.getEcfVendaCoo()); e15.setCcf(venda.getEcfVendaCcf()); e15.setItem(vp.getEcfVendaProdutoOrdem()); @@ -266,7 +263,7 @@ public void executar() throws OpenPdvException { e21.setSerie(impressora.getEcfImpressoraSerie()); e21.setMfAdicional(impressora.getEcfImpressoraMfadicional()); e21.setModelo(impressora.getEcfImpressoraModelo()); - e21.setUsuario(1); + e21.setUsuario(usuario); e21.setCoo(venda.getEcfVendaCoo()); e21.setCcf(venda.getEcfVendaCcf()); e21.setGnf(pag.getEcfPagamentoGnf()); @@ -282,7 +279,7 @@ public void executar() throws OpenPdvException { e21a.setSerie(impressora.getEcfImpressoraSerie()); e21a.setMfAdicional(impressora.getEcfImpressoraMfadicional()); e21a.setModelo(impressora.getEcfImpressoraModelo()); - e21a.setUsuario(1); + e21a.setUsuario(usuario); e21a.setCoo(venda.getEcfVendaCoo()); e21a.setCcf(venda.getEcfVendaCcf()); e21a.setGnf(pag.getEcfPagamentoGnf()); @@ -301,7 +298,7 @@ public void executar() throws OpenPdvException { e16.setSerie(impressora.getEcfImpressoraSerie()); e16.setMfAdicional(impressora.getEcfImpressoraMfadicional()); e16.setModelo(impressora.getEcfImpressoraModelo()); - e16.setUsuario(1); + e16.setUsuario(usuario); e16.setCoo(doc.getEcfDocumentoCoo()); e16.setGnf(doc.getEcfDocumentoGnf()); e16.setGrg(doc.getEcfDocumentoGrg()); @@ -325,7 +322,7 @@ public void executar() throws OpenPdvException { cat52.setListaE21(listaE21); // gera o arquivo - path = PAF.gerarArquivoCat52(cat52); + path = PAF.gerarArquivoCat52(cat52, Util.getConfig().get("ecf.cat52")); } } catch (Exception ex) { log.error("Erro ao gerar o arquivo cat52 do ECF.", ex); diff --git a/src/br/com/openpdv/controlador/comandos/ComandoGerarNFe.java b/src/br/com/openpdv/controlador/comandos/ComandoGerarNFe.java index edc2530..1f4e3cc 100755 --- a/src/br/com/openpdv/controlador/comandos/ComandoGerarNFe.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoGerarNFe.java @@ -1,7 +1,8 @@ package br.com.openpdv.controlador.comandos; +import br.com.openpdv.controlador.core.Conexao; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.Ibpt; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.core.filtro.ECompara; @@ -52,7 +53,6 @@ import br.com.opensig.nfe.TNFe.InfNFe.Transp; import br.com.opensig.nfe.TUf; import br.com.opensig.nfe.TUfEmi; -import br.com.phdss.ECF; import br.com.phdss.controlador.PAF; import com.sun.jersey.api.client.WebResource; import java.util.Date; @@ -134,7 +134,7 @@ public void executar() throws OpenPdvException { nfe.setInfNFe(infNFe); element = new br.com.opensig.nfe.ObjectFactory().createNFe(nfe); - } catch (Exception ex) { + } catch (OpenPdvException ex) { log.error("Erro na montagem do xml.", ex); throw new OpenPdvException(ex); } @@ -169,7 +169,7 @@ private void getNumero() throws OpenPdvException { numero += Integer.valueOf(Util.getConfig().get("nfe.numero")) + 1; } } else { - WebResource wr = Util.getRest(Util.getConfig().get("sinc.host") + "/nfe"); + WebResource wr = Conexao.getRest(Util.getConfig().get("sinc.host") + "/nfe"); numero += wr.accept(MediaType.TEXT_PLAIN_TYPE).get(String.class); } diff --git a/src/br/com/openpdv/controlador/comandos/ComandoGerarNFeCancelada.java b/src/br/com/openpdv/controlador/comandos/ComandoGerarNFeCancelada.java index 57f89ab..1d72784 100755 --- a/src/br/com/openpdv/controlador/comandos/ComandoGerarNFeCancelada.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoGerarNFeCancelada.java @@ -1,6 +1,6 @@ package br.com.openpdv.controlador.comandos; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.ecf.EcfNotaEletronica; import br.com.opensig.eventocancnfe.TEvento; diff --git a/src/br/com/openpdv/controlador/comandos/ComandoGerarNFeInutilizada.java b/src/br/com/openpdv/controlador/comandos/ComandoGerarNFeInutilizada.java index b316a4c..ebabb77 100755 --- a/src/br/com/openpdv/controlador/comandos/ComandoGerarNFeInutilizada.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoGerarNFeInutilizada.java @@ -1,6 +1,6 @@ package br.com.openpdv.controlador.comandos; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.ecf.EcfNotaEletronica; import br.com.openpdv.modelo.sistema.SisEmpresa; diff --git a/src/br/com/openpdv/controlador/comandos/ComandoGerarSintegra.java b/src/br/com/openpdv/controlador/comandos/ComandoGerarSintegra.java index e4ddee2..e5bedc5 100755 --- a/src/br/com/openpdv/controlador/comandos/ComandoGerarSintegra.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoGerarSintegra.java @@ -2,7 +2,7 @@ import br.com.openpdv.controlador.core.CoreService; import br.com.openpdv.controlador.core.NFe; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.EDirecao; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.core.filtro.*; @@ -202,7 +202,7 @@ private List getDados50() { Util.normaliza(d50); ld50.add(d50); } catch (Exception ex) { - continue; + // nada } } @@ -258,7 +258,7 @@ private List getDados54() { } } } catch (Exception ex) { - continue; + // nada } } diff --git a/src/br/com/openpdv/controlador/comandos/ComandoGerarSped.java b/src/br/com/openpdv/controlador/comandos/ComandoGerarSped.java index dd16605..9bc0665 100755 --- a/src/br/com/openpdv/controlador/comandos/ComandoGerarSped.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoGerarSped.java @@ -2,7 +2,7 @@ import br.com.openpdv.controlador.core.CoreService; import br.com.openpdv.controlador.core.NFe; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.EDirecao; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.core.filtro.*; diff --git a/src/br/com/openpdv/controlador/comandos/ComandoImprimirCartao.java b/src/br/com/openpdv/controlador/comandos/ComandoImprimirCartao.java index d228623..a10db1d 100644 --- a/src/br/com/openpdv/controlador/comandos/ComandoImprimirCartao.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoImprimirCartao.java @@ -1,11 +1,12 @@ package br.com.openpdv.controlador.comandos; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.ecf.EcfPagamento; import br.com.openpdv.modelo.ecf.EcfPagamentoParcela; import br.com.phdss.ECF; -import br.com.phdss.EComandoECF; +import br.com.phdss.EComando; +import br.com.phdss.IECF; import br.com.phdss.TEF; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -23,21 +24,24 @@ public class ComandoImprimirCartao implements IComando { private EcfPagamento pag; - private EComandoECF comando = null; + private EComando comando = null; + private IECF ecf; /** * Construtor padrao. */ public ComandoImprimirCartao() { + this.ecf = ECF.getInstancia(); } /** * Metodo que abre as operacoes com cartao * * @param pag o pagamento em cartao. - * @param total o total geral de todos os cartoes. + * @param vCard o total geral de todos os cartoes. + * @param total o total da venda. */ - public void abrir(EcfPagamento pag, double total) { + public void abrir(EcfPagamento pag, double vCard, double total) { this.pag = pag; if (comando == null) { @@ -45,13 +49,14 @@ public void abrir(EcfPagamento pag, double total) { // abre o relatorio vinculado String coo = pag.getEcfVenda().getEcfVendaCoo() + ""; String codigo = pag.getEcfPagamentoTipo().getEcfPagamentoTipoCodigo(); - String valor = Util.formataNumero(total, 1, 2, false).replace(",", "."); - ECF.enviar(EComandoECF.ECF_AbreCupomVinculado, coo, codigo, "", valor); - comando = EComandoECF.ECF_LinhaCupomVinculado; + String sCard = Util.formataNumero(vCard, 1, 2, false).replace(",", "."); + String sTotal = Util.formataNumero(total, 1, 2, false).replace(",", "."); + ecf.enviar(EComando.ECF_AbreCupomVinculado, coo, codigo, "", sCard, sTotal); + comando = EComando.ECF_LinhaCupomVinculado; } catch (Exception ex) { // abre o relatorio gerencial - ECF.enviar(EComandoECF.ECF_AbreRelatorioGerencial); - comando = EComandoECF.ECF_LinhaRelatorioGerencial; + ecf.enviar(EComando.ECF_AbreRelatorioGerencial); + comando = EComando.ECF_LinhaRelatorioGerencial; } } } @@ -73,15 +78,15 @@ public void executar() throws OpenPdvException { // se for o pendente, precisa confirmar no GP e sera o ultimo cartao if (pag.getArquivo().contains("pendente")) { String id = pag.getArquivo().replaceAll("\\D", ""); - ECF.enviar(EComandoECF.ECF_FechaRelatorio); + ecf.enviar(EComando.ECF_FechaRelatorio); TEF.confirmarTransacao(id, true); // pega o numero GNF da impressao do cartao - String[] resp = ECF.enviar(EComandoECF.ECF_NumGNF); + String[] resp = ecf.enviar(EComando.ECF_NumGNF); pag.setEcfPagamentoGnf(Integer.valueOf(resp[1])); // salva o documento para relatorio - new ComandoSalvarDocumento(comando == EComandoECF.ECF_LinhaCupomVinculado ? "CC" : "RG").executar(); + new ComandoSalvarDocumento(comando == EComando.ECF_LinhaCupomVinculado ? "CC" : "RG").executar(); } // gerar as parcelas @@ -99,7 +104,7 @@ public void executar() throws OpenPdvException { public void fechar() { if (comando != null) { comando = null; - ECF.enviar(EComandoECF.ECF_FechaRelatorio); + ecf.enviar(EComando.ECF_FechaRelatorio); } } @@ -109,7 +114,8 @@ public void desfazer() throws OpenPdvException { } /** - * Metodo que adiciona a lista de parcelas as parcelas correspondente do pagamento informado. + * Metodo que adiciona a lista de parcelas as parcelas correspondente do + * pagamento informado. * * @param dados o mapa de dados lidos do arquivo. * @param pagamento o objeto de pagamento a ser considerado. diff --git a/src/br/com/openpdv/controlador/comandos/ComandoReceberDados.java b/src/br/com/openpdv/controlador/comandos/ComandoReceberDados.java index 3fd91a7..e4dbf9d 100644 --- a/src/br/com/openpdv/controlador/comandos/ComandoReceberDados.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoReceberDados.java @@ -2,7 +2,7 @@ import br.com.openpdv.controlador.core.Conexao; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.Dados; import br.com.openpdv.modelo.core.EBusca; import br.com.openpdv.modelo.core.EComandoSQL; @@ -106,6 +106,12 @@ public void executar() throws OpenPdvException { throw new OpenPdvException(erros.toString()); } } + + // fecha a conexao + if (em != null && emf != null) { + em.close(); + emf.close(); + } } @Override @@ -163,22 +169,22 @@ private void usuarios() { * Metodo que salva os clientes. */ private void clientes() { + MultivaluedMap mm = new MultivaluedMapImpl(); try { + Date da = (Date) service.buscar(new SisCliente(), "sisClienteData", EBusca.MAXIMO, null); + mm.putSingle("data", da != null ? Util.getData(da) : ""); List clientes = receber("cliente", new GenericType>() { - }); + }, mm); + em.getTransaction().begin(); for (SisCliente cli : clientes) { - try { - em.getTransaction().begin(); - service.salvar(em, cli); - em.getTransaction().commit(); - } catch (Exception ex) { - if (em != null && em.getTransaction().isActive()) { - em.getTransaction().rollback(); - } - } + service.salvar(em, cli); } + em.getTransaction().commit(); log.info("Dados clientes recebidos -> " + clientes.size()); } catch (Exception ex) { + if (em != null && em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } erros.append("Erro no recebimento dos Clientes.\n"); log.error("Erro no recebimento dos Clientes.", ex); } @@ -421,6 +427,9 @@ private void produtosAtualizados() { } em.getTransaction().commit(); } catch (Exception ex) { + if (em != null && em.getTransaction().isActive()) { + em.getTransaction().rollback(); + } prodSinc = false; log.error("Nao atualizou o produto com ID = " + prod.getProdProdutoId(), ex); } @@ -442,7 +451,7 @@ private void produtosAtualizados() { private void salvar() throws OpenPdvException { try { PAF.AUXILIAR.setProperty("out.recebimento", Util.getData(new Date())); - PAF.criptografar(); + Util.criptografar(null, PAF.AUXILIAR); } catch (Exception ex) { throw new OpenPdvException("Erro ao salvar no arquivo auxiliar.\nVerifique o log do sistema.", ex); } diff --git a/src/br/com/openpdv/controlador/comandos/ComandoReceberDadosLocal.java b/src/br/com/openpdv/controlador/comandos/ComandoReceberDadosLocal.java index 4631392..82746b7 100644 --- a/src/br/com/openpdv/controlador/comandos/ComandoReceberDadosLocal.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoReceberDadosLocal.java @@ -2,7 +2,7 @@ import br.com.openpdv.modelo.core.Dados; import br.com.openpdv.rest.RestContexto; -import br.com.phdss.controlador.PAF; +import br.com.phdss.Util; import com.sun.jersey.api.client.GenericType; import java.io.File; import java.util.ArrayList; @@ -24,7 +24,7 @@ public class ComandoReceberDadosLocal extends ComandoReceberDados { @Override public List receber(String tipo, GenericType> classe) throws Exception { - StringBuilder sb = new StringBuilder(PAF.getPathArquivos()); + StringBuilder sb = new StringBuilder(Util.getPathArquivos()); sb.append("importar").append(System.getProperty("file.separator")); sb.append(tipo).append(".json"); arq = new File(sb.toString()); diff --git a/src/br/com/openpdv/controlador/comandos/ComandoReceberDadosRemoto.java b/src/br/com/openpdv/controlador/comandos/ComandoReceberDadosRemoto.java index c707d39..1ec8e4b 100644 --- a/src/br/com/openpdv/controlador/comandos/ComandoReceberDadosRemoto.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoReceberDadosRemoto.java @@ -1,6 +1,7 @@ package br.com.openpdv.controlador.comandos; -import br.com.openpdv.controlador.core.Util; +import br.com.openpdv.controlador.core.Conexao; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.Dados; import com.sun.jersey.api.client.GenericType; import com.sun.jersey.api.client.WebResource; @@ -19,14 +20,14 @@ public class ComandoReceberDadosRemoto extends ComandoReceberDados { @Override public List receber(String tipo, GenericType> classe) throws Exception { - wr = Util.getRest(Util.getConfig().get("sinc.host") + "/" + tipo); + wr = Conexao.getRest(Util.getConfig().get("sinc.host") + "/" + tipo); List lista = wr.accept(MediaType.APPLICATION_JSON).get(classe); return lista; } @Override public List receber(String tipo, GenericType> classe, MultivaluedMap mm) throws Exception { - wr = Util.getRest(Util.getConfig().get("sinc.host") + "/" + tipo); + wr = Conexao.getRest(Util.getConfig().get("sinc.host") + "/" + tipo); List lista = wr.queryParams(mm).accept(MediaType.APPLICATION_JSON).get(classe); return lista; } diff --git a/src/br/com/openpdv/controlador/comandos/ComandoRecuperarNFe.java b/src/br/com/openpdv/controlador/comandos/ComandoRecuperarNFe.java index 591d32f..819b210 100755 --- a/src/br/com/openpdv/controlador/comandos/ComandoRecuperarNFe.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoRecuperarNFe.java @@ -1,7 +1,7 @@ package br.com.openpdv.controlador.comandos; import br.com.openpdv.controlador.core.NFe; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.ecf.ENotaStatus; import br.com.openpdv.modelo.ecf.EcfNotaEletronica; diff --git a/src/br/com/openpdv/controlador/comandos/ComandoSalvarDocumento.java b/src/br/com/openpdv/controlador/comandos/ComandoSalvarDocumento.java index 376e477..33f07be 100755 --- a/src/br/com/openpdv/controlador/comandos/ComandoSalvarDocumento.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoSalvarDocumento.java @@ -1,12 +1,12 @@ package br.com.openpdv.controlador.comandos; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.permissao.Login; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.ecf.EcfDocumento; import br.com.openpdv.visao.core.Caixa; import br.com.phdss.ECF; -import br.com.phdss.EComandoECF; +import br.com.phdss.EComando; +import br.com.phdss.IECF; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; @@ -19,6 +19,7 @@ public class ComandoSalvarDocumento implements IComando { private String tipo; + private IECF ecf; /** * Costrutor padrao passando o tipo de documento a ser salvo. @@ -27,6 +28,7 @@ public class ComandoSalvarDocumento implements IComando { */ public ComandoSalvarDocumento(String tipo) { this.tipo = tipo; + this.ecf = ECF.getInstancia(); } @Override @@ -34,22 +36,22 @@ public void executar() throws OpenPdvException { // seta os dados do documento. EcfDocumento doc = new EcfDocumento(); doc.setEcfImpressora(Caixa.getInstancia().getImpressora()); - doc.setEcfDocumentoUsuario(Login.getOperador() == null ? 0 : Login.getOperador().getId()); - String[] resp = ECF.enviar(EComandoECF.ECF_NumCupom); + doc.setEcfDocumentoUsuario(1); + String[] resp = ecf.enviar(EComando.ECF_NumCupom); doc.setEcfDocumentoCoo(Integer.valueOf(resp[1])); - if(!tipo.equals("RV")){ - resp = ECF.enviar(EComandoECF.ECF_NumGNF); - doc.setEcfDocumentoGnf(Integer.valueOf(resp[1])); + if (!tipo.equals("RV")) { + resp = ecf.enviar(EComando.ECF_NumGNF); + doc.setEcfDocumentoGnf(Integer.valueOf(resp[1])); } if (tipo.equals("RG")) { - resp = ECF.enviar(EComandoECF.ECF_NumGRG); + resp = ecf.enviar(EComando.ECF_NumGRG); doc.setEcfDocumentoGrg(Integer.valueOf(resp[1])); } else if (tipo.equals("CC")) { - resp = ECF.enviar(EComandoECF.ECF_NumCDC); + resp = ecf.enviar(EComando.ECF_NumCDC); doc.setEcfDocumentoCdc(Integer.valueOf(resp[1])); } doc.setEcfDocumentoTipo(tipo); - resp = ECF.enviar(EComandoECF.ECF_DataHora); + resp = ecf.enviar(EComando.ECF_DataHora); Date data; try { data = new SimpleDateFormat("dd/MM/yy HH:mm:ss").parse(resp[1]); diff --git a/src/br/com/openpdv/controlador/comandos/ComandoSalvarPagamento.java b/src/br/com/openpdv/controlador/comandos/ComandoSalvarPagamento.java index 4c9c55c..adea129 100755 --- a/src/br/com/openpdv/controlador/comandos/ComandoSalvarPagamento.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoSalvarPagamento.java @@ -2,7 +2,7 @@ import br.com.openpdv.controlador.core.Conexao; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.ecf.EcfPagamento; import br.com.openpdv.modelo.ecf.EcfPagamentoParcela; @@ -38,19 +38,21 @@ public ComandoSalvarPagamento(List pagamentos) { public void executar() throws OpenPdvException { List impressos = new ArrayList<>(); - // soma os valores de todos os cartoes, para colocar no CCD + // soma os valores de todos os cartoes, para colocar no CCD e o total da venda double valCard = 0.00; + double total = 0.00; for (EcfPagamento pag : pagamentos) { if (pag.getEcfPagamentoTipo().isEcfPagamentoTipoTef()) { valCard += pag.getEcfPagamentoValor(); } + total += pag.getEcfPagamentoValor(); } // percorre os pagamentos para inserir no banco e imprimir cartoes ComandoImprimirCartao cmdCartao = new ComandoImprimirCartao(); for (EcfPagamento pag : pagamentos) { if (pag.getEcfPagamentoTipo().isEcfPagamentoTipoTef() && Boolean.valueOf(Util.getConfig().get("pag.cartao"))) { - cmdCartao.abrir(pag, valCard); + cmdCartao.abrir(pag, valCard, total); cmdCartao.executar(); impressos.add(new File(pag.getArquivo())); } else if (pag.getEcfPagamentoParcelas() == null) { @@ -79,7 +81,8 @@ public void desfazer() throws OpenPdvException { } /** - * Metodo que a operacao de salvar os dados no banco de dados para posterior uso, ate mesmo de cancelamento. + * Metodo que a operacao de salvar os dados no banco de dados para posterior + * uso, ate mesmo de cancelamento. * * @param pagamento objeto de pagamento a ser salvo. * @throws OpenPdvException dispara caso nao consiga salvar. diff --git a/src/br/com/openpdv/controlador/comandos/ComandoTotalizarPagamentos.java b/src/br/com/openpdv/controlador/comandos/ComandoTotalizarPagamentos.java index fa40235..9239c5e 100644 --- a/src/br/com/openpdv/controlador/comandos/ComandoTotalizarPagamentos.java +++ b/src/br/com/openpdv/controlador/comandos/ComandoTotalizarPagamentos.java @@ -5,7 +5,7 @@ package br.com.openpdv.controlador.comandos; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.EBusca; import br.com.openpdv.modelo.core.EComandoSQL; import br.com.openpdv.modelo.core.OpenPdvException; diff --git a/src/br/com/openpdv/controlador/core/Conexao.java b/src/br/com/openpdv/controlador/core/Conexao.java index 5d415cf..7ee3110 100755 --- a/src/br/com/openpdv/controlador/core/Conexao.java +++ b/src/br/com/openpdv/controlador/core/Conexao.java @@ -1,6 +1,14 @@ package br.com.openpdv.controlador.core; +import br.com.openpdv.rest.RestContexto; +import br.com.phdss.Util; import br.com.phdss.controlador.PAF; +import com.sun.jersey.api.client.Client; +import com.sun.jersey.api.client.WebResource; +import com.sun.jersey.api.client.config.ClientConfig; +import com.sun.jersey.api.client.config.DefaultClientConfig; +import com.sun.jersey.api.client.filter.GZIPContentEncodingFilter; +import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter; import java.util.Properties; import javax.persistence.EntityManagerFactory; import javax.persistence.Persistence; @@ -22,7 +30,7 @@ public class Conexao { static { // descriptografando os dados de acesso do BD try { - PAF.descriptografar("db" + System.getProperty("file.separator") + "banco.txt", DADOS); + Util.descriptografar("db" + System.getProperty("file.separator") + "banco.txt", DADOS); // arrumando a url do banco String url = DADOS.getProperty("eclipselink.jdbc.url", "").replace("+", "="); DADOS.setProperty("eclipselink.jdbc.url", url); @@ -73,4 +81,52 @@ public static EntityManagerFactory getInstancia(String pu, Properties dados) thr throw new Exception("Dados vazios, verificar arquivo db/banco.txt"); } } + + /** + * Metodo que gera um objeto de comunicaxao com o RESTful do sistema. + * + * @param path o caminho especifico do comando no servidor. + * @return um objeto de referencia web. + */ + public static WebResource getRest(String path) { + Client c = getClientRest(); + + // set a url completa + StringBuilder sb = new StringBuilder(); + sb.append(Util.getConfig().get("sinc.servidor")).append(":"); + sb.append(Util.getConfig().get("sinc.porta")).append(path); + WebResource wr = c.resource(sb.toString()); + + return wr; + } + + /** + * Metodo que gera um cliente rest usando os parametros padroes de + * comunicacao. + * + * @return um objeto de acesso ao RestFull. + */ + public static Client getClientRest() { + // seta o cliente + ClientConfig cc = new DefaultClientConfig(); + cc.getClasses().add(RestContexto.class); + Client c = Client.create(cc); + c.setFollowRedirects(true); + c.setConnectTimeout(Integer.valueOf(Util.getConfig().get("sinc.timeout")) * 1000); + c.setReadTimeout(Integer.valueOf(Util.getConfig().get("sinc.timeout")) * 1000); + + // cria a autenticacao + String usuario = PAF.AUXILIAR.getProperty("cli.cnpj"); + String senha = PAF.AUXILIAR.getProperty("ecf.serie").split(";")[0]; + + // criptografa a senha se estiver setado no config + if (Boolean.valueOf(Util.getConfig().get("sinc.criptografar"))) { + senha = Util.encriptar(senha); + } + + // seta os filtros + c.addFilter(new HTTPBasicAuthFilter(usuario, senha)); + c.addFilter(new GZIPContentEncodingFilter(true)); + return c; + } } diff --git a/src/br/com/openpdv/controlador/core/NFe.java b/src/br/com/openpdv/controlador/core/NFe.java index a399f60..65bf420 100755 --- a/src/br/com/openpdv/controlador/core/NFe.java +++ b/src/br/com/openpdv/controlador/core/NFe.java @@ -2,6 +2,7 @@ import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.ecf.ENotaStatus; +import br.com.phdss.Util; import br.com.phdss.controlador.PAF; import br.inf.portalfiscal.www.nfe.wsdl.nfeinutilizacao2.NfeInutilizacao2Stub; import br.inf.portalfiscal.www.nfe.wsdl.nferecepcao2.NfeRecepcao2Stub; @@ -332,7 +333,7 @@ private Object[] lerCertificado(XMLSignatureFactory signatureFactory) throws Exc // chave PrivateKey pk = null; // descriptografa a senha - String senha = PAF.descriptar(Util.getConfig().get("nfe.senha")); + String senha = Util.descriptar(Util.getConfig().get("nfe.senha")); // le o certificado InputStream entrada = new FileInputStream("nfe/certificado.pfx"); diff --git a/src/br/com/openpdv/controlador/core/Util.java b/src/br/com/openpdv/controlador/core/Util.java deleted file mode 100755 index ddf8e6d..0000000 --- a/src/br/com/openpdv/controlador/core/Util.java +++ /dev/null @@ -1,396 +0,0 @@ -package br.com.openpdv.controlador.core; - -import br.com.openpdv.rest.RestContexto; -import br.com.phdss.controlador.PAF; -import com.sun.jersey.api.client.Client; -import com.sun.jersey.api.client.WebResource; -import com.sun.jersey.api.client.config.ClientConfig; -import com.sun.jersey.api.client.config.DefaultClientConfig; -import com.sun.jersey.api.client.filter.GZIPContentEncodingFilter; -import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter; -import java.io.FileInputStream; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.text.Normalizer; -import java.text.NumberFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import javax.swing.JComboBox; -import javax.swing.text.MaskFormatter; - -/** - * Classe responsavel para funcoes utilitarias. - * - * @author Pedro H. Lira - */ -public class Util { - - // tabela com vinculos das letras - private static Map config; - private static final int[] pesoCPF = {11, 10, 9, 8, 7, 6, 5, 4, 3, 2}; - private static final int[] pesoCNPJ = {6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2}; - public static final String[] OPCOES = {"Sim", "Não"}; - - /** - * Constutor padrao. - */ - private Util() { - } - - /** - * Metodo que normaliza os caracteres removendo os acentos. - * - * @param texto o texto acentuado. - * @return o texto sem acentos. - */ - public static String normaliza(String texto) { - CharSequence cs = new StringBuilder(texto == null ? "" : texto); - return Normalizer.normalize(cs, Normalizer.Form.NFKD).replaceAll("\\p{InCombiningDiacriticalMarks}+", ""); - } - - /** - * Metodo que normaliza os caracteres removendo os acentos de todos os - * campos de um objeto. - * - * @param bloco o objeto que sera modificado. - */ - public static void normaliza(Object bloco) { - for (Method metodo : bloco.getClass().getMethods()) { - try { - if (isGetter(metodo)) { - Object valorMetodo = metodo.invoke(bloco, new Object[]{}); - - if (metodo.getReturnType() == String.class) { - String nomeMetodo = metodo.getName().replaceFirst("get", "set"); - Method set = bloco.getClass().getMethod(nomeMetodo, new Class[]{String.class}); - String valor = valorMetodo == null ? "" : valorMetodo.toString(); - valor = normaliza(valor); - set.invoke(bloco, new Object[]{valor.trim()}); - } - } - } catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException ex) { - // pula o item - } - } - } - - /** - * Metodo que informa se o metodo da classe é do tipo GET. - * - * @param method usando reflection para descrobrir os metodos. - * @return verdadeiro se o metodo for GET, falso caso contrario. - */ - public static boolean isGetter(Method method) { - if (!method.getName().startsWith("get")) { - return false; - } - if (method.getParameterTypes().length != 0) { - return false; - } - if (void.class.equals(method.getReturnType())) { - return false; - } - return true; - } - - /** - * Metodo que informa se o metodo da classe é do tipo SET. - * - * @param method usando reflection para descrobrir os metodos. - * @return verdadeiro se o metodo for SET, falso caso contrario. - */ - public static boolean isSetter(Method method) { - if (!method.getName().startsWith("set")) { - return false; - } - if (method.getParameterTypes().length == 0) { - return false; - } - if (!void.class.equals(method.getReturnType())) { - return false; - } - return true; - } - - /** - * Metodo que formata um texto em data no padrao dd/MM/aaaa - * - * @param data o texto da data. - * @return um objeto Date ou null caso nao consiga fazer o parser. - */ - public static Date getData(String data) { - return formataData(data, "dd/MM/yyyy"); - } - - /** - * Metodo que formata uma data em texto no padrao dd/MM/aaaa - * - * @param data o objeto Date. - * @return uma String formatada ou null caso a data nao seja valida. - */ - public static String getData(Date data) { - return formataData(data, "dd/MM/yyyy"); - } - - /** - * Metodo que formata um texto em data no padrao dd/MM/aaaa HH:mm:ss - * - * @param data o texto da data. - * @return um objeto Date ou null caso nao consiga fazer o parser. - */ - public static Date getDataHora(String data) { - return formataData(data, "dd/MM/yyyy HH:mm:ss"); - } - - /** - * Metodo que formata uma data em texto no padrao dd/MM/aaaa HH:mm:ss - * - * @param data o objeto Date. - * @return uma String formatada ou null caso a data nao seja valida. - */ - public static String getDataHora(Date data) { - return formataData(data, "dd/MM/yyyy HH:mm:ss"); - } - - /** - * Metodo que formata a data. - * - * @param data a data do tipo Date. - * @param formato o formado desejado. - * @return a data formatada como solicidato. - */ - public static String formataData(Date data, String formato) { - try { - return new SimpleDateFormat(formato).format(data); - } catch (Exception ex) { - return null; - } - } - - /** - * Metodo que formata a data. - * - * @param data a data em formato string. - * @param formato o formado desejado. - * @return a data como objeto ou null se tiver erro. - */ - public static Date formataData(String data, String formato) { - try { - return new SimpleDateFormat(formato).parse(data); - } catch (Exception ex) { - return null; - } - } - - /** - * @see #formataNumero(double, int, int, boolean) - */ - public static String formataNumero(String valor, int inteiros, int decimal, boolean grupo) { - return formataNumero(Double.valueOf(valor), inteiros, decimal, grupo); - } - - /** - * Metodo que faz a formatacao de numeros com inteiros e fracoes - * - * @param valor o valor a ser formatado - * @param inteiros o minimo de inteiros, que serao completados com ZEROS se - * preciso - * @param decimal o minimo de decimais, que serao completados com ZEROS se - * preciso - * @param grupo se sera colocado separador de grupo de milhar - * @return uma String com o numero formatado - */ - public static String formataNumero(double valor, int inteiros, int decimal, boolean grupo) { - NumberFormat nf = NumberFormat.getIntegerInstance(); - nf.setMinimumIntegerDigits(inteiros); - nf.setMinimumFractionDigits(decimal); - nf.setMaximumFractionDigits(decimal); - nf.setGroupingUsed(grupo); - return nf.format(valor); - } - - /** - * Metodo que formata o texto usando a mascara passada. - * - * @param texto o texto a ser formatado. - * @param mascara a mascara a ser usada. - * @return o texto formatado. - * @throws ParseException caso ocorra erro. - */ - public static String formataTexto(String texto, String mascara) throws ParseException { - MaskFormatter mf = new MaskFormatter(mascara); - mf.setValueContainsLiteralCharacters(false); - return mf.valueToString(texto); - } - - /** - * Metodo que formata o texto. - * - * @param texto o texto a ser formatado. - * @param caracter o caracter que sera repetido. - * @param tamanho o tamanho total do texto de resposta. - * @param direita a direcao onde colocar os caracteres. - * @return o texto formatado. - */ - public static String formataTexto(String texto, String caracter, int tamanho, boolean direita) { - StringBuilder sb = new StringBuilder(); - int fim = tamanho - texto.length(); - for (int i = 0; i < fim; i++) { - sb.append(caracter); - } - return direita ? texto + sb.toString() : sb.toString() + texto; - } - - /** - * Metodo que calcula o digito. - * - * @param str valor do texto. - * @param peso array de pesos. - * @return um numero calculado. - */ - private static int calcularDigito(String str, int[] peso) { - int soma = 0; - for (int indice = str.length() - 1, digito; indice >= 0; indice--) { - digito = Integer.parseInt(str.substring(indice, indice + 1)); - soma += digito * peso[peso.length - str.length() + indice]; - } - soma = 11 - soma % 11; - return soma > 9 ? 0 : soma; - } - - /** - * Metodo que valida se e CPF - * - * @param cpf o valor do texto. - * @return verdadeiro se valido, falso caso contrario. - */ - public static boolean isCPF(String cpf) { - if ((cpf == null) || (cpf.length() != 11)) { - return false; - } else { - Pattern p = Pattern.compile(cpf.charAt(0) + "{11}"); - Matcher m = p.matcher(cpf); - if (m.find()) { - return false; - } - } - - Integer digito1 = calcularDigito(cpf.substring(0, 9), pesoCPF); - Integer digito2 = calcularDigito(cpf.substring(0, 9) + digito1, pesoCPF); - return cpf.equals(cpf.substring(0, 9) + digito1.toString() + digito2.toString()); - } - - /** - * Metodo que valida se e CNPJ - * - * @param cnpj o valor do texto. - * @return verdadeiro se valido, falso caso contrario. - */ - public static boolean isCNPJ(String cnpj) { - if ((cnpj == null) || (cnpj.length() != 14)) { - return false; - } else { - Pattern p = Pattern.compile(cnpj.charAt(0) + "{14}"); - Matcher m = p.matcher(cnpj); - if (m.find()) { - return false; - } - } - - Integer digito1 = calcularDigito(cnpj.substring(0, 12), pesoCNPJ); - Integer digito2 = calcularDigito(cnpj.substring(0, 12) + digito1, pesoCNPJ); - return cnpj.equals(cnpj.substring(0, 12) + digito1.toString() + digito2.toString()); - } - - /** - * Metodo que recupera as configuracoes do sistema. - * - * @return Um mapa de String contendo chave/valor. - */ - public static Map getConfig() { - if (config == null) { - Properties props = new Properties(); - try (FileInputStream fis = new FileInputStream("conf" + System.getProperty("file.separator") + "config.properties")) { - props.load(fis); - config = new HashMap<>(); - for (String chave : props.stringPropertyNames()) { - config.put(chave, props.getProperty(chave)); - } - } catch (Exception ex) { - config = null; - } - } - return config; - } - - /** - * Metodo que gera um objeto de comunicaxao com o RESTful do sistema. - * - * @param path o caminho especifico do comando no servidor. - * @return um objeto de referencia web. - */ - public static WebResource getRest(String path) { - Client c = getClientRest(); - - // set a url completa - StringBuilder sb = new StringBuilder(); - sb.append(Util.getConfig().get("sinc.servidor")).append(":"); - sb.append(Util.getConfig().get("sinc.porta")).append(path); - WebResource wr = c.resource(sb.toString()); - - return wr; - } - - /** - * Metodo que gera um cliente rest usando os parametros padroes de - * comunicacao. - * - * @return um objeto de acesso ao RestFull. - */ - public static Client getClientRest() { - // seta o cliente - ClientConfig cc = new DefaultClientConfig(); - cc.getClasses().add(RestContexto.class); - Client c = Client.create(cc); - c.setFollowRedirects(true); - c.setConnectTimeout(Integer.valueOf(config.get("sinc.timeout")) * 1000); - c.setReadTimeout(Integer.valueOf(config.get("sinc.timeout")) * 1000); - - // cria a autenticacao - String usuario = PAF.AUXILIAR.getProperty("cli.cnpj"); - String senha = PAF.AUXILIAR.getProperty("ecf.serie").split(";")[0]; - - // criptografa a senha se estiver setado no config - if(Boolean.valueOf(config.get("sinc.criptografar"))){ - senha = PAF.encriptar(senha); - } - - // seta os filtros - c.addFilter(new HTTPBasicAuthFilter(usuario, senha)); - c.addFilter(new GZIPContentEncodingFilter(true)); - return c; - } - - - /** - * Metodo que seleciona um item da combo pelo valor. - * - * @param combo a ser verificada. - * @param valor a ser comparado. - */ - public static void selecionarCombo(JComboBox combo, String valor) { - for (int i = 0; i < combo.getItemCount(); i++) { - String item = combo.getItemAt(i).toString(); - if (item.startsWith(valor)) { - combo.setSelectedIndex(i); - break; - } - } - } -} diff --git a/src/br/com/openpdv/modelo/ecf/EcfNota.java b/src/br/com/openpdv/modelo/ecf/EcfNota.java index 7d0f331..67f8891 100755 --- a/src/br/com/openpdv/modelo/ecf/EcfNota.java +++ b/src/br/com/openpdv/modelo/ecf/EcfNota.java @@ -3,7 +3,6 @@ import br.com.openpdv.modelo.core.Dados; import br.com.openpdv.modelo.core.EDirecao; import br.com.openpdv.modelo.sistema.SisCliente; -import br.com.openpdv.modelo.sistema.SisEmpresa; import java.io.Serializable; import java.util.Date; import java.util.List; diff --git a/src/br/com/openpdv/modelo/ecf/EcfNotaEletronica.java b/src/br/com/openpdv/modelo/ecf/EcfNotaEletronica.java index 0954564..d82b2b2 100755 --- a/src/br/com/openpdv/modelo/ecf/EcfNotaEletronica.java +++ b/src/br/com/openpdv/modelo/ecf/EcfNotaEletronica.java @@ -3,7 +3,6 @@ import br.com.openpdv.modelo.core.Dados; import br.com.openpdv.modelo.core.EDirecao; import br.com.openpdv.modelo.sistema.SisCliente; -import br.com.openpdv.modelo.sistema.SisEmpresa; import java.io.Serializable; import java.util.Date; import javax.persistence.*; diff --git a/src/br/com/openpdv/modelo/ecf/EcfNotaProduto.java b/src/br/com/openpdv/modelo/ecf/EcfNotaProduto.java index 6050cdd..f08d2e2 100755 --- a/src/br/com/openpdv/modelo/ecf/EcfNotaProduto.java +++ b/src/br/com/openpdv/modelo/ecf/EcfNotaProduto.java @@ -1,6 +1,6 @@ package br.com.openpdv.modelo.ecf; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.Dados; import br.com.openpdv.modelo.produto.ProdEmbalagem; import br.com.openpdv.modelo.produto.ProdProduto; diff --git a/src/br/com/openpdv/modelo/ecf/EcfTrocaProduto.java b/src/br/com/openpdv/modelo/ecf/EcfTrocaProduto.java index 2f9cefc..c341a60 100644 --- a/src/br/com/openpdv/modelo/ecf/EcfTrocaProduto.java +++ b/src/br/com/openpdv/modelo/ecf/EcfTrocaProduto.java @@ -1,6 +1,6 @@ package br.com.openpdv.modelo.ecf; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.Dados; import br.com.openpdv.modelo.produto.ProdEmbalagem; import br.com.openpdv.modelo.produto.ProdProduto; diff --git a/src/br/com/openpdv/modelo/ecf/EcfVendaProduto.java b/src/br/com/openpdv/modelo/ecf/EcfVendaProduto.java index 3d229fd..e06dfea 100755 --- a/src/br/com/openpdv/modelo/ecf/EcfVendaProduto.java +++ b/src/br/com/openpdv/modelo/ecf/EcfVendaProduto.java @@ -1,6 +1,6 @@ package br.com.openpdv.modelo.ecf; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.Dados; import br.com.openpdv.modelo.produto.ProdEmbalagem; import br.com.openpdv.modelo.produto.ProdProduto; diff --git a/src/br/com/openpdv/rest/.DS_Store b/src/br/com/openpdv/rest/.DS_Store new file mode 100644 index 0000000..86ad00f Binary files /dev/null and b/src/br/com/openpdv/rest/.DS_Store differ diff --git a/src/br/com/openpdv/rest/ARest.java b/src/br/com/openpdv/rest/ARest.java index 6798f08..b7e7510 100644 --- a/src/br/com/openpdv/rest/ARest.java +++ b/src/br/com/openpdv/rest/ARest.java @@ -3,6 +3,7 @@ import br.com.openpdv.controlador.core.CoreService; import br.com.openpdv.modelo.core.filtro.*; import br.com.openpdv.modelo.ecf.EcfImpressora; +import br.com.phdss.Util; import br.com.phdss.controlador.PAF; import com.sun.jersey.core.util.Base64; import javax.ws.rs.core.Context; @@ -98,7 +99,7 @@ protected void autorizar() throws RestException { header = header.substring("Basic ".length()); String[] creds = Base64.base64Decode(header).split(":"); cnpj = creds[0]; - serie = PAF.descriptar(creds[1]); + serie = Util.descriptar(creds[1]); // realiza a validacao if (cnpj.equals(PAF.AUXILIAR.getProperty("cli.cnpj"))) { diff --git a/src/br/com/openpdv/rest/RestCliente.java b/src/br/com/openpdv/rest/RestCliente.java index 53d598d..3c1341a 100644 --- a/src/br/com/openpdv/rest/RestCliente.java +++ b/src/br/com/openpdv/rest/RestCliente.java @@ -1,6 +1,6 @@ package br.com.openpdv.rest; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.EBusca; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.core.filtro.*; diff --git a/src/br/com/openpdv/rest/RestContexto.java b/src/br/com/openpdv/rest/RestContexto.java index 95d8e9e..2d78383 100644 --- a/src/br/com/openpdv/rest/RestContexto.java +++ b/src/br/com/openpdv/rest/RestContexto.java @@ -23,8 +23,8 @@ @Provider public class RestContexto extends MOXyJsonProvider implements ContextResolver { - private JAXBContext context; - private Class[] types = {SisEmpresa.class, SisEstado.class, SisMunicipio.class, SisUsuario.class, SisCliente.class, + private final JAXBContext context; + private final Class[] types = {SisEmpresa.class, SisEstado.class, SisMunicipio.class, SisUsuario.class, SisCliente.class, EcfPagamentoTipo.class, ProdEmbalagem.class, ProdProduto.class, ProdPreco.class, ProdComposicao.class, ProdGrade.class, ProdGradeTipo.class, EcfImpressora.class, EcfDocumento.class, EcfNota.class, EcfNotaProduto.class, EcfNotaEletronica.class, ENotaStatus.class, EcfZ.class, EcfZTotais.class, EcfVenda.class, EcfVendaProduto.class, EcfPagamentoTipo.class, EcfPagamento.class, diff --git a/src/br/com/openpdv/rest/RestServidor.java b/src/br/com/openpdv/rest/RestServidor.java index de793c5..45c25f5 100644 --- a/src/br/com/openpdv/rest/RestServidor.java +++ b/src/br/com/openpdv/rest/RestServidor.java @@ -17,6 +17,7 @@ import br.com.openpdv.modelo.core.parametro.ParametroObjeto; import br.com.openpdv.modelo.ecf.*; import br.com.openpdv.modelo.produto.ProdEmbalagem; +import br.com.openpdv.modelo.produto.ProdGrade; import br.com.openpdv.modelo.produto.ProdProduto; import br.com.openpdv.modelo.sistema.SisCliente; import br.com.opensig.nfe.TNFe; @@ -76,36 +77,44 @@ public void setNota(EcfNota ecfNota) throws RestException { EntityManager em = null; try { - emf = Conexao.getInstancia(); - em = emf.createEntityManager(); - em.getTransaction().begin(); - - // identifica o cliente - if (ecfNota.getSisCliente() != null) { - SisCliente cliente = getCliente(em, ecfNota.getSisCliente()); - ecfNota.setSisCliente(cliente); - } + // valida se ja existe + FiltroTexto ft = new FiltroTexto("ecfNotaSerie", ECompara.IGUAL, ecfNota.getEcfNotaSerie()); + FiltroTexto ft1 = new FiltroTexto("ecfNotaSubserie", ECompara.IGUAL, ecfNota.getEcfNotaSubserie()); + FiltroNumero fn = new FiltroNumero("ecfNotaNumero", ECompara.IGUAL, ecfNota.getEcfNotaNumero()); + GrupoFiltro gf = new GrupoFiltro(EJuncao.E, new IFiltro[]{ft, ft1, fn}); + EcfNota aux = (EcfNota) service.selecionar(ecfNota, gf); + + if (aux == null) { + emf = Conexao.getInstancia(); + em = emf.createEntityManager(); + em.getTransaction().begin(); + + // identifica o cliente + if (ecfNota.getSisCliente() != null) { + SisCliente cliente = getCliente(em, ecfNota.getSisCliente()); + ecfNota.setSisCliente(cliente); + } - // salva a nota - List nps = ecfNota.getEcfNotaProdutos(); - ecfNota.setEcfNotaProdutos(null); - ecfNota.setId(0); - ecfNota = (EcfNota) service.salvar(em, ecfNota); - em.getTransaction().commit(); + // salva a nota + List nps = ecfNota.getEcfNotaProdutos(); + ecfNota.setEcfNotaProdutos(null); + ecfNota.setId(0); + ecfNota = (EcfNota) service.salvar(em, ecfNota); + em.getTransaction().commit(); - // salva os produtos vendidos - List sqls = new ArrayList<>(); - for (EcfNotaProduto np : nps) { - np.setId(0); - np.setEcfNota(ecfNota); - Sql sql = getEstoque(np.getEcfNotaProdutoQuantidade(), np.getProdEmbalagem(), np.getProdProduto()); - sqls.add(sql); - } - service.salvar(nps); + // salva os produtos vendidos + List sqls = new ArrayList<>(); + for (EcfNotaProduto np : nps) { + np.setId(0); + np.setEcfNota(ecfNota); + getEstoque(sqls, np.getEcfNotaProdutoQuantidade(), np.getProdEmbalagem(), np.getProdProduto(), np.getEcfNotaProdutoBarra()); + } + service.salvar(nps); - // atualiza o estoque se nao cancelada - if (ecfNota.isEcfNotaCancelada() == false) { - service.executar(sqls.toArray(new Sql[]{})); + // atualiza o estoque se nao cancelada + if (ecfNota.isEcfNotaCancelada() == false) { + service.executar(sqls.toArray(new Sql[]{})); + } } } catch (Exception ex) { if (em != null && em.getTransaction().isActive()) { @@ -138,99 +147,104 @@ public void setNfe(EcfNotaEletronica ecfNfe) throws RestException { EntityManager em = null; try { - emf = Conexao.getInstancia(); - em = emf.createEntityManager(); - em.getTransaction().begin(); - - // identifica o cliente - if (ecfNfe.getSisCliente() != null) { - SisCliente cliente = getCliente(em, ecfNfe.getSisCliente()); - ecfNfe.setSisCliente(cliente); - } - - // salva a nfe - ecfNfe.setId(0); - ecfNfe = (EcfNotaEletronica) service.salvar(em, ecfNfe); + FiltroTexto ft1 = new FiltroTexto("ecfNotaEletronicaChave", ECompara.IGUAL, ecfNfe.getEcfNotaEletronicaChave()); + EcfNotaEletronica aux = (EcfNotaEletronica) service.selecionar(ecfNfe, ft1); + + if (aux == null) { + emf = Conexao.getInstancia(); + em = emf.createEntityManager(); + em.getTransaction().begin(); + + // identifica o cliente + if (ecfNfe.getSisCliente() != null) { + SisCliente cliente = getCliente(em, ecfNfe.getSisCliente()); + ecfNfe.setSisCliente(cliente); + } - // atualiza o estoque - if (ecfNfe.getEcfNotaEletronicaStatus().equals(ENotaStatus.AUTORIZADO.toString())) { - TNfeProc produtos = NFe.xmlToObj(ecfNfe.getEcfNotaEletronicaXml(), TNfeProc.class); - List sqls = new ArrayList<>(); - for (TNFe.InfNFe.Det det : produtos.getNFe().getInfNFe().getDet()) { - // achando o produto - IFiltro filtro; - if (det.getProd().getCEAN() == null || det.getProd().getCEAN().equals("")) { - filtro = new FiltroNumero("prodProdutoId", ECompara.IGUAL, det.getProd().getCProd()); - } else { - filtro = new FiltroTexto("prodProdutoBarra", ECompara.IGUAL, det.getProd().getCEAN()); + // salva a nfe + ecfNfe.setId(0); + ecfNfe = (EcfNotaEletronica) service.salvar(em, ecfNfe); + + // atualiza o estoque + if (ecfNfe.getEcfNotaEletronicaStatus().equals(ENotaStatus.AUTORIZADO.toString())) { + TNfeProc produtos = NFe.xmlToObj(ecfNfe.getEcfNotaEletronicaXml(), TNfeProc.class); + List sqls = new ArrayList<>(); + for (TNFe.InfNFe.Det det : produtos.getNFe().getInfNFe().getDet()) { + // achando o produto + IFiltro filtro; + if (det.getProd().getCEAN() == null || det.getProd().getCEAN().equals("")) { + filtro = new FiltroNumero("prodProdutoId", ECompara.IGUAL, det.getProd().getCProd()); + } else { + filtro = new FiltroTexto("prodProdutoBarra", ECompara.IGUAL, det.getProd().getCEAN()); + } + ProdProduto prod = (ProdProduto) service.selecionar(new ProdProduto(), filtro); + // achando a embalagem usada na venda + FiltroTexto ft = new FiltroTexto("prodEmbalagemNome", ECompara.IGUAL, det.getProd().getUCom()); + ProdEmbalagem emb = (ProdEmbalagem) service.selecionar(new ProdEmbalagem(), ft); + double qtd = Double.valueOf(det.getProd().getQCom()); + // monta a atualizacao do estoque + getEstoque(sqls, qtd, emb, prod, ""); + } + em.getTransaction().commit(); + // remove do estoque + service.executar(sqls.toArray(new Sql[]{})); + + // salva o xml no arquivo + File xml = new File("nfe/" + ecfNfe.getEcfNotaEletronicaChave() + "-procNFe.xml"); + try (FileWriter fw = new FileWriter(xml)) { + fw.write(ecfNfe.getEcfNotaEletronicaXml()); + } catch (IOException io) { + log.error("Erro ao salvar o arquivo xml.", io); } - ProdProduto prod = (ProdProduto) service.selecionar(new ProdProduto(), filtro); - // achando a embalagem usada na venda - FiltroTexto ft = new FiltroTexto("prodEmbalagemNome", ECompara.IGUAL, det.getProd().getUCom()); - ProdEmbalagem emb = (ProdEmbalagem) service.selecionar(new ProdEmbalagem(), ft); - double qtd = Double.valueOf(det.getProd().getQCom()); - // monta a atualizacao do estoque - sqls.add(getEstoque(qtd, emb, prod)); - } - em.getTransaction().commit(); - // remove do estoque - service.executar(sqls.toArray(new Sql[]{})); - - // salva o xml no arquivo - File xml = new File("nfe/" + ecfNfe.getEcfNotaEletronicaChave() + "-procNFe.xml"); - try (FileWriter fw = new FileWriter(xml)) { - fw.write(ecfNfe.getEcfNotaEletronicaXml()); - } catch (IOException io) { - log.error("Erro ao salvar o arquivo xml.", io); - } - // salva o danfe no arquivo - File danfe = new File("nfe/" + ecfNfe.getEcfNotaEletronicaChave() + "-procNFe.pdf"); - try (FileOutputStream fos = new FileOutputStream(danfe)) { - byte[] pdf = NFe.getDanfe(ecfNfe.getEcfNotaEletronicaXml()); - fos.write(pdf); - fos.flush(); - } catch (IOException io) { - log.error("Erro ao salvar o arquivo danfe.", io); - } - } else if (ecfNfe.getEcfNotaEletronicaStatus().equals(ENotaStatus.CANCELADO.toString())) { - TNfeProc produtos = NFe.xmlToObj(ecfNfe.getEcfNotaEletronicaXml(), TNfeProc.class); - List sqls = new ArrayList<>(); - for (TNFe.InfNFe.Det det : produtos.getNFe().getInfNFe().getDet()) { - // achando o produto - IFiltro filtro; - if (det.getProd().getCEAN() == null || det.getProd().getCEAN().equals("")) { - filtro = new FiltroNumero("prodProdutoId", ECompara.IGUAL, det.getProd().getCProd()); - } else { - filtro = new FiltroTexto("prodProdutoBarra", ECompara.IGUAL, det.getProd().getCEAN()); + // salva o danfe no arquivo + File danfe = new File("nfe/" + ecfNfe.getEcfNotaEletronicaChave() + "-procNFe.pdf"); + try (FileOutputStream fos = new FileOutputStream(danfe)) { + byte[] pdf = NFe.getDanfe(ecfNfe.getEcfNotaEletronicaXml()); + fos.write(pdf); + fos.flush(); + } catch (IOException io) { + log.error("Erro ao salvar o arquivo danfe.", io); + } + } else if (ecfNfe.getEcfNotaEletronicaStatus().equals(ENotaStatus.CANCELADO.toString())) { + TNfeProc produtos = NFe.xmlToObj(ecfNfe.getEcfNotaEletronicaXml(), TNfeProc.class); + List sqls = new ArrayList<>(); + for (TNFe.InfNFe.Det det : produtos.getNFe().getInfNFe().getDet()) { + // achando o produto + IFiltro filtro; + if (det.getProd().getCEAN() == null || det.getProd().getCEAN().equals("")) { + filtro = new FiltroNumero("prodProdutoId", ECompara.IGUAL, det.getProd().getCProd()); + } else { + filtro = new FiltroTexto("prodProdutoBarra", ECompara.IGUAL, det.getProd().getCEAN()); + } + ProdProduto prod = (ProdProduto) service.selecionar(new ProdProduto(), filtro); + // achando a embalagem usada na venda + FiltroTexto ft = new FiltroTexto("prodEmbalagemNome", ECompara.IGUAL, det.getProd().getUCom()); + ProdEmbalagem emb = (ProdEmbalagem) service.selecionar(new ProdEmbalagem(), ft); + double qtd = Double.valueOf(det.getProd().getQCom()); + // devolve ao estoque + getEstoque(sqls, -1 * qtd, emb, prod, ""); + } + em.getTransaction().commit(); + // remove do estoque + service.executar(sqls.toArray(new Sql[]{})); + + // salva o xml no arquivo + File xml = new File("nfe/" + ecfNfe.getEcfNotaEletronicaChave() + "-procCanNFe.xml"); + try (FileWriter fw = new FileWriter(xml)) { + fw.write(ecfNfe.getEcfNotaEletronicaXmlCancelado()); + } catch (IOException io) { + log.error("Erro ao salvar o arquivo xml de cancelamento.", io); + } + } else if (ecfNfe.getEcfNotaEletronicaStatus().equals(ENotaStatus.INUTILIZADO.toString())) { + em.getTransaction().commit(); + // salva o xml no arquivo + File xml = new File("nfe/" + ecfNfe.getEcfNotaEletronicaChave() + "-procInutNFe.xml"); + try (FileWriter fw = new FileWriter(xml)) { + fw.write(ecfNfe.getEcfNotaEletronicaXml()); + } catch (IOException io) { + log.error("Erro ao salvar o arquivo xml de inutilizacao.", io); } - ProdProduto prod = (ProdProduto) service.selecionar(new ProdProduto(), filtro); - // achando a embalagem usada na venda - FiltroTexto ft = new FiltroTexto("prodEmbalagemNome", ECompara.IGUAL, det.getProd().getUCom()); - ProdEmbalagem emb = (ProdEmbalagem) service.selecionar(new ProdEmbalagem(), ft); - double qtd = Double.valueOf(det.getProd().getQCom()); - // devolve ao estoque - sqls.add(getEstoque(-1 * qtd, emb, prod)); - } - em.getTransaction().commit(); - // remove do estoque - service.executar(sqls.toArray(new Sql[]{})); - - // salva o xml no arquivo - File xml = new File("nfe/" + ecfNfe.getEcfNotaEletronicaChave() + "-procCanNFe.xml"); - try (FileWriter fw = new FileWriter(xml)) { - fw.write(ecfNfe.getEcfNotaEletronicaXmlCancelado()); - } catch (IOException io) { - log.error("Erro ao salvar o arquivo xml de cancelamento.", io); - } - } else if (ecfNfe.getEcfNotaEletronicaStatus().equals(ENotaStatus.INUTILIZADO.toString())) { - em.getTransaction().commit(); - // salva o xml no arquivo - File xml = new File("nfe/" + ecfNfe.getEcfNotaEletronicaChave() + "-procInutNFe.xml"); - try (FileWriter fw = new FileWriter(xml)) { - fw.write(ecfNfe.getEcfNotaEletronicaXml()); - } catch (IOException io) { - log.error("Erro ao salvar o arquivo xml de inutilizacao.", io); } } } catch (Exception ex) { @@ -282,6 +296,27 @@ public void setVenda(EcfVenda venda) throws RestException { List vps = venda.getEcfVendaProdutos(); List pags = venda.getEcfPagamentos(); List trocas = venda.getEcfTrocas(); + List sqls = new ArrayList<>(); + + // caso a venda esteja cancelada e ja estava salva no servidor + if (venda.getEcfVendaCancelada()) { + // filtro pra deletar a venda ja salva antes + FiltroObjeto fo = new FiltroObjeto("ecfImpressora", ECompara.IGUAL, imp); + FiltroNumero fn = new FiltroNumero("ecfVendaCcf", ECompara.IGUAL, venda.getEcfVendaCcf()); + FiltroNumero fn1 = new FiltroNumero("ecfVendaCoo", ECompara.IGUAL, venda.getEcfVendaCoo()); + GrupoFiltro gf = new GrupoFiltro(EJuncao.E, new IFiltro[]{fo, fn, fn1}); + // executa o comando + Sql sql = new Sql(venda, EComandoSQL.EXCLUIR, gf); + List resp = service.executar(sql); + // caso ja exista e tenha deletado, remove do estoque + if (resp.get(0) == 1) { + for (EcfVendaProduto vp : vps) { + if (!vp.getEcfVendaProdutoCancelado()) { + getEstoque(sqls, vp.getEcfVendaProdutoQuantidade() * -1, vp.getProdEmbalagem(), vp.getProdProduto(), vp.getEcfVendaProdutoBarra()); + } + } + } + } // salva a venda venda.setId(0); @@ -296,22 +331,29 @@ public void setVenda(EcfVenda venda) throws RestException { vp.setEcfVenda(venda); vp = (EcfVendaProduto) service.salvar(em, vp); - if (!vp.getEcfVendaProdutoCancelado()) { - service.executar(em, getEstoque(vp.getEcfVendaProdutoQuantidade(), vp.getProdEmbalagem(), vp.getProdProduto())); + if (!venda.getEcfVendaCancelada() && !vp.getEcfVendaProdutoCancelado()) { + getEstoque(sqls, vp.getEcfVendaProdutoQuantidade(), vp.getProdEmbalagem(), vp.getProdProduto(), vp.getEcfVendaProdutoBarra()); } } - // salva os pagamentos - for (EcfPagamento pag : pags) { - pag.setEcfVenda(venda); - salvarPagamento(em, pag); + // atualiza com as instrucoes SQL. + for (Sql sql : sqls) { + service.executar(em, sql); } - // salva as trocas - if (trocas != null) { - for (EcfTroca troca : trocas) { - troca.setEcfVenda(venda); - salvarTroca(em, troca); + if (!venda.getEcfVendaCancelada()) { + // salva os pagamentos + for (EcfPagamento pag : pags) { + pag.setEcfVenda(venda); + salvarPagamento(em, pag); + } + + // salva as trocas + if (trocas != null) { + for (EcfTroca troca : trocas) { + troca.setEcfVenda(venda); + salvarTroca(em, troca); + } } } @@ -347,56 +389,62 @@ public void setReducaoZ(EcfZ ecfZ) throws RestException { EntityManager em = null; try { - emf = Conexao.getInstancia(); - em = emf.createEntityManager(); - em.getTransaction().begin(); - // pega a impressora correta no sistema EcfImpressora imp = getImp(ecfZ.getEcfImpressora().getEcfImpressoraSerie()); - ecfZ.setEcfImpressora(imp); - - // guarda os totais e vendas e docs - List totais = ecfZ.getEcfZTotais(); - List docs = ecfZ.getEcfDocumentos(); - - // salva a reduzaoZ - ecfZ.setId(0); - ecfZ.setEcfZTotais(null); - ecfZ.setEcfVendas(null); - ecfZ.setEcfDocumentos(null); - ecfZ = (EcfZ) service.salvar(em, ecfZ); - - // salva os totais - for (EcfZTotais tot : totais) { - tot.setEcfZ(ecfZ); - tot.setId(0); - service.salvar(em, tot); - } - // salva os documentos - for (EcfDocumento doc : docs) { - doc.setEcfImpressora(imp); - doc.setEcfZ(ecfZ); - doc.setId(0); - service.salvar(em, doc); - } + // valida se ja existe + FiltroObjeto fo = new FiltroObjeto("ecfImpressora", ECompara.IGUAL, imp); + FiltroNumero fn = new FiltroNumero("ecfZCrz", ECompara.IGUAL, ecfZ.getEcfZCrz()); + GrupoFiltro gf = new GrupoFiltro(EJuncao.E, new IFiltro[]{fo, fn}); + EcfZ aux = (EcfZ) service.selecionar(ecfZ, gf); + + if (aux == null) { + emf = Conexao.getInstancia(); + em = emf.createEntityManager(); + em.getTransaction().begin(); + + // guarda os totais e vendas e docs + List totais = ecfZ.getEcfZTotais(); + List docs = ecfZ.getEcfDocumentos(); + + // salva a reduzaoZ + ecfZ.setId(0); + ecfZ.setEcfImpressora(imp); + ecfZ.setEcfZTotais(null); + ecfZ.setEcfVendas(null); + ecfZ.setEcfDocumentos(null); + ecfZ = (EcfZ) service.salvar(em, ecfZ); + + // salva os totais + for (EcfZTotais tot : totais) { + tot.setEcfZ(ecfZ); + tot.setId(0); + service.salvar(em, tot); + } - // atualiza as vendas - Calendar cal = Calendar.getInstance(); - cal.setTime(ecfZ.getEcfZMovimento()); - cal.add(Calendar.DAY_OF_MONTH, 1); - Date fim = cal.getTime(); + // salva os documentos + for (EcfDocumento doc : docs) { + doc.setEcfImpressora(imp); + doc.setEcfZ(ecfZ); + doc.setId(0); + service.salvar(em, doc); + } - FiltroObjeto fo = new FiltroObjeto("ecfImpressora", ECompara.IGUAL, imp); - FiltroData fd = new FiltroData("ecfVendaData", ECompara.MAIOR_IGUAL, ecfZ.getEcfZMovimento()); - FiltroData fd1 = new FiltroData("ecfVendaData", ECompara.MENOR, fim); - GrupoFiltro gf = new GrupoFiltro(EJuncao.E, new IFiltro[]{fo, fd, fd1}); - ParametroObjeto po = new ParametroObjeto("ecfZ", ecfZ); + // atualiza as vendas + Calendar cal = Calendar.getInstance(); + cal.setTime(ecfZ.getEcfZMovimento()); + cal.add(Calendar.DAY_OF_MONTH, 1); + Date fim = cal.getTime(); - Sql sql = new Sql(new EcfVenda(), EComandoSQL.ATUALIZAR, gf, po); - service.executar(em, sql); + FiltroData fd = new FiltroData("ecfVendaData", ECompara.MAIOR_IGUAL, ecfZ.getEcfZMovimento()); + FiltroData fd1 = new FiltroData("ecfVendaData", ECompara.MENOR, fim); + GrupoFiltro gf1 = new GrupoFiltro(EJuncao.E, new IFiltro[]{fo, fd, fd1}); + ParametroObjeto po = new ParametroObjeto("ecfZ", ecfZ); - em.getTransaction().commit(); + Sql sql = new Sql(new EcfVenda(), EComandoSQL.ATUALIZAR, gf1, po); + service.executar(em, sql); + em.getTransaction().commit(); + } } catch (Exception ex) { if (em != null && em.getTransaction().isActive()) { em.getTransaction().rollback(); @@ -492,11 +540,12 @@ private SisCliente getCliente(EntityManager em, SisCliente sisCliente) { * @param qtd a quantidade de produtos vendidos. * @param emb o tipo de embalagem usada na venda. * @param prod o produto que foi vendido. + * @param barra o codigo escolhido na hora da venda. * @return uma instrucao de SQL no formato de objeto para ser executada. - * @throws OpenPdvException dispara caso nao consiga gerar o sql de + * @throws CoreException dispara caso nao consiga gerar o sql de * atualizacao. */ - private Sql getEstoque(double qtd, ProdEmbalagem emb, ProdProduto prod) throws OpenPdvException { + private void getEstoque(List sqls, double qtd, ProdEmbalagem emb, ProdProduto prod, String barra) throws OpenPdvException { // fatorando a quantida no estoque if (emb.getProdEmbalagemId() != prod.getProdEmbalagem().getProdEmbalagemId()) { qtd *= emb.getProdEmbalagemUnidade(); @@ -506,6 +555,19 @@ private Sql getEstoque(double qtd, ProdEmbalagem emb, ProdProduto prod) throws O // atualiza o estoque ParametroFormula pf = new ParametroFormula("prodProdutoEstoque", -1 * qtd); FiltroNumero fn1 = new FiltroNumero("prodProdutoId", ECompara.IGUAL, prod.getId()); - return new Sql(new ProdProduto(), EComandoSQL.ATUALIZAR, fn1, pf); + Sql sql = new Sql(new ProdProduto(), EComandoSQL.ATUALIZAR, fn1, pf); + sqls.add(sql); + + // remove estoque da grade caso o produto tenha + if (prod.getProdGrades() != null) { + // formando os parametros e filtros + ParametroFormula pf2 = new ParametroFormula("prodGradeEstoque", -1 * qtd); + FiltroObjeto fo = new FiltroObjeto("prodProduto", ECompara.IGUAL, prod); + FiltroTexto ft = new FiltroTexto("prodGradeBarra", ECompara.IGUAL, barra); + GrupoFiltro gf1 = new GrupoFiltro(EJuncao.E, new IFiltro[]{fo, ft}); + // busca o item + Sql sql1 = new Sql(new ProdGrade(), EComandoSQL.ATUALIZAR, gf1, pf2); + sqls.add(sql1); + } } } diff --git a/src/br/com/openpdv/visao/core/Autenticacao.java b/src/br/com/openpdv/visao/core/Autenticacao.java index db87226..adeef9f 100755 --- a/src/br/com/openpdv/visao/core/Autenticacao.java +++ b/src/br/com/openpdv/visao/core/Autenticacao.java @@ -3,8 +3,9 @@ import br.com.openpdv.controlador.comandos.ComandoRecuperarVenda; import br.com.openpdv.controlador.permissao.Login; import br.com.phdss.ECF; -import br.com.phdss.EComandoECF; -import br.com.phdss.EEstadoECF; +import br.com.phdss.fiscal.ACBR; +import br.com.phdss.EComando; +import br.com.phdss.EEstado; import java.awt.Toolkit; import java.awt.event.KeyEvent; import javax.swing.*; @@ -307,14 +308,14 @@ private void entrar() { try { Login.logar(txtOperadorUsuario.getText(), senhaOp); Caixa.getInstancia().getLblOperador().setText("Operador : " + txtOperadorUsuario.getText().toUpperCase()); - Caixa.getInstancia().getLblCaixa().setText("Caixa : " + ECF.enviar(EComandoECF.ECF_NumECF)[1]); + Caixa.getInstancia().getLblCaixa().setText("Caixa : " + ECF.getInstancia().enviar(EComando.ECF_NumECF)[1]); txtOperadorUsuario.setText(""); pswOperadorSenha.setText(""); Caixa.getInstancia().setJanela(null); dispose(); - EEstadoECF estado = ECF.validarEstado(); - if (estado == EEstadoECF.estVenda || estado == EEstadoECF.estPagamento) { + EEstado estado = ECF.getInstancia().validarEstado(); + if (estado == EEstado.estVenda || estado == EEstado.estPagamento) { new ComandoRecuperarVenda().executar(); Caixa.getInstancia().modoAberto(); } else { diff --git a/src/br/com/openpdv/visao/core/Caixa.java b/src/br/com/openpdv/visao/core/Caixa.java index afeddd8..d61bbb7 100755 --- a/src/br/com/openpdv/visao/core/Caixa.java +++ b/src/br/com/openpdv/visao/core/Caixa.java @@ -4,7 +4,7 @@ import br.com.openpdv.controlador.core.AsyncCallback; import br.com.openpdv.controlador.core.CoreService; import br.com.openpdv.controlador.core.AsyncDoubleBack; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.controlador.permissao.Login; import br.com.openpdv.modelo.core.EModo; import br.com.openpdv.modelo.core.OpenPdvException; @@ -28,7 +28,8 @@ import br.com.openpdv.visao.principal.LeiturasZ; import br.com.openpdv.visao.venda.Precos; import br.com.phdss.ECF; -import br.com.phdss.EComandoECF; +import br.com.phdss.EComando; +import br.com.phdss.IECF; import br.com.phdss.TEF; import br.com.phdss.controlador.PAF; import br.com.phdss.modelo.anexo.v.AnexoV; @@ -66,6 +67,7 @@ public class Caixa extends JFrame { private JOptionPane option; private DefaultListModel bobina; private KeyEventPostProcessor teclas; + private IECF ecf; /** * Variavel de sincronismo dos precos adicionais. */ @@ -208,12 +210,13 @@ private Caixa() { ImageIcon logo = new ImageIcon("conf" + System.getProperty("file.separator") + "logo.png"); lblLivre.setIcon(logo); modo = EModo.OFF; + ecf = ECF.getInstancia(); // mapeando as teclas apertadas teclas = new KeyEventPostProcessor() { @Override public boolean postProcessKeyEvent(KeyEvent e) { - if (e.getKeyCode() == KeyEvent.VK_F1) { // Sobre + if (e.getKeyCode() == KeyEvent.VK_F1 && mnuSobre.isEnabled()) { // Sobre mnuSobreMouseClicked(null); } else if (e.getKeyCode() == KeyEvent.VK_F2 && mnuPrincipal.isEnabled() && janela == null) { // Menu Principal mnuPrincipal.doClick(); @@ -228,21 +231,21 @@ public boolean postProcessKeyEvent(KeyEvent e) { mnuFiscal.doClick(); } else if (e.getKeyCode() == KeyEvent.VK_F4 && mnuNota.isEnabled()) { // Nota Fiscal mnuNota.doClick(); - } else if (e.getKeyCode() == KeyEvent.VK_F5) { // Pesquisa + } else if (e.getKeyCode() == KeyEvent.VK_F5 && mnuPesquisa.isEnabled()) { // Pesquisa mnuPesquisaMouseClicked(null); - } else if (e.getKeyCode() == KeyEvent.VK_F6) { // Menu Gaveta + } else if (e.getKeyCode() == KeyEvent.VK_F6 && mnuGaveta.isEnabled()) { // Menu Gaveta mnuGavetaMouseClicked(null); - } else if (e.getKeyCode() == KeyEvent.VK_F7 && mnuAbrirVenda.isEnabled()) { // Abrir Venda + } else if (e.getKeyCode() == KeyEvent.VK_F7 && mnuVenda.isEnabled() && mnuAbrirVenda.isEnabled()) { // Abrir Venda mnuAbrirVendaActionPerformed(null); - } else if (e.getKeyCode() == KeyEvent.VK_F8 && mnuFecharVenda.isEnabled()) { // Fechar Venda + } else if (e.getKeyCode() == KeyEvent.VK_F8 && mnuVenda.isEnabled() && mnuFecharVenda.isEnabled()) { // Fechar Venda mnuFecharVendaActionPerformed(null); - } else if (e.getKeyCode() == KeyEvent.VK_F9 && mnuCancelarItem.isEnabled()) { // Cancelar Item + } else if (e.getKeyCode() == KeyEvent.VK_F9 && mnuVenda.isEnabled() && mnuCancelarItem.isEnabled()) { // Cancelar Item mnuCancelarItemActionPerformed(null); - } else if (e.getKeyCode() == KeyEvent.VK_F10 && mnuCancelarVenda.isEnabled()) { // Cancelar Venda + } else if (e.getKeyCode() == KeyEvent.VK_F10 && mnuVenda.isEnabled() && mnuCancelarVenda.isEnabled()) { // Cancelar Venda mnuCancelarVendaActionPerformed(null); - } else if (e.getKeyCode() == KeyEvent.VK_F11) { // Identificar + } else if (e.getKeyCode() == KeyEvent.VK_F11 && mnuIdentificar.isEnabled()) { // Identificar mnuIdentificarMouseClicked(null); - } else if (e.getKeyCode() == KeyEvent.VK_F12) { // Sair + } else if (e.getKeyCode() == KeyEvent.VK_F12 && mnuSair.isEnabled()) { // Sair mnuSairMouseClicked(null); } else if (e.getKeyCode() == KeyEvent.VK_ESCAPE) { // ESC if (janela != null && !(janela instanceof Aguarde) && !(janela instanceof Autenticacao)) { @@ -1140,22 +1143,22 @@ private void mnuSobreKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_ }//GEN-LAST:event_mnuSobreKeyPressed private void mnuLMFCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mnuLMFCActionPerformed - janela = PAF_MF.getInstancia(EComandoECF.ECF_PafMf_Lmfc_Impressao); + janela = PAF_MF.getInstancia(EComando.ECF_PafMf_Lmfc_Impressao); janela.setVisible(true); }//GEN-LAST:event_mnuLMFCActionPerformed private void mnuLMFSActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mnuLMFSActionPerformed - janela = PAF_MF.getInstancia(EComandoECF.ECF_PafMf_Lmfs_Impressao); + janela = PAF_MF.getInstancia(EComando.ECF_PafMf_Lmfs_Impressao); janela.setVisible(true); }//GEN-LAST:event_mnuLMFSActionPerformed private void mnuEspelhoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mnuEspelhoActionPerformed - janela = PAF_MF.getInstancia(EComandoECF.ECF_PafMf_Mfd_Espelho); + janela = PAF_MF.getInstancia(EComando.ECF_PafMf_Mfd_Espelho); janela.setVisible(true); }//GEN-LAST:event_mnuEspelhoActionPerformed private void mnuArquivoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_mnuArquivoActionPerformed - janela = PAF_MF.getInstancia(EComandoECF.ECF_PafMf_Mfd_Cotepe1704); + janela = PAF_MF.getInstancia(EComando.ECF_PafMf_Mfd_Cotepe1704); janela.setVisible(true); }//GEN-LAST:event_mnuArquivoActionPerformed @@ -1163,7 +1166,7 @@ private void mnuSuprimentoActionPerformed(java.awt.event.ActionEvent evt) {//GEN janela = Gerente.getInstancia(new AsyncCallback() { @Override public void sucesso(Integer resultado) { - ECF.enviar(EComandoECF.ECF_AbreGaveta); + ecf.enviar(EComando.ECF_AbreGaveta); String texto = JOptionPane.showInputDialog(caixa, "Digite o valor do suprimento.", "Suprimento", JOptionPane.OK_CANCEL_OPTION); if (texto != null) { @@ -1171,9 +1174,9 @@ public void sucesso(Integer resultado) { try { double valor = Double.valueOf(texto); String[] param = new String[]{valor + "", "", Util.getConfig().get("ecf.suprimento"), "DINHEIRO"}; - String[] resp = ECF.enviar(EComandoECF.ECF_Suprimento, param); + String[] resp = ecf.enviar(EComando.ECF_Suprimento, param); - if (ECF.OK.equals(resp[0])) { + if (IECF.OK.equals(resp[0])) { new ComandoSalvarDocumento("CN").executar(); } else { log.error("Não foi possivel realizar o Suprimento! -> " + resp[1]); @@ -1199,7 +1202,7 @@ private void mnuSangriaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FI janela = Gerente.getInstancia(new AsyncCallback() { @Override public void sucesso(Integer resultado) { - ECF.enviar(EComandoECF.ECF_AbreGaveta); + ecf.enviar(EComando.ECF_AbreGaveta); String texto = JOptionPane.showInputDialog(caixa, "Digite o valor da sangria.", "Sangria", JOptionPane.OK_CANCEL_OPTION); if (texto != null) { @@ -1207,9 +1210,9 @@ public void sucesso(Integer resultado) { try { double valor = Double.valueOf(texto); String[] param = new String[]{valor + "", "", Util.getConfig().get("ecf.sangria"), "DINHEIRO"}; - String[] resp = ECF.enviar(EComandoECF.ECF_Sangria, param); + String[] resp = ecf.enviar(EComando.ECF_Sangria, param); - if (ECF.OK.equals(resp[0])) { + if (IECF.OK.equals(resp[0])) { new ComandoSalvarDocumento("CN").executar(); } else { log.error("Não foi possivel realizar a Sangria! -> " + resp[1]); @@ -1464,7 +1467,7 @@ private void mnuAbrirVendaActionPerformed(java.awt.event.ActionEvent evt) {//GEN // valida o serial do ECF try { - ECF.validarSerial(PAF.AUXILIAR.getProperty("ecf.serie").split(";")[0]); + ecf.validarSerial(PAF.AUXILIAR.getProperty("ecf.serie").split(";")[0]); } catch (Exception ex) { permite = false; log.error("Problemas ao validar o serial.", ex); @@ -1474,10 +1477,10 @@ private void mnuAbrirVendaActionPerformed(java.awt.event.ActionEvent evt) {//GEN // valida o GT do ECF try { double gt = Double.valueOf(PAF.AUXILIAR.getProperty("ecf.gt").replace(",", ".")); - double novoGT = ECF.validarGT(gt); + double novoGT = ecf.validarGT(gt); if (novoGT > 0.00) { PAF.AUXILIAR.setProperty("ecf.gt", Util.formataNumero(novoGT, 1, 2, false)); - PAF.criptografar(); + Util.criptografar(null, PAF.AUXILIAR); } } catch (Exception ex) { permite = false; @@ -1493,9 +1496,9 @@ private void mnuAbrirVendaActionPerformed(java.awt.event.ActionEvent evt) {//GEN @Override public void sucesso(SisCliente resultado) { if (resultado != null && resultado.getSisClienteId() > 0) { - String[] resp = ECF.enviar(EComandoECF.ECF_IdentificaConsumidor, + String[] resp = ecf.enviar(EComando.ECF_IdentificaConsumidor, resultado.getSisClienteDoc(), resultado.getSisClienteNome(), resultado.getSisClienteEndereco()); - if (ECF.ERRO.equals(resp[0])) { + if (ecf.ERRO.equals(resp[0])) { falha(new Exception(resp[1])); } } @@ -1628,12 +1631,12 @@ private void mnuFecharVendaActionPerformed(java.awt.event.ActionEvent evt) {//GE }//GEN-LAST:event_mnuFecharVendaActionPerformed private void mnuGavetaMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_mnuGavetaMouseClicked - if (mnuVenda.isEnabled() && janela == null) { + if (mnuGaveta.isEnabled() && janela == null) { janela = Gerente.getInstancia(new AsyncCallback() { @Override public void sucesso(Integer resultado) { - String[] resp = ECF.enviar(EComandoECF.ECF_AbreGaveta); - if (ECF.ERRO.equals(resp[0])) { + String[] resp = ecf.enviar(EComando.ECF_AbreGaveta); + if (IECF.ERRO.equals(resp[0])) { log.error("Erro ao abrir a gaveta. -> " + resp[1]); JOptionPane.showMessageDialog(caixa, "Não foi possível abrir a gaveta!", "OpenPDV", JOptionPane.INFORMATION_MESSAGE); } @@ -1730,15 +1733,15 @@ public void run() { try { TEF.bloquear(true); - ECF.enviar(EComandoECF.ECF_FechaRelatorio); - ECF.enviar(EComandoECF.ECF_AbreRelatorioGerencial, Util.getConfig().get("ecf.reltef")); - TEF.imprimirVias(TEF.getDados(), EComandoECF.ECF_LinhaRelatorioGerencial); - ECF.enviar(EComandoECF.ECF_FechaRelatorio); + ecf.enviar(EComando.ECF_FechaRelatorio); + ecf.enviar(EComando.ECF_AbreRelatorioGerencial, Util.getConfig().get("ecf.reltef")); + TEF.imprimirVias(TEF.getDados(), EComando.ECF_LinhaRelatorioGerencial); + ecf.enviar(EComando.ECF_FechaRelatorio); TEF.bloquear(false); TEF.confirmarTransacao(id, true); } catch (Exception ex) { TEF.bloquear(false); - ECF.enviar(EComandoECF.ECF_FechaRelatorio); + ecf.enviar(EComando.ECF_FechaRelatorio); TEF.confirmarTransacao(id, false); throw new Exception("Impressora não responde!"); } finally { @@ -2087,7 +2090,6 @@ public void statusMenus(EModo atual) { mnuNota.setEnabled(false); mnuAbrirVenda.setEnabled(false); mnuCupomPresente.setEnabled(false); - mnuGaveta.setEnabled(false); if (venda.getSisCliente() != null) { mnuIdentificar.setEnabled(false); } @@ -2098,7 +2100,6 @@ public void statusMenus(EModo atual) { mnuNota.setEnabled(false); mnuVenda.setEnabled(false); mnuIdentificar.setEnabled(false); - mnuGaveta.setEnabled(false); break; case DISPONIVEL: mnuFecharVenda.setEnabled(false); @@ -2121,7 +2122,6 @@ public void statusMenus(EModo atual) { mnuPAF.setEnabled(false); mnuParamConfiguracao.setEnabled(false); // outros - mnuGaveta.setEnabled(false); mnuVenda.setEnabled(false); mnuIdentificar.setEnabled(false); break; @@ -2138,7 +2138,7 @@ public void statusMenus(EModo atual) { } // somente mostra o Cat52 caso esteja setado no config - if (!Boolean.valueOf(Util.getConfig().get("ecf.cat52"))) { + if (Util.getConfig().get("ecf.cat52") == null) { mnuCat52.setVisible(false); } } diff --git a/src/br/com/openpdv/visao/core/Sobre.java b/src/br/com/openpdv/visao/core/Sobre.java index 1aa49e4..bd97907 100755 --- a/src/br/com/openpdv/visao/core/Sobre.java +++ b/src/br/com/openpdv/visao/core/Sobre.java @@ -1,6 +1,7 @@ package br.com.openpdv.visao.core; -import br.com.openpdv.controlador.core.Util; +import br.com.openpdv.controlador.core.Conexao; +import br.com.phdss.Util; import br.com.phdss.controlador.PAF; import com.sun.jersey.api.client.Client; import com.sun.jersey.api.client.WebResource; @@ -358,7 +359,7 @@ public void run() { if (local != null && !local.equals("")) { // enviando o auxiliar local e recebendo o novo do servidor - Client c = Util.getClientRest(); + Client c = Conexao.getClientRest(); WebResource wr = c.resource(Util.getConfig().get("openpdv.url")); String remoto = wr.type(MediaType.TEXT_PLAIN).accept(MediaType.TEXT_PLAIN).put(String.class, local); diff --git a/src/br/com/openpdv/visao/core/Splash.java b/src/br/com/openpdv/visao/core/Splash.java index c023036..e7a419c 100755 --- a/src/br/com/openpdv/visao/core/Splash.java +++ b/src/br/com/openpdv/visao/core/Splash.java @@ -4,16 +4,16 @@ import br.com.openpdv.controlador.comandos.ComandoReceberDados; import br.com.openpdv.controlador.core.Conexao; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.EModo; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.core.filtro.*; import br.com.openpdv.modelo.ecf.EcfImpressora; import br.com.openpdv.modelo.sistema.SisEmpresa; import br.com.phdss.ECF; -import br.com.phdss.EComandoECF; +import br.com.phdss.EComando; +import br.com.phdss.IECF; import br.com.phdss.TEF; -import static br.com.phdss.TEF.lerArquivo; import br.com.phdss.controlador.PAF; import com.sun.jersey.api.container.filter.GZIPContentEncodingFilter; import com.sun.jersey.api.core.PackagesResourceConfig; @@ -42,8 +42,9 @@ */ public class Splash extends JFrame { - private static Logger log; private static Splash splash; + private Logger log; + private IECF ecf; /** * Construtor padrao. @@ -69,8 +70,8 @@ public static void main(String[] args) { break; } } - } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { - log.error("Problemas ao mudar LaF.", ex); + } catch (Exception ex) { + // Nao mudou o visual. } // abre uma thread para iniciar a aplicacao @@ -249,7 +250,7 @@ public boolean accept(File dir, String name) { break; } } - dados = PAF.descriptar(dados); + dados = Util.descriptar(dados); // executa as instrucoes for (String sql : dados.split("\n")) { @@ -275,12 +276,12 @@ public boolean accept(File dir, String name) { boolean login = true; try { splash.pgBarra.setString("Lendo arquivo auxiliar..."); - PAF.descriptografar(); + Util.descriptografar(null, PAF.AUXILIAR); splash.pgBarra.setValue(30); } catch (Exception ex) { // caso tenha algum problema tenta recuperar usando o backup try { - PAF.descriptografar("conf" + System.getProperty("file.separator") + "auxiliar.bak", PAF.AUXILIAR); + Util.descriptografar("conf" + System.getProperty("file.separator") + "auxiliar.bak", PAF.AUXILIAR); Calendar cal = Calendar.getInstance(); cal.setTime(new Date()); PAF.AUXILIAR.setProperty("out.recebimento", Util.getData(cal.getTime())); @@ -326,11 +327,14 @@ public boolean accept(File dir, String name) { // valida a comunicao e ativacao com o ECF boolean ecfAtivo = false; try { + ECF.setInstancia(Util.getConfig().get("ecf.marca")); + ecf = ECF.getInstancia(); + splash.pgBarra.setString("Conectando no ECF..."); - ECF.conectar(Util.getConfig().get("ecf.servidor"), Integer.valueOf(Util.getConfig().get("ecf.porta"))); + ecf.conectar(Util.getConfig().get("ecf.porta"), Integer.valueOf(Util.getConfig().get("ecf.velocidade")), Integer.valueOf(Util.getConfig().get("ecf.modelo"))); splash.pgBarra.setString("Ativando o ECF..."); - ECF.ativar(); + ecf.ativar(); splash.pgBarra.setValue(50); ecfAtivo = true; } catch (Exception ex) { @@ -349,7 +353,7 @@ public boolean accept(File dir, String name) { if (Boolean.valueOf(Util.getConfig().get("pag.cartao"))) { try { - String arquivo = lerArquivo(TEF.getRespIntPos001(), 0); + String arquivo = TEF.lerArquivo(TEF.getRespIntPos001(), 0); boolean pendente = false; if (arquivo != null) { Map mapa = TEF.iniToMap(arquivo); @@ -382,8 +386,8 @@ public boolean accept(File dir, String name) { splash.pgBarra.setValue(70); GrupoFiltro gf = new GrupoFiltro(); if (ecfAtivo) { - String[] resp = ECF.enviar(EComandoECF.ECF_NumSerie); - if (ECF.OK.equals(resp[0])) { + String[] resp = ecf.enviar(EComando.ECF_NumSerie); + if (IECF.OK.equals(resp[0])) { FiltroTexto ft = new FiltroTexto("ecfImpressoraSerie", ECompara.IGUAL, resp[1]); gf.add(ft, EJuncao.E); } @@ -410,7 +414,7 @@ public boolean accept(File dir, String name) { // valida o serial do ECF try { splash.pgBarra.setString("Validando Nº Série do ECF..."); - ECF.validarSerial(PAF.AUXILIAR.getProperty("ecf.serie").split(";")[0]); + ecf.validarSerial(PAF.AUXILIAR.getProperty("ecf.serie").split(";")[0]); } catch (Exception ex) { String msg = PAF.AUXILIAR.size() == 0 ? "Número de Série do arquivo auxiliar não reconhecido!" : ex.getMessage(); login = false; @@ -423,10 +427,10 @@ public boolean accept(File dir, String name) { splash.pgBarra.setString("Validando GT do ECF..."); splash.pgBarra.setValue(80); double gt = Double.valueOf(PAF.AUXILIAR.getProperty("ecf.gt").replace(",", ".")); - double novoGT = ECF.validarGT(gt); + double novoGT = ecf.validarGT(gt); if (novoGT > 0.00) { PAF.AUXILIAR.setProperty("ecf.gt", Util.formataNumero(novoGT, 1, 2, false)); - PAF.criptografar(); + Util.criptografar(null, PAF.AUXILIAR); JOptionPane.showMessageDialog(splash, "Valor do GT recomposto no arquivo auxiliar.", "OpenPDV", JOptionPane.WARNING_MESSAGE); } } catch (Exception ex) { @@ -447,8 +451,8 @@ public boolean accept(File dir, String name) { // recupera a data do ECF ou do sistema Date atual = new Date(); if (ecfAtivo) { - String[] resp = ECF.enviar(EComandoECF.ECF_DataHora); - if (ECF.OK.equals(resp[0])) { + String[] resp = ecf.enviar(EComando.ECF_DataHora); + if (IECF.OK.equals(resp[0])) { try { atual = new SimpleDateFormat("dd/MM/yy HH:mm:ss").parse(resp[1]); } catch (ParseException ex) { @@ -482,12 +486,12 @@ public boolean accept(File dir, String name) { caixa.statusMenus(EModo.OFF); caixa.setJanela(Autenticacao.getInstancia()); - switch (ECF.validarEstado()) { + switch (ecf.validarEstado()) { case estNaoInicializada: case estDesconhecido: throw new OpenPdvException("Estado do ECF não inicializado ou desconhecido."); case estRelatorio: - ECF.enviar(EComandoECF.ECF_CorrigeEstadoErro); + ecf.enviar(EComando.ECF_CorrigeEstadoErro); break; case estBloqueada: login = false; diff --git a/src/br/com/openpdv/visao/fiscal/PAF_ArquivoCat52.java b/src/br/com/openpdv/visao/fiscal/PAF_ArquivoCat52.java index 8edd849..a72f6ed 100644 --- a/src/br/com/openpdv/visao/fiscal/PAF_ArquivoCat52.java +++ b/src/br/com/openpdv/visao/fiscal/PAF_ArquivoCat52.java @@ -2,7 +2,7 @@ import br.com.openpdv.controlador.comandos.ComandoGerarCat52; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.core.filtro.ECompara; import br.com.openpdv.modelo.core.filtro.EJuncao; diff --git a/src/br/com/openpdv/visao/fiscal/PAF_Estoque.java b/src/br/com/openpdv/visao/fiscal/PAF_Estoque.java index fdbcd2f..7625eaf 100755 --- a/src/br/com/openpdv/visao/fiscal/PAF_Estoque.java +++ b/src/br/com/openpdv/visao/fiscal/PAF_Estoque.java @@ -1,7 +1,7 @@ package br.com.openpdv.visao.fiscal; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.EDirecao; import br.com.openpdv.modelo.core.filtro.*; import br.com.openpdv.modelo.ecf.EcfImpressora; @@ -10,8 +10,6 @@ import br.com.openpdv.modelo.sistema.SisEmpresa; import br.com.openpdv.visao.core.Aguarde; import br.com.openpdv.visao.core.Caixa; -import br.com.phdss.ECF; -import br.com.phdss.EComandoECF; import br.com.phdss.controlador.PAF; import br.com.phdss.modelo.anexo.iv.AnexoIV; import br.com.phdss.modelo.anexo.iv.E1; diff --git a/src/br/com/openpdv/visao/fiscal/PAF_MF.java b/src/br/com/openpdv/visao/fiscal/PAF_MF.java index 31d282f..4bc2ad5 100755 --- a/src/br/com/openpdv/visao/fiscal/PAF_MF.java +++ b/src/br/com/openpdv/visao/fiscal/PAF_MF.java @@ -1,10 +1,10 @@ package br.com.openpdv.visao.fiscal; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.visao.core.Aguarde; import br.com.openpdv.visao.core.Caixa; -import br.com.phdss.ECF; -import br.com.phdss.EComandoECF; +import br.com.phdss.fiscal.ACBR; +import br.com.phdss.EComando; import br.com.phdss.controlador.PAF; import java.awt.Cursor; import java.awt.Rectangle; @@ -23,7 +23,7 @@ public class PAF_MF extends JDialog { private static PAF_MF paf_mf; private Logger log; - private EComandoECF comando; + private EComando comando; private String param1; private String param2; private String param3; @@ -43,7 +43,7 @@ private PAF_MF() { * @param comando informa o tipo de comando. * @return o objeto de PAF_MF. */ - public static PAF_MF getInstancia(EComandoECF comando) { + public static PAF_MF getInstancia(EComando comando) { if (paf_mf == null) { paf_mf = new PAF_MF(); } @@ -445,17 +445,17 @@ public void run() { resp = PAF.leituraMF(comando, new String[]{param1, param2}); } else { String nome = getTitle() + "_" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".txt"; - param3 = PAF.getPathArquivos() + nome; + param3 = Util.getPathArquivos() + nome; switch (comando) { case ECF_PafMf_Lmfc_Impressao: if (radEspelho.isSelected()) { - resp = PAF.leituraMF(EComandoECF.ECF_PafMf_Lmfc_Espelho, new String[]{param1, param2, param3}); + resp = PAF.leituraMF(EComando.ECF_PafMf_Lmfc_Espelho, new String[]{param1, param2, param3}); } else { - resp = PAF.leituraMF(EComandoECF.ECF_PafMf_Lmfc_Cotepe1704, new String[]{param1, param2, param3}); + resp = PAF.leituraMF(EComando.ECF_PafMf_Lmfc_Cotepe1704, new String[]{param1, param2, param3}); } break; case ECF_PafMf_Lmfs_Impressao: - resp = PAF.leituraMF(EComandoECF.ECF_PafMf_Lmfs_Espelho, new String[]{param1, param2, param3}); + resp = PAF.leituraMF(EComando.ECF_PafMf_Lmfs_Espelho, new String[]{param1, param2, param3}); break; default: resp = PAF.leituraMF(comando, new String[]{param1, param2, param3}); @@ -463,9 +463,9 @@ public void run() { } Aguarde.getInstancia().setVisible(false); - if (ECF.OK.equals(resp[0]) && param3 != null) { + if (ACBR.OK.equals(resp[0]) && param3 != null) { JOptionPane.showMessageDialog(paf_mf, "Arquivo gerado com sucesso em:\n" + param3, getTitle(), JOptionPane.INFORMATION_MESSAGE); - } else if (ECF.ERRO.equals(resp[0])) { + } else if (ACBR.ERRO.equals(resp[0])) { if (param3 == null) { log.error("Nao foi possivel emitir a leitura fiscal " + getTitle() + "! -> " + resp[1]); JOptionPane.showMessageDialog(paf_mf, "Não foi possível emitir a leitura de " + getTitle() + "!", "Menu Fiscal", JOptionPane.WARNING_MESSAGE); @@ -566,11 +566,11 @@ public void setButtonGroup2(ButtonGroup buttonGroup2) { this.buttonGroup2 = buttonGroup2; } - public EComandoECF getComando() { + public EComando getComando() { return comando; } - public void setComando(EComandoECF comando) { + public void setComando(EComando comando) { this.comando = comando; } diff --git a/src/br/com/openpdv/visao/fiscal/PAF_MovimentosECF.java b/src/br/com/openpdv/visao/fiscal/PAF_MovimentosECF.java index 9fa80fc..cc76a78 100755 --- a/src/br/com/openpdv/visao/fiscal/PAF_MovimentosECF.java +++ b/src/br/com/openpdv/visao/fiscal/PAF_MovimentosECF.java @@ -2,7 +2,7 @@ import br.com.openpdv.controlador.comandos.ComandoEmitirMovimentoECF; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.core.filtro.ECompara; import br.com.openpdv.modelo.core.filtro.FiltroNumero; diff --git a/src/br/com/openpdv/visao/fiscal/PAF_Pagamento.java b/src/br/com/openpdv/visao/fiscal/PAF_Pagamento.java index c81b2cf..94115c7 100755 --- a/src/br/com/openpdv/visao/fiscal/PAF_Pagamento.java +++ b/src/br/com/openpdv/visao/fiscal/PAF_Pagamento.java @@ -3,7 +3,7 @@ import br.com.openpdv.controlador.comandos.ComandoSalvarDocumento; import br.com.openpdv.controlador.comandos.ComandoTotalizarPagamentos; import br.com.openpdv.controlador.core.CoreService; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.filtro.*; import br.com.openpdv.modelo.ecf.EcfPagamentoTotais; import br.com.openpdv.visao.core.Aguarde; diff --git a/src/br/com/openpdv/visao/nota/NotaConsumidor.java b/src/br/com/openpdv/visao/nota/NotaConsumidor.java index f55773e..189b368 100755 --- a/src/br/com/openpdv/visao/nota/NotaConsumidor.java +++ b/src/br/com/openpdv/visao/nota/NotaConsumidor.java @@ -20,6 +20,7 @@ import br.com.openpdv.visao.principal.Pesquisa; import br.com.openpdv.visao.venda.Grades; import br.com.openpdv.visao.venda.Precos; +import br.com.phdss.Util; import java.awt.event.KeyEvent; import java.text.DecimalFormat; import java.text.SimpleDateFormat; diff --git a/src/br/com/openpdv/visao/nota/NotaEletronica.java b/src/br/com/openpdv/visao/nota/NotaEletronica.java index cbe98c7..15dece4 100755 --- a/src/br/com/openpdv/visao/nota/NotaEletronica.java +++ b/src/br/com/openpdv/visao/nota/NotaEletronica.java @@ -26,6 +26,7 @@ import br.com.opensig.nfe.TNFe; import br.com.opensig.nfe.TNFe.InfNFe.Det; import br.com.opensig.nfe.TNfeProc; +import br.com.phdss.Util; import java.awt.event.KeyEvent; import java.io.File; import java.io.FileOutputStream; diff --git a/src/br/com/openpdv/visao/principal/Clientes.java b/src/br/com/openpdv/visao/principal/Clientes.java index ad76951..69a3e36 100755 --- a/src/br/com/openpdv/visao/principal/Clientes.java +++ b/src/br/com/openpdv/visao/principal/Clientes.java @@ -3,7 +3,7 @@ import br.com.openpdv.controlador.core.AsyncCallback; import br.com.openpdv.controlador.core.CoreService; import br.com.openpdv.controlador.core.TextFieldLimit; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.core.filtro.ECompara; import br.com.openpdv.modelo.core.filtro.EJuncao; diff --git a/src/br/com/openpdv/visao/principal/Embalagens.java b/src/br/com/openpdv/visao/principal/Embalagens.java index 93a8c01..a1980a0 100755 --- a/src/br/com/openpdv/visao/principal/Embalagens.java +++ b/src/br/com/openpdv/visao/principal/Embalagens.java @@ -2,7 +2,7 @@ import br.com.openpdv.controlador.core.CoreService; import br.com.openpdv.controlador.core.TextFieldLimit; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.produto.ProdEmbalagem; import br.com.openpdv.visao.core.Caixa; diff --git a/src/br/com/openpdv/visao/principal/LeiturasZ.form b/src/br/com/openpdv/visao/principal/LeiturasZ.form index bb64f92..b427916 100644 --- a/src/br/com/openpdv/visao/principal/LeiturasZ.form +++ b/src/br/com/openpdv/visao/principal/LeiturasZ.form @@ -48,7 +48,13 @@ - + + + + + + + @@ -70,10 +76,18 @@ - - - - + + + + + + + + + + + + @@ -640,5 +654,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/br/com/openpdv/visao/principal/LeiturasZ.java b/src/br/com/openpdv/visao/principal/LeiturasZ.java index 09d3e9a..10b87ed 100644 --- a/src/br/com/openpdv/visao/principal/LeiturasZ.java +++ b/src/br/com/openpdv/visao/principal/LeiturasZ.java @@ -1,6 +1,5 @@ package br.com.openpdv.visao.principal; -import br.com.openpdv.visao.principal.*; import br.com.openpdv.controlador.core.*; import br.com.openpdv.controlador.permissao.Login; import br.com.openpdv.modelo.core.EComandoSQL; @@ -70,6 +69,7 @@ public void valueChanged(ListSelectionEvent e) { txtCRZ.setDocument(new TextFieldLimit(8, true)); txtBruto.setDocument(new TextFieldLimit(16)); txtTotal.setDocument(new TextFieldLimit(16)); + txtLimite.setText("10"); } /** @@ -117,6 +117,9 @@ private void initComponents() { btnNovo = new javax.swing.JButton(); btnSalvar = new javax.swing.JButton(); btnCancelar = new javax.swing.JButton(); + txtLimite = new javax.swing.JFormattedTextField(); + lblLimite = new javax.swing.JLabel(); + btnPesquisar = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); setTitle("Leituras Z"); @@ -453,6 +456,42 @@ public void keyPressed(java.awt.event.KeyEvent evt) { } }); + txtLimite.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0")))); + txtLimite.setHorizontalAlignment(javax.swing.JTextField.RIGHT); + txtLimite.setText("10"); + txtLimite.setToolTipText("Número máximo de registros na listagem. [0] para todos"); + txtLimite.setFont(new java.awt.Font("Serif", 0, 12)); // NOI18N + txtLimite.addFocusListener(new java.awt.event.FocusAdapter() { + public void focusLost(java.awt.event.FocusEvent evt) { + txtLimiteFocusLost(evt); + } + }); + txtLimite.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyPressed(java.awt.event.KeyEvent evt) { + txtLimiteKeyPressed(evt); + } + }); + + lblLimite.setFont(new java.awt.Font("Serif", 0, 12)); // NOI18N + lblLimite.setText("Limite de registros."); + + btnPesquisar.setFont(new java.awt.Font("Serif", 0, 12)); // NOI18N + btnPesquisar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/br/com/openpdv/imagens/pesquisa.png"))); // NOI18N + btnPesquisar.setText("Pesquisar"); + btnPesquisar.setMaximumSize(new java.awt.Dimension(100, 30)); + btnPesquisar.setMinimumSize(new java.awt.Dimension(100, 30)); + btnPesquisar.setPreferredSize(new java.awt.Dimension(100, 30)); + btnPesquisar.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + btnPesquisarActionPerformed(evt); + } + }); + btnPesquisar.addKeyListener(new java.awt.event.KeyAdapter() { + public void keyPressed(java.awt.event.KeyEvent evt) { + btnPesquisarKeyPressed(evt); + } + }); + org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( @@ -468,7 +507,13 @@ public void keyPressed(java.awt.event.KeyEvent evt) { .addContainerGap() .add(panLeitura, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() - .add(0, 0, Short.MAX_VALUE) + .addContainerGap() + .add(txtLimite, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 89, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(6, 6, 6) + .add(lblLimite) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .add(btnPesquisar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(btnNovo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(btnSalvar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) @@ -486,10 +531,16 @@ public void keyPressed(java.awt.event.KeyEvent evt) { .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(tabTotais, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 208, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) - .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) - .add(btnCancelar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) - .add(btnSalvar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) - .add(btnNovo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) + .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) + .add(btnCancelar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(btnSalvar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(btnNovo, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(btnPesquisar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) + .add(txtLimite, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) + .add(layout.createSequentialGroup() + .add(6, 6, 6) + .add(lblLimite))) .addContainerGap(46, Short.MAX_VALUE)) ); @@ -553,10 +604,38 @@ private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:even Caixa.getInstancia().setJanela(null); }//GEN-LAST:event_formWindowClosing + private void txtLimiteFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtLimiteFocusLost + try { + int limite = Integer.valueOf(txtLimite.getText()); + if (limite < 0) { + txtLimite.setText("10"); + } + } catch (NumberFormatException ex) { + txtLimite.setText("10"); + } + }//GEN-LAST:event_txtLimiteFocusLost + + private void btnPesquisarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnPesquisarActionPerformed + setLista(); + }//GEN-LAST:event_btnPesquisarActionPerformed + + private void btnPesquisarKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_btnPesquisarKeyPressed + if (evt.getKeyCode() == KeyEvent.VK_ENTER) { + setLista(); + } + }//GEN-LAST:event_btnPesquisarKeyPressed + + private void txtLimiteKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtLimiteKeyPressed + if (evt.getKeyCode() == KeyEvent.VK_ENTER) { + setLista(); + } + }//GEN-LAST:event_txtLimiteKeyPressed + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btnAdicionar; private javax.swing.JButton btnCancelar; private javax.swing.JButton btnNovo; + private javax.swing.JButton btnPesquisar; private javax.swing.JButton btnRemover; private javax.swing.JButton btnSalvar; private javax.swing.JCheckBox chkIssqn; @@ -566,6 +645,7 @@ private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:even private javax.swing.JLabel lblCRO; private javax.swing.JLabel lblCRZ; private javax.swing.JLabel lblData; + private javax.swing.JLabel lblLimite; private javax.swing.JLabel lblTotal; private javax.swing.JPanel panLeitura; private javax.swing.JPanel panTotais; @@ -580,6 +660,7 @@ private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:even private javax.swing.JTextField txtCRO; private javax.swing.JTextField txtCRZ; private javax.swing.JFormattedTextField txtData; + private javax.swing.JFormattedTextField txtLimite; private javax.swing.JFormattedTextField txtTotal; // End of variables declaration//GEN-END:variables @@ -715,9 +796,10 @@ private void salvarTotais(EntityManager em, EcfZ z, List totais) thr */ private void setLista() { try { + int limite = Integer.valueOf(txtLimite.getText()); EcfZ ecfZ = new EcfZ(); ecfZ.setOrdemDirecao(EDirecao.DESC); - List lista = service.selecionar(ecfZ, 0, 0, null); + List lista = service.selecionar(ecfZ, 0, limite, null); while (dtmZ.getRowCount() > 0) { dtmZ.removeRow(0); } diff --git a/src/br/com/openpdv/visao/principal/Produtos.java b/src/br/com/openpdv/visao/principal/Produtos.java index 4a4f665..5d4d870 100755 --- a/src/br/com/openpdv/visao/principal/Produtos.java +++ b/src/br/com/openpdv/visao/principal/Produtos.java @@ -13,6 +13,7 @@ import br.com.openpdv.modelo.produto.ProdPreco; import br.com.openpdv.modelo.produto.ProdProduto; import br.com.openpdv.visao.core.Caixa; +import br.com.phdss.Util; import java.awt.event.KeyEvent; import java.text.DecimalFormat; import java.text.SimpleDateFormat; diff --git a/src/br/com/openpdv/visao/principal/TiposGrade.java b/src/br/com/openpdv/visao/principal/TiposGrade.java index 2bc2c88..451fb3c 100644 --- a/src/br/com/openpdv/visao/principal/TiposGrade.java +++ b/src/br/com/openpdv/visao/principal/TiposGrade.java @@ -2,7 +2,7 @@ import br.com.openpdv.controlador.core.CoreService; import br.com.openpdv.controlador.core.TextFieldLimit; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.produto.ProdGradeTipo; import br.com.openpdv.visao.core.Caixa; diff --git a/src/br/com/openpdv/visao/principal/TiposPagamento.java b/src/br/com/openpdv/visao/principal/TiposPagamento.java index aa0cf76..bf94dda 100644 --- a/src/br/com/openpdv/visao/principal/TiposPagamento.java +++ b/src/br/com/openpdv/visao/principal/TiposPagamento.java @@ -2,7 +2,7 @@ import br.com.openpdv.controlador.core.CoreService; import br.com.openpdv.controlador.core.TextFieldLimit; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.ecf.EcfPagamentoTipo; import br.com.openpdv.visao.core.Caixa; diff --git a/src/br/com/openpdv/visao/principal/Trocas.java b/src/br/com/openpdv/visao/principal/Trocas.java index 48ff965..4aa6723 100644 --- a/src/br/com/openpdv/visao/principal/Trocas.java +++ b/src/br/com/openpdv/visao/principal/Trocas.java @@ -15,6 +15,7 @@ import br.com.openpdv.visao.core.Caixa; import br.com.openpdv.visao.venda.Grades; import br.com.openpdv.visao.venda.Precos; +import br.com.phdss.Util; import java.awt.event.KeyEvent; import java.text.DecimalFormat; import java.text.SimpleDateFormat; diff --git a/src/br/com/openpdv/visao/principal/Usuarios.java b/src/br/com/openpdv/visao/principal/Usuarios.java index 79cdcdd..f85f714 100755 --- a/src/br/com/openpdv/visao/principal/Usuarios.java +++ b/src/br/com/openpdv/visao/principal/Usuarios.java @@ -1,7 +1,7 @@ package br.com.openpdv.visao.principal; import br.com.openpdv.controlador.core.TextFieldLimit; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.controlador.permissao.PermissaoService; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.sistema.SisUsuario; diff --git a/src/br/com/openpdv/visao/venda/Cartao.java b/src/br/com/openpdv/visao/venda/Cartao.java index a02bff5..fc43b24 100644 --- a/src/br/com/openpdv/visao/venda/Cartao.java +++ b/src/br/com/openpdv/visao/venda/Cartao.java @@ -3,7 +3,7 @@ import br.com.openpdv.controlador.core.AsyncCallback; import br.com.openpdv.controlador.core.CoreService; import br.com.openpdv.controlador.core.TextFieldLimit; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.core.filtro.ECompara; import br.com.openpdv.modelo.core.filtro.EJuncao; diff --git a/src/br/com/openpdv/visao/venda/Cheque.java b/src/br/com/openpdv/visao/venda/Cheque.java index e6208c0..1b19e43 100644 --- a/src/br/com/openpdv/visao/venda/Cheque.java +++ b/src/br/com/openpdv/visao/venda/Cheque.java @@ -3,7 +3,7 @@ import br.com.openpdv.controlador.core.AsyncCallback; import br.com.openpdv.controlador.core.CoreService; import br.com.openpdv.controlador.core.TextFieldLimit; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.ecf.EcfPagamento; import br.com.openpdv.visao.core.*; diff --git a/src/br/com/openpdv/visao/venda/Fechamento.java b/src/br/com/openpdv/visao/venda/Fechamento.java index 47deac0..184eadd 100755 --- a/src/br/com/openpdv/visao/venda/Fechamento.java +++ b/src/br/com/openpdv/visao/venda/Fechamento.java @@ -5,7 +5,7 @@ import br.com.openpdv.controlador.core.AsyncCallback; import br.com.openpdv.controlador.core.CoreService; import br.com.openpdv.controlador.core.TableCellRendererNumber; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.EModo; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.ecf.EcfPagamento; @@ -16,7 +16,7 @@ import br.com.openpdv.visao.core.Gerente; import br.com.openpdv.visao.principal.Trocas; import br.com.phdss.ECF; -import br.com.phdss.EComandoECF; +import br.com.phdss.EComando; import br.com.phdss.TEF; import java.awt.Cursor; import java.awt.event.KeyEvent; @@ -1094,7 +1094,7 @@ private void fechar() { public void run() { try { if (pagDinheiro) { - ECF.enviar(EComandoECF.ECF_AbreGaveta); + ECF.getInstancia().enviar(EComando.ECF_AbreGaveta); } new ComandoFecharVenda(getPagamentos(), total.doubleValue(), acres.subtract(desc).doubleValue(), troco.doubleValue(), obs).executar(); } catch (OpenPdvException ex) { diff --git a/src/br/com/openpdv/visao/venda/Identificar.java b/src/br/com/openpdv/visao/venda/Identificar.java index afb9436..9656b43 100755 --- a/src/br/com/openpdv/visao/venda/Identificar.java +++ b/src/br/com/openpdv/visao/venda/Identificar.java @@ -3,7 +3,7 @@ import br.com.openpdv.controlador.core.AsyncCallback; import br.com.openpdv.controlador.core.CoreService; import br.com.openpdv.controlador.core.TextFieldLimit; -import br.com.openpdv.controlador.core.Util; +import br.com.phdss.Util; import br.com.openpdv.modelo.core.OpenPdvException; import br.com.openpdv.modelo.core.filtro.*; import br.com.openpdv.modelo.ecf.EcfVenda;