From af462a81431ddba13397ad771eec0cf4b410d5a8 Mon Sep 17 00:00:00 2001 From: rodrigo Date: Fri, 12 Jul 2013 19:05:16 +0000 Subject: [PATCH] git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@29067 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../impl/RelatorioLinhaOperacional.java | 90 ++++++++ .../RelatorioLinhaOperacional.jasper | Bin 0 -> 31466 bytes .../templates/RelatorioLinhaOperacional.jrxml | 218 ++++++++++++++++++ .../RelatorioLinhaOperacionalController.java | 180 +++++++++++++++ .../ItemMenuRelatorioLinhaOperacional.java | 24 ++ .../RenderRelatorioLinhaOperacionalRuta.java | 34 +++ web/WEB-INF/i3-label_pt_BR.label | 21 +- .../filtroRelatorioLinhaOperacional.zul | 115 +++++++++ 8 files changed, 680 insertions(+), 2 deletions(-) create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhaOperacional.java create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhaOperacional.jasper create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhaOperacional.jrxml create mode 100644 src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioLinhaOperacionalController.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioLinhaOperacional.java create mode 100644 src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderRelatorioLinhaOperacionalRuta.java create mode 100644 web/gui/relatorios/filtroRelatorioLinhaOperacional.zul diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhaOperacional.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhaOperacional.java new file mode 100644 index 000000000..1d35f1e60 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhaOperacional.java @@ -0,0 +1,90 @@ +package com.rjconsultores.ventaboletos.relatorios.impl; + +import java.sql.Connection; +import java.util.EnumSet; +import java.util.Map; + +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; + +public class RelatorioLinhaOperacional extends Relatorio { + + public enum EnumEspecie { + BILHETE("BILHETE DE PASSAGEM RODOVIÁRIO"), EXCESSO_BAGAGEM("DEMOSTRATIVO EXCESSO DE BAGAGEM"); + public static final EnumSet all = EnumSet.of(BILHETE, EXCESSO_BAGAGEM); + private String descricao; + + private EnumEspecie(String descricao) { + this.descricao = descricao; + } + + @Override + public String toString() { + return descricao; + } + } + + public RelatorioLinhaOperacional(Map parametros, Connection conexao) { + super(parametros, conexao); + } + + @Override + protected void processaParametros() throws Exception { + Map parametros = this.getParametros(); + + EnumEspecie especie = (EnumEspecie) parametros.get("ESPECIE"); + String dataDe = (String) parametros.get("DATA_DE"); + String dataAte = (String) parametros.get("DATA_ATE"); + String linhasIds = (String) parametros.get("LINHAS"); + String empresaId = (String) parametros.get("EMPRESA_IDS"); + + String sql = getSql(especie, dataDe, dataAte, linhasIds, empresaId); + parametros.put("SQL", sql); + parametros.put("STR_ESPECIE", especie.toString()); + } + + private String getSql(EnumEspecie especie, String dataDe, String dataAte, String linhasIds, String empresaId) { + StringBuilder sql = new StringBuilder(); + + sql.append(" SELECT c.feccorrida data_corrida, "); + sql.append(" c.fechorsalida hora_saida, "); + sql.append(" r.descruta linha, "); + sql.append(" o.descparada origem, "); + sql.append(" d.descparada destino, "); + sql.append(" e.empresa_id empresaId, "); + sql.append(" e.nombempresa empresa, "); + sql.append(" Count(*) qtde_boletos "); + + switch (especie) { + case BILHETE: + sql.append(" FROM caja ca "); + sql.append(" INNER JOIN corrida c ON ( c.corrida_id = ca.corrida_id AND c.feccorrida = ca.feccorrida ) "); + sql.append(" INNER JOIN empresa e ON e.empresa_id = c.empresacorrida_id "); + sql.append(" INNER JOIN ruta r ON r.ruta_id = c.ruta_id "); + sql.append(" INNER JOIN parada o ON o.parada_id = ca.origen_id "); + sql.append(" INNER JOIN parada d ON d.parada_id = ca.destino_id "); + sql.append(" WHERE ca.fechorventa BETWEEN To_date('").append(dataDe).append("', 'dd/mm/yyyy') "); + sql.append(" AND To_date('").append(dataAte).append("', 'dd/mm/yyyy') "); + sql.append(" AND c.ruta_id IN (").append(linhasIds).append(") "); + sql.append(" AND ca.empresacorrida_id IN (").append(empresaId).append(") "); + break; + case EXCESSO_BAGAGEM: + sql.append(" FROM caja_diversos ca "); + sql.append(" INNER JOIN evento_extra ex ON ex.eventoextra_id = ca.eventoextra_id "); + sql.append(" INNER JOIN corrida c ON ( c.corrida_id = ex.corrida_id AND c.feccorrida = ex.feccorrida ) "); + sql.append(" INNER JOIN empresa e ON e.empresa_id = c.empresacorrida_id "); + sql.append(" INNER JOIN ruta r ON r.ruta_id = c.ruta_id "); + sql.append(" INNER JOIN parada o ON o.parada_id = c.origen_id "); + sql.append(" INNER JOIN parada d ON d.parada_id = c.destino_id "); + sql.append(" WHERE ca.fechorvta BETWEEN To_date('").append(dataDe).append("', 'dd/mm/yyyy') "); + sql.append(" AND To_date('").append(dataAte).append("', 'dd/mm/yyyy') "); + sql.append(" AND c.ruta_id IN (").append(linhasIds).append(") "); + sql.append(" AND ex.empresa_id IN (").append(empresaId).append(") "); + break; + } + + sql.append(" GROUP BY c.feccorrida, c.fechorsalida, r.descruta, o.descparada, d.descparada, e.empresa_id, e.nombempresa "); + sql.append(" ORDER BY c.feccorrida, e.nombempresa ASC "); + + return sql.toString(); + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhaOperacional.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhaOperacional.jasper new file mode 100644 index 0000000000000000000000000000000000000000..94f50186aa9a460ac0ccede05fc34165ece1271c GIT binary patch literal 31466 zcmeHwd3+qjmH(@jY>lOnEX(rEVa(wZ$p^*+b6BS(p^MSjV4EPuQd=54nh`TCTQ=rO zIKq*I9Ar5*TwxaokU$_90wE+$LLdhrfskwhA;*T0KsF&H5RUwQ-&a-LT|F}%jrr{7 zv;V9A`SrxulTQpG@OWHg?zn`2JQp_!d$$9BZ(SI~|WD;=5y86ZYCpnx>0&$42bF zv2EMp;||rR!iiXNsJ_oh$CE=SSg8x9n-Z~1<{UbotnoA*U1)4uV;KxE(uhm;0GG7W zoZh~c4b46MeJzpphR*(tEs?(Vp6>n)?al2J-kNfp)JRt>jY+oiToPj=$)?m;(rM?B z@KfJtYyd;^a!-p7I>Vc(IzE(4rS0ArYQ~&+D!G}a$1|;oRLp6T^;%OY$4+y>OyAhZ zNG!dp+un)d_GX&zfliA%!whS)V}o|OAvx&Qs)}c#aVKHxI_*@Ru(vsCpp8_KO2_Ra z5RQJ4H7Z+(4-I3~Q}{uSu@MsS3>DFyRF7R522ZC-r0m`Vh*=aKT#V>-b8f`EYu{2xmM3;dXTa7tX5AvtJ4Au zDQ7l5O0+Ku$ydRbwiIeFM-NwS$B zqxwb@ai<}XNbR%-J88OHK^}a|_-NYBWTYHeQgFT<5x*?(S2>zaLHjsyJJS^#b?E2` zD)*YjQGZH?N5o>xp=v|FH12X(4OMyBdNGz4Y+q8doFliW)*(%+io|M5!XAN?UJpTv z#p6H5t_5x$7>*|f)5vqjC|SKTo{=)jHtIRFtl$WNKBM&7@lmY$bk@Oj++OyMN?iae+!FuQ5J6d2 z$^Kbl)iKIcmdeD6mi0v=Ezzbn^s-{YUa}R0*%mX|!47PYXhhlx(_}iAi{zUX7eA!v zfSr83|*`ZZ|8XYgP*g})Gf~g=wj+{t_NCi4RI+oT&_iuwKU3=||=f8H<)0eEa zfNWkvku|AFYW5iZ@YW|{%%;iPS6V3>`do*j028^lN_)y9$o!>KeI zioRsv#jAml;ddjsYGMs8i-GZ{`!#uh#f##Wz{I2ofVKwrX!)i`HpiP?gB*U&&}VrC zSZ!xzZ=vZ%b{bQM=?L0cH4*K!xmfOv=~|fUL0(%Cdz%e0Gmzb1C(ZTBL{q7R6CceQ zQ78EW4hnR4DdL$%u=sYVs>Tutho+n27LD4mBnDIN(*W0G=_er=xPC4hjX9WZQa?`9 zk68nPTv>Sl9^&$OfC_<(+{jAwcWx3!FH zwFd`nx6o9{(edqebQmgcXjqpGGZ;46Ad49dtB7YdB!O>`f}9_^kQ^73Z>K5vYnPkU?YOvO$v8I3t%BY` z-*VygSg}D%$A;3e(P4)c7hIi=2y?Y8%Htgc!jl6jrXk%jgIa@Bqjq@#G*-)vUoIZQ z5*|ckD4kNfN{x|9_gSN(zTki*IYo2}8W+6L3=F5r1DHHg4rp*F)1VQY_&_eT&&5nBlbvYhs~77C8Qv3r0{4e6X(4*8>?^O$B*yXE1w)zl_ya89c&QUrAfJTBsC}{0oZT~-|ID9TCjUba9t>^iLC;>1+gf_4L4lYNwWW-(GNYkAb;koEFP^~-9xBKBvV7JWhHb&AOX&Q!YY)iAPK6}fQKO4JlYrMbUwqW*8Z*4!lKho0K5N+Ss(jV=?zh2#bL9>@hrY>u4d73Zp zhR0BCRA5M}9gW;k@r)n4zT~azMlPwxX0C(6Fmy6bUwo)B?qoWsVkG4~jgMaZ(e;t- z-L;ROPmIhu|jy^0I^>XrSBz89VwR084WL6!z zjd8hcD|Um9p*KngFsl0)7klM87UEG`==ruvis zPwYX4R&fal&>UZcql0NnR?++}8xOjp^Vz_l^0DYn4ni$%M4}%##4`% zH1W2(pkKh)w*vc}inRO{Py*sqm(je2dq$cUmTui$_ z+W~CvJuA|0x*U7yZETD1nzzFeS9=M_4QYl4AlZiUai}Y)O9e*UElL#bZRlEMuX+nT zk-ylmalJY$MWk&S7)Cgw`fJ#R%_1)=23x6NjW(MW8W?tBTl*jrB;{&YNW&xz%z~8A zgx4hR%tWg)i7KhB3JMdcO>$iX3en2t#Uo%hRd>&62SD1s+V>Z&w4JQ@AY9x7!(++q zFb9@T*Z`vDd8ep%FWl@N%SoX%;+Fs;2^;sqCIcHa+uF{FKja z@SRj?I<`njnAMh#0IQKo8RMO}=)I&hK3d{Xd0S7Up}()8y}7|%OW=B%?}uzu{)q3- zPha@_zrFJ(IOsOhBsuBvQMf!En$*@-H!`ARL|u+K^B~3`O`05YhF7)OwLf65`RG(xrHRr*|`Q}x*E7Gc;qUXoI|r{(765oW5I%GkWW8fWCm zz~JS$&vd7e;+w!9*K%oEO?9iR!VbgPV?5p=+$l$79P2Tuv%R~`TMEt};r3*mT%WbC!^omT;=zV12lh@z!z%d{C;i~7~ zSw6oR;ei7p-Ya=DGPyhtdR1;7^qLs~^qLs~^y-Wp^j_|w#k&?l@7z4-Eo*M+i?(<7 zxD8B%-{qkEcZAlvG|C)O0T^$#g_{HAnm_jmAYMVUnI_{kRjP21R zkVu=q)sUQ*j~#C0*~#QHdDcti=2u~>dLj|nc^GiP z(+${Im`4Nr@#4%{DbGezYn67i;lKgM$r(B;d&t2PIXIVq?JNFpf=ybOnR60#98}CW zF_<}0)INYr!zh)ohbFF~>?WghwQs`0X9daOH?OUL;tIPut+>)tTDp28Eo@F3DC)?!dn`o-fCRwY^+k#^7Zd)%7u4*Cs~{#dFoqLikajrM5Kj)IYIs!pt~|S zLx#Wzd@F;EGzI$2mPeAHz>T^Ztwp%voBR$nPIK3+${WXewgniSh%MB3P#&G`v2aL- zjm-LXb5gp`d0ty~+C0JNc?&w}(ESt%I2Af+W;}^FRV*RLlV!{VRY$qRojD`678Ex1 zY>IGfO4efp=$Ra-?!kegKk=bE*yj_+7P1yg6J)?PZ|d359hFj#H_)MMn^rh9J8AEn z@5_FDN?_57#n2%bMZuF0ynuB%3z%mdrQJQ<@LhNVnNs{fmSZ3eRpQ(umLmq8j0rKx z{TzcU7*3Ug3#><;flXQ;>DkZ=r*jSl{J~ac4;F3*UvCxZxyzMTc}6q2yC>4spf^to zHNFl(xR~o@)=T`1H$Hx@JX%9Lx1QVCmW7(a06cv&R;5P)sGYs*ve&(zz!`x%L8SYqImy@XF;RXIo^2>JUP4iaOl2eL<;A$2`ajYXTe=s$FFdmz~ zVE)qiDzDU`Ds%tczar4jL{_@7t>8$6T5;Z8mlQU>rVP688DOXA-50OlxU=A!2Uzvh zMOqB&`S4DBAm=#9q(WncUc=^HzCyr99Qa-jw{Ub;s^eCa*1Ag`bwVi3p~ELI@lXiX zof}@Qm4WjU^umkWBjh>UB^{W}aOSpl_B2RW5|g|3aX)^>OFyf*c;oGx8Xx{{qto*y z%P!3V5trqd?3XIGpTXHm2OFm-1LVgCN+p3}NLi*F|TbtaU`Q+yF4j@mC0R`^I* zt>~DioGoJh{e`Q~eCLmM?!EuK%U|AJ(LQN^b6=z8&S+QxMkqF_3Bw-ep7^kw&kl$y z8zB!K)G9rRT6ZN?fC5zxE@~2Yf2a1(Gwy!#x37gRKDqRzwokZ=Ca29EOf1(< z#T194`>r^=o<=nGrydnGryd&d5QL z=jZp(IdO{`xc@U*?^B~I12q4PL2p~#l#$_)X>JL6MmeK#`dd zK#|VKL6J8^4@Eo+SJh`5qfJ_Z85xd;Bp-ttncco--SOlhg^j7j+>EQ9Kvt= z&K(<%7^-}7=)R8~`}kGeb3OpV&trtkv>)Unf%d6!3{hLyuq6qr(WkbW~RYmSv|KEGJ#@brm*`F!(F~gMdEWee~^24h8 z8&-$rL~OX`@Jd5Us<|G#g@pIFQ%UUXa28L7Yzjn2{NUCC3V(dbzOxQy6-Cv&pP3?^yRE4-q7oyckefrfu0lA*^cifqGstm_O%P_ONn1`ZxMG1RIco3=<98X;1Dp6%B)oMmka{!P4lPM-O?1rM*_?? z)k~Ee>cK>k>W%I|^=e(ctKoFz5A$oY22*Ymcj7g=u#9N+^=ybVX#-KAv+xAu`|N!( zWSVybeNB<}-YCN1{s{0YbD#sT>r)Wz|f}aIW~1R^!4>)tK8fYF-JGUcVfy& zc4vy;c@H!(S2wXC(%IkEz!-|;8>Mmx^E#p+A7PJ;wBaq1gy)VAG+L`0ZEf#t0gv?c zbmG$&=D-S`aaNPYcRhGf5_sb#(6+Z62>Rg!eoLR(u8QHw1`yXuqI`?UCq)hR*iQ2hb`4XYsT%#veAx zYPGh#ufKggT*WQ@y$$QzyYXH^P=FY|M|~Pmj|z@Wb`MKY&>SFa!wqRff5p|RMo88G z_D!4=t}v)d^!>n78HUr4zp_!cJCzzixWIjcr^UP9HSYO|B?-61GQ-e3 zlgj?{>-%P&^=t`QtvDkM9#$bRd~n4XMhpb6bPbM=p1e+K{F0p^TuZrY9??4viRFCr zHjV+WsFSzJ8*?5PWRT1K|6z9L{81714OK@?fnJpmm2l!$!qTs2U@EHWBccQf7k z`>z~xyK5JT1MqD5&G-{3$#bR`b8}ML?IaG_Oy6R>c%Ya7hc6IkkmQ03G%}l`awckR~SeRR)t%l0WlK}OV;XUpoOw6=fZ&+hbkZ_TKc;;bTvW($>#rz=9Spy#+AuH-UtA*s&e}k z2ik9CQ%~oHuI}ufOL;i^>DP!ySqIi#4w_1eudm`!VOPO&kdd3SW=uTF(&BrOK~-+i zT+B(u*H@z~my0O_p>m7|PdvuS#rKhSjAg~w*O=4`uSV%noPw(Ha{4k7p<+Lp_DG$W z2KATpZRnDG!TacN_5e8kXGVj-nA{)`%i9Mtr+)=^qN0ipm(_O*ki*ut{9LiUTwzo_lkt_XA_~5Rg*A?Uf`Y`JT7@7Tf+P3HEuk9UCl#jABSByJX0xr99z} zw_Ng-qps#fK3h$VXOT@ycia85XB~FU&BJg0VbOh8wr=ogi4iAeqA{(EJdd8lXr2hT z#lAq5B-D@t1f_CSMu4Eqi~vEI83BUQ8JLwEi$_q>MhGk;ztYGrsm$+z522w6#(G1i ztdr|9ybk{UPciO_!rPtwH@~v)&%ZkChx3mqU3608MLymXwG_#NyBK9M*_j7rDmM?x z%!~la%!~labVd%!b_USJ4~2NJ#^XWlrv(qzdWV>#C5;`Ky=bw~Dqbb`{k8Mk+K$ij z0+uFOmvj#;Y6)(7^zP>6PD}6ZpMPRu>t{MVJjlM8)+eUe%NYGKxg-zzRc;>in;BlW zUQ?H;8Ugg{8W>uTVlOcerEUwMf4YZ$Uj$BF&}*mn-J2Rr9dC#>%in6s4p~@M;5f&E z`KG8uDSvxuj)d#v5iMXE`M0X5_4(W%@1&)Ne_?j_FZRqk?!EQLnJgk3n0S3|V5G|A zx;*Qna`UW@nGskYGb6A*IwNO&t~0SB@3D!LF6Tv=#m8q$67^XG@jj5ms45OkA6fqE z_uqc@=tJXcl9RqWZ5_@)8Lwht{zZ`S?TjXw+?EGTDmM?B%!~k<%!~kW<~(LW<~(LIwJ?YUo^2I@A(vDW^~_O194kYVS&>wTZ%%{jn9gW zm()BRri0#l^6OWh0_RiSlRnlXMu;Yx{FQL<$UpD;HX8YjTDfr4Z-ul6J$nfQ5H^Ae42wJVTJjaI* zmkp#-8N3^_waNcdG_&De98VuqU*^rtnQ45=HY-=)BbTTz-qqf=u=KW7bD!h;&44G! z+R}K>UuV5NITU?ayLb-0?dgAh<#E)j6RQQ)?Kg7Rzhc#zRmZM6cFl)YtT=8(|C$we zUQ5PXc=3#kGRw`ps!K zi5DUfc+=5+S5F7Y;Bz;E0fG+ADG-dr3HkXX^}3(igpU3RoHNUA-3);UIwB`OPkckr zK{>^YpjcoI`8@1GeRM*;kl61!#PgxW3(Mupgg;NkF$6x<bFJJ;xxAi{_qH1d+pcQZEptW6+FpmP`-M35yMqY_+Nbh zY86PoyX`&eUIbOBe2FhXVfCb5qz4VDN7F&&0VPrCmkxpY9r~qCDI&ECRZ!tCRU0$# zyv>4UdQAoVu~>F5!&@nMJ_Swp;J&ZXENy!C%;p1cX$YF*HRGR~P!VfTxtC|+qJM>; z$tUnjJ0}S$S+sbgpwcFMbuCOQX;nD_9jn7Mi6&1Wi`ImxOx=AbOd)l*HcV60-HBl; zS9d3esY2Z~gek1h7E{9jWdzVLD3PjfH8Uy4xA1Me1%> zm=@C#ZtvVMEme2tg=v|(yC6(QtGkQB*iy)H9}QEzy1OJy%hlawVOpW?E(hoF32XI2 zLzG`)7F0Dbmcf63fN17mJC;|_@)o-H(G4I+yc;R# zDBZ36za)CLo{gaM+QmlXNQ1)kZ}iy;x{+?eOp8$60c~4Gw?Oh_YuOOp2C1N-0reW9 z+rgbWC#Y9L^dG>z$KCQcO^EIUi@Px6FhPhu5819W@~F@d-2=Sqd_#AJ=nEKGKBXC= z`+##-TZZUM{=7Uj8KMV$sHY!8^bka;p%_E-FqTDkt~6qZzJfA_Dh$zMkRM7@h3Ijt z8I)g$p72L)XuS}9gKPWhE=1o1-S~PgMBnxY<|()keFxgc#a@rA*+TR*x>hPJMBnq* zBdE(l^aBV?T{}yOh3JREi_VAWN5Xi`EJV*0X9F@JNwP1apI|n=;tJ7Expno$kr4eS z9yE4C^b4Usq!Xf-Fbk!uLi94!mnoe?^lLy&H5H=Y0*6vbsOVydekY`hdLmnu#|b`^ zpExL^-(zV5x+z3|Kvy1?p_M}P8s_8cqY(WGB}`2eqCcaVfDQ`L8(6|@?GvIm!4&4q z`d5VL@1Rth-^+sc5X-lyJr7%B1TEtOHjdS$l8{02s8+oc1^gxAoh<6g=v~l<6dy7} zzfoC6??acNQAnwk^#97~pZsP_2r@+;!2|y+%F|z1SfZqyUJ#`yAlu~E;_Lm_;>*Nj z5Vy=he7fHII6#>QVdDNMR6x5-l!N-Rp^f-oa_n@O2m^b8m#;#iiV6IbFp}G z4pKa`v$sqfR4xuCY^}MmKEw2pR~SC>3bRLEVf4r=OdffK!6UCQ zcjOhuj=aLukyjWx@(MFYUSZ_OD@+`Dg@GflFmL1)#*Mtfw2@aBHu4IyMqXjm$SX`5 zd4)kEuP|ri6~>Ib!jzF$7&7t-Ge%xv#Kd#m+3f8j_2eAPEO)v9Vd;P zG;`9*NgF2}oOE*1%}FmO5l*6x5dlS?`I7$;ZUkEsc|66u#<-*LdY6c*_e*rHXi zLZ`$2oDIwKVAz}sU~Mj>`6zW5?79VXEbPm*uq@ZXrfh*V*@4_1SddZJj+=nUGhsOn zp!6`T#Sz$v2vpKe*oJ#h`ywFtQlR)sp!gbEP1mBe8)yyPOvlmfc$@4lI-b6O)*qk~ z=wUjMzDg(2H|S(~61{zo8t7SSq@Q4{g07;EtA#>KiXp0(EZs|=Sh8#{eR|2!d+A^O z8S>nSy1_0z*bDT+x<3_lU?Hj&tPO-CRzSz|OP1DL{|Mb|(Gzql{_&bGt@&I4ay%ga z9)O$x$Q=R5Nr2oHfUE=L?f|3_kb47=W8E7VA7~rBM?<2DhQ)k}i+t5V%lp->&jXNAKwb<$(t!Lj z0C52MRRFRBklzF#54nRHv$X^1Givjs-0CFiHe+xi92FP0h zh#}t8w64UouEMlFj%oc1rgb%@bq%KV2~6vgxcd|)^fvtilY0k9D8f46aeGvAk} zGM_Twml^PL4S33c4;b*%4EQMq{A2^ZYRQ8%{*ajTgeb#^j>J>Kdzyu(-STM)@}`(i z^e&##GOwcR4to7jQMqZln7UWg0Di?oVmjJ;NX&Xj%tP)okBWmg?G=aM_M58Ud{yx5 zhs0q|h>C~A5!1y{NKv=L1F5>70&Js#q536wih55wRbz`(V|%z)`X_pwE|#dqe2{9a z71fjOgrE~1B*&Y=5)y{YEUKS3rBeM>zd8(BJE#js5}}d;_xV z@1VoC5SV`#wD_L50DF>qg%J0NN#arLEFQ;x;VDrez9*)NcSN;#U({M5F~h15bF7(S zt~Ey-VjUq4wHAuQt(D>kYqeNptrN>Z_)Gtft0dPR09VxoxJo~1uELYSRqDy*Dm>-o zs`~#GuBy-FDhm7ap;Dm?|wRr*PDm44D(g{QKvY_1X?B1^2L3&qKFxmZV6K~G-` zI=>DdTDetpz&X}U_lh34qWb6&5rvQFbo!Rq1V7G)=~;0m_+~5kWdQDuA#A*c!6OO! zn;4pRd<1_?gdwU0bKPZaMc6gs=eTuKGH->KovyZ-c9T0Ipj8e_VB-T=hS#t5*H5aMh|@uF{|YS7EXc6aPcHO1uEB z`Wd+DMR3(i;HqDPt9}EndIenddvMij;HuZbReu3jy#cQJJGkmCaMious`uzQ?5$q3 z1ifrcqF1fS^qN&pf3qs+ZELC!R<$U#YDJ|rLsWy_=UH>1Ne&Tu|9K^nbjy zNVHgsMVocB=(Fm?M)1Np)+*sxYs4PwIB|h>g1FZ@QQT)Wh(}?mJ#Mv%r>ynjd)6u9 z9jjBkZ}nOs>r|`4+F;GJHd=G6&DIgt7Hgr^Z>_Y>vQ}Gz);cQzu7bq}tqdhNBX9T} W|FJ-!v*F&^gbqXu2J{Jn^#2F-)&*w( literal 0 HcmV?d00001 diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhaOperacional.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhaOperacional.jrxml new file mode 100644 index 000000000..1799504a7 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioLinhaOperacional.jrxml @@ -0,0 +1,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <band height="93" splitType="Stretch"> + <staticText> + <reportElement uuid="68f4ea28-b08b-4655-ab65-5f181721909f" x="0" y="0" width="247" height="20"/> + <textElement> + <font size="14" isBold="true"/> + </textElement> + <text><![CDATA[LINHA OPERACIONAL]]></text> + </staticText> + <textField pattern="dd/MM/yyyy HH:mm"> + <reportElement uuid="d0203404-283e-4281-a85f-9fe7c3f0e121" x="403" y="0" width="152" height="20"/> + <textElement textAlignment="Right"> + <font isBold="true"/> + </textElement> + <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression> + </textField> + <textField> + <reportElement uuid="7adb9127-4696-4a5a-9ebb-ab4430744550" x="0" y="31" width="247" height="20"/> + <textElement> + <font isBold="true"/> + </textElement> + <textFieldExpression><![CDATA["Período: " + $P{DATA_DE} + " a " + $P{DATA_ATE}]]></textFieldExpression> + </textField> + <staticText> + <reportElement uuid="4edc7c1b-38fc-4738-a3eb-a8002b23ae18" x="0" y="51" width="46" height="20"/> + <textElement> + <font isBold="true"/> + </textElement> + <text><![CDATA[Linha(s):]]></text> + </staticText> + <textField> + <reportElement uuid="69376e05-cb11-4073-8230-e2fdf8d12d1f" x="46" y="51" width="509" height="20" isPrintWhenDetailOverflows="true"/> + <textElement> + <font isBold="true"/> + </textElement> + <textFieldExpression><![CDATA[$P{LINHAS}]]></textFieldExpression> + </textField> + <staticText> + <reportElement uuid="bb6eb592-643e-4bce-8a2c-4b7f09848727" positionType="Float" x="0" y="71" width="46" height="20"/> + <textElement> + <font isBold="true"/> + </textElement> + <text><![CDATA[Espécie:]]></text> + </staticText> + <line> + <reportElement uuid="001cfcc7-c18f-4b8f-9bd1-01568512ca0c" positionType="Float" x="0" y="91" width="555" height="1"/> + </line> + <textField> + <reportElement uuid="d5217a3d-bf2e-4e6e-a235-b8149af41b56" x="46" y="71" width="509" height="20"/> + <textElement/> + <textFieldExpression><![CDATA[$P{STR_ESPECIE}]]></textFieldExpression> + </textField> + </band> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioLinhaOperacionalController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioLinhaOperacionalController.java new file mode 100644 index 000000000..0eb0984b5 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioLinhaOperacionalController.java @@ -0,0 +1,180 @@ +package com.rjconsultores.ventaboletos.web.gui.controladores.relatorios; + +import java.sql.SQLException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.EnumSet; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.sql.DataSource; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.stereotype.Controller; +import org.zkoss.util.resource.Labels; +import org.zkoss.zhtml.Messagebox; +import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.event.Event; +import org.zkoss.zul.Combobox; +import org.zkoss.zul.Comboitem; +import org.zkoss.zul.Datebox; +import org.zkoss.zul.Paging; +import org.zkoss.zul.Textbox; + +import com.rjconsultores.ventaboletos.entidad.Empresa; +import com.rjconsultores.ventaboletos.entidad.Ruta; +import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioLinhaOperacional; +import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioLinhaOperacional.EnumEspecie; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; +import com.rjconsultores.ventaboletos.service.EmpresaService; +import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; +import com.rjconsultores.ventaboletos.web.utilerias.paginacion.HibernateSearchObject; +import com.rjconsultores.ventaboletos.web.utilerias.paginacion.PagedListWrapper; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderRelatorioLinhaOperacionalRuta; + +@Controller("relatorioLinhaOperacionalController") +@Scope("prototype") +public class RelatorioLinhaOperacionalController extends MyGenericForwardComposer { + + private static final long serialVersionUID = 1L; + @Autowired + private DataSource dataSource; + @Autowired + private transient PagedListWrapper plwRuta; + @Autowired + private EmpresaService empresaService; + List lsEmpresa; + private Datebox datInicial; + private Datebox datFinal; + private Paging pagingRuta; + private MyListbox rutaList; + private Textbox txtPalavraPesquisa; + private Combobox cmbEmpresa; + private Combobox cmbEspecie; + private EnumSet lsEspecie; + + public List getLsEmpresa() { + return lsEmpresa; + } + + public void setLsEmpresa(List lsEmpresa) { + this.lsEmpresa = lsEmpresa; + } + + public EnumSet getLsEspecie() { + return lsEspecie; + } + + public void setLsEspecie(EnumSet lsEspecie) { + this.lsEspecie = lsEspecie; + } + + @Override + public void doAfterCompose(Component comp) throws Exception { + lsEmpresa = empresaService.obtenerTodos(); + lsEspecie = EnumEspecie.all; + super.doAfterCompose(comp); + + rutaList.setItemRenderer(new RenderRelatorioLinhaOperacionalRuta()); + } + + private void limparPesquisa() { + rutaList.setData(new ArrayList()); + } + + private void executarPesquisa() { + HibernateSearchObject rutaBusqueda = + new HibernateSearchObject(Ruta.class, pagingRuta.getPageSize()); + + rutaBusqueda.addFilterLike("descruta", "%" + txtPalavraPesquisa.getValue() + "%"); + + rutaBusqueda.addSortAsc("descruta"); + + rutaBusqueda.addFilterEqual("activo", Boolean.TRUE); + + plwRuta.init(rutaBusqueda, rutaList, pagingRuta); + + if (rutaList.getData().length == 0) { + try { + Messagebox.show(Labels.getLabel("MSG.ningunRegistro"), + Labels.getLabel("relatorioLinhaOperacionalController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + } catch (InterruptedException ex) { + } + } + } + + public void onClick$btnLimpar(Event ev) { + limparPesquisa(); + } + + public void onClick$btnPesquisa(Event ev) { + executarPesquisa(); + } + + public void onClick$btnExecutarRelatorio(Event ev) throws InterruptedException, SQLException { + List lsRutasSelecionadas = new ArrayList(Arrays.asList(rutaList.getSelectedsItens().toArray(new Ruta[rutaList.getSelectedsItens().size()]))); + + if (!lsRutasSelecionadas.isEmpty()) { + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); + Date dataDe = datInicial.getValue(); + Date dataAte = datFinal.getValue(); + + if (dataAte.after(dataDe)) { + Map parametros = new HashMap(); + parametros.put("DATA_DE", sdf.format(dataDe)); + parametros.put("DATA_ATE", sdf.format(dataAte)); + + String linhasIds = "0"; + for (int i = 0; i < lsRutasSelecionadas.size(); i++) { + Ruta ruta = lsRutasSelecionadas.get(i); + linhasIds = linhasIds + "," + ruta.getRutaId(); + } + parametros.put("LINHAS", linhasIds); + + Comboitem cbiEmpresa = cmbEmpresa.getSelectedItem(); + String empresaId; + if (cbiEmpresa != null) { + Empresa empresa = (Empresa) cbiEmpresa.getValue(); + empresaId = empresa.getEmpresaId().toString(); + } else { + empresaId = "0"; + for (int i = 0; i < lsEmpresa.size(); i++) { + Empresa empresa = lsEmpresa.get(i); + empresaId = empresaId + "," + empresa.getEmpresaId(); + } + } + parametros.put("EMPRESA_IDS", empresaId); + + Comboitem cbiEspecie = cmbEspecie.getSelectedItem(); + if (cbiEspecie != null) { + EnumEspecie especie = (EnumEspecie) cbiEspecie.getValue(); + parametros.put("ESPECIE", especie); + } else { + parametros.put("ESPECIE", EnumEspecie.BILHETE); + } + + Relatorio relatorio = new RelatorioLinhaOperacional(parametros, dataSource.getConnection()); + + Map args = new HashMap(); + args.put("relatorio", relatorio); + + openWindow("/component/reportView.zul", + Labels.getLabel("relatorioLinhaOperacionalController.window.title"), args, MODAL); + } else { + Messagebox.show(Labels.getLabel("relatorioLinhaOperacionalController.MSG.datainvalida"), + Labels.getLabel("relatorioLinhaOperacionalController.window.title"), + Messagebox.OK, Messagebox.EXCLAMATION); + } + } else { + Messagebox.show(Labels.getLabel("relatorioLinhaOperacionalController.MSG.selecionarlinha"), + Labels.getLabel("relatorioLinhaOperacionalController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + } + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioLinhaOperacional.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioLinhaOperacional.java new file mode 100644 index 000000000..d055e1da7 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/menu/item/relatorios/ItemMenuRelatorioLinhaOperacional.java @@ -0,0 +1,24 @@ +package com.rjconsultores.ventaboletos.web.utilerias.menu.item.relatorios; + +import org.zkoss.util.resource.Labels; + +import com.rjconsultores.ventaboletos.web.utilerias.PantallaUtileria; +import com.rjconsultores.ventaboletos.web.utilerias.menu.DefaultItemMenuSistema; + +public class ItemMenuRelatorioLinhaOperacional extends DefaultItemMenuSistema { + + public ItemMenuRelatorioLinhaOperacional() { + super("indexController.mniRelatorioLinhaOperacional.label"); + } + + @Override + public String getClaveMenu() { + return "COM.RJCONSULTORES.ADMINISTRACION.GUI.RELATORIOS.MENU.RELATORIOLINHAOPERACIONAL"; + } + + @Override + public void ejecutar() { + PantallaUtileria.openWindow("/gui/relatorios/filtroRelatorioLinhaOperacional.zul", + Labels.getLabel("relatorioLinhaOperacionalController.window.title"), null, desktop); + } +} diff --git a/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderRelatorioLinhaOperacionalRuta.java b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderRelatorioLinhaOperacionalRuta.java new file mode 100644 index 000000000..c5f7efe00 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/web/utilerias/render/RenderRelatorioLinhaOperacionalRuta.java @@ -0,0 +1,34 @@ +package com.rjconsultores.ventaboletos.web.utilerias.render; + +import org.zkoss.zul.Listcell; +import org.zkoss.zul.Listitem; +import org.zkoss.zul.ListitemRenderer; + +import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente; +import com.rjconsultores.ventaboletos.entidad.Ruta; + +public class RenderRelatorioLinhaOperacionalRuta implements ListitemRenderer { + + public void render(Listitem lstm, Object o) throws Exception { + Ruta ruta = (Ruta) o; + + Listcell lc = new Listcell(ruta.getRutaId().toString()); + lc.setParent(lstm); + + lc = new Listcell(ruta.getPrefixo()); + lc.setParent(lstm); + + lc = new Listcell(ruta.getDescruta()); + lc.setParent(lstm); + + OrgaoConcedente orgaoConcedente = ruta.getOrgaoConcedente(); + if (orgaoConcedente != null) { + lc = new Listcell(orgaoConcedente.getDescOrgao()); + } else { + lc = new Listcell("-"); + } + lc.setParent(lstm); + + lstm.setAttribute("data", ruta); + } +} diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index 94270b1b6..49066403d 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -7,7 +7,7 @@ # . . = XXX #Versao do VentaBoleto: -versao = ADM_20130710_1RC173 +versao = ADM_20130712_1RC174 # MSG Defaut: MSG.CONSTRAINT.PORCENTAGEM = Os valores devem estar entre 0 e 100 @@ -213,6 +213,7 @@ indexController.mniTarjetaCredito.label = Cartão de Crédito indexController.mniRelatorios.label = Relatórios indexController.mniRelatorioAproveitamento.label = Relatório de Aproveitamento indexController.mniRelatorioReceitaDiariaAgencia.label = Relatório de Receita Diária por Agência +indexController.mniRelatorioLinhaOperacional.label = Relatório de Linha Operacional #PARTE REALIZADA POR MANUEL indexController.mnCortesias.label = Cortesias Para Funcionários @@ -4274,4 +4275,20 @@ importarClientesController.fileupload.label = Selecionar Arquivo... importarClientesController.qtde.label = Total de clientes a importar importarClientesController.codigofidelidade.label = Codigo Fidelidade importarClientesController.nome.label = Nome -importarClientesController.documento.label = Documento \ No newline at end of file +importarClientesController.documento.label = Documento + +# Relatorio de Linha Operacional +relatorioLinhaOperacionalController.window.title = Linha Operacional +relatorioLinhaOperacionalController.lbRuta.value = Linha +relatorioLinhaOperacionalController.btnPesquisa.label = Pesquisar +relatorioLinhaOperacionalController.btnLimpar.label = Limpar +relatorioLinhaOperacionalController.prefixo.label = Prefixo +relatorioLinhaOperacionalController.orgao.label = Orgão Concedente +relatorioLinhaOperacionalController.lbAgrupar.value = Agrupar por +relatorioLinhaOperacionalController.chkAgruparDia.value = Dia +relatorioLinhaOperacionalController.chkAgruparMes.value = Mes +relatorioLinhaOperacionalController.chkAgruparAno.value = Ano +relatorioLinhaOperacionalController.MSG.selecionarlinha = Selecione alguma linha para gerar o relatório. +relatorioLinhaOperacionalController.MSG.datainvalida = Data de inicio não pode ser maior que final. +relatorioLinhaOperacionalController.lblEmpresa.value = Empresa +relatorioLinhaOperacionalController.lblEspecie.value = Espécie \ No newline at end of file diff --git a/web/gui/relatorios/filtroRelatorioLinhaOperacional.zul b/web/gui/relatorios/filtroRelatorioLinhaOperacional.zul new file mode 100644 index 000000000..ec1ae4603 --- /dev/null +++ b/web/gui/relatorios/filtroRelatorioLinhaOperacional.zul @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +