From b525a92f863a70db1b583d8bf53650467f28103b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Cort=C3=A9s?= Date: Fri, 22 Mar 2019 18:50:18 -0300 Subject: [PATCH] Se movieron las documentaciones a las interfaces --- dist/Programa Caja.jar | Bin 15924866 -> 15924967 bytes src/danielcortes/xyz/models/caja/CajaDAO.java | 23 + .../xyz/models/caja/SQLiteCajaDAO.java | 30 - .../models/calculo_fondo/CalculoFondoDAO.java | 31 + .../calculo_fondo/SQLiteCalculoFondoDAO.java | 48 +- .../xyz/models/documentos/DocumentosDAO.java | 39 + .../documentos/SQLiteDocumentosDAO.java | 44 - .../xyz/models/efectivo/EfectivoDAO.java | 36 +- .../models/efectivo/SQLiteEfectivoDAO.java | 44 - .../xyz/models/egreso/EgresoDAO.java | 54 + .../xyz/models/egreso/SQLiteEgresoDAO.java | 69 - .../estado_resultado/EstadoResultadoDAO.java | 26 + .../SQLiteEstadoResultadoDAO.java | 38 - .../xyz/models/ingreso/IngresoDAO.java | 79 +- .../xyz/models/ingreso/SQLiteIngresoDAO.java | 95 -- .../tipo_egreso/SQLiteTipoEgresoDAO.java | 19 - .../xyz/models/tipo_egreso/TipoEgresoDAO.java | 15 + .../tipo_ingreso/SQLiteTipoIngresoDAO.java | 23 - .../models/tipo_ingreso/TipoIngresoDAO.java | 15 + .../xyz/models/version/VersionDAO.java | 9 +- src/danielcortes/xyz/views/ArqueoView.java | 690 +++++---- src/danielcortes/xyz/views/EgresosView.java | 436 +++--- .../xyz/views/EstadoResultadoView.java | 1277 ++++++++++------- .../xyz/views/InformesSideBar.java | 154 +- src/danielcortes/xyz/views/IngresosView.java | 495 ++++--- src/danielcortes/xyz/views/MainSideBar.java | 109 +- 26 files changed, 2195 insertions(+), 1703 deletions(-) diff --git a/dist/Programa Caja.jar b/dist/Programa Caja.jar index 25ff2bcb3547bf9252ee2eccc12c9e82eaf5a2a0..2ffa91859de08ef1fcc9d3ef8aa02d23f50dfc01 100644 GIT binary patch delta 180355 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

weN>&@GVrn>VS zd){sL&vf#=Vw#pzhS15E_ycP~>niJ&avRjaGon8%-}{xD@Z4hs zJa6NTy4mlolBS;1`;vZ!Xp6ZIO?z?v*R00#nIBj? zN1n-6R4I8^w5n1+EFWH~E~{NN+p|2=*S41=^m^;?nofc359j#uXn?WTzPGGhVgIi2!$a2DbT_+Q{));6$2hlYT7fdBslj!dr~kpER-GXoRPaR3QA zj-FWB_}^4gY?d3v5MDgkJmt>nw724vD+%Ck{ivNEIqmHd>3#Zl!s{U zW2zT&(;EbU?|{LicN9_n{@WWK`C*l7pSOaRTmOR7yhoGnkIOyLPiQw(6~f!%v@r~$ zb2`p3o4i?Vp7o8OvGUse0KyM?djQx-k_LqY%ialy;s& z^pqXm;d(Ak8$wQc(Ew`5907kDYM%(t+F z?4_6q|D+u0#2%i#2R!$WF-HGiaKv2V~vSXx$i)3+=k4IrivU17;ohm-2rU zcp&qi<126O%5@dgZgr$>arif%kRi{HAt_rM`xJC&1*)4i&cYnm_R+EuX6zedMxRF3 zK*lin7$Z0};AeC%I?OTJ8qDP!O=?}`aMh&DiQN`)?hA7p33!x!Ws%J0-nvgS)C;)R zHV3N3xfD4GH|3XmRK#~P0_3AyI{J!wnJ$MK>3E4rq9vhGVBX1-s-Dbuw-lY=1XO2c zWs^D16J+5Y)MV*7GJ?u+il@Un zAzjiFVW$k<&$gjfy_s{-?ChUhagvWY@c>@c)4k0@a0TXPglm z&-};Z-Am09mSl~)vX1AHY0t8*vvwUOvgi2{+rI3D_VeaX51>V>IltSZ)6w}9hNk3% z{$ks`;aO`njN4(ZfG6wegQ9JNR+*?^lS27~2joTKH05d6huT?4Pn6LaS9Kf_hzaiKR zDL&9-8hl2-32=^1C6R!%E_EY;30Q_=Q`zTAfV6ev!DbAX2&NjK`cyQeJ{OejnFw}% z;O`|9SNWYXFO@PcoAM`M@|0?lOe!U{?+7XR2#spefb~^_`n5#PqdLMoXe z+!WSAWs+E146uPY*NyfB={8x@ChJ9rU{%<{7+N;r0GtfRp3!wCIW5S~C1IC!OXd}>TTPz8(-yN@Jt^yKvrZ*(FZfN>~8-9S&te;se+2&h#c$4FO-39$b z6|}5@E0-{C}C3bx@Pv(*e1b8GH`P4y_~n3U z1!n0YIsmK#lpHYJBc)0q9!cVaxp>}aac4A*JDzDAVLt|KKaMCUa6qnEoFZJ>Lt#cu zm8^opKdjIlgKW79di8)V*M2!OndVPbQujL<$^R{~0{t;8p8v&4E2RH-tn~c1$jVL< z03etVuO`=B1R8J(7}zQ{Cnq#nPq$mW4q-YC;^9u1G0OtsLe`WFNjVEJIH|~-;1MXG zo6QfYQQfRDCKZL^2H=u9Ql}NQeZWt(R3f!~fKH{$en(0*WqYMb zHD!P0P6b#$V5e4O3k@IX)6TQ|7fd24nOHrfAPy`7!>Jg1YloNwxQ1#3xCUMQAAA|# zO`>SQP@=u%!(^?;hrVgp6v}Q;d>?`*;!*2_j?B{U=<{ZBC-VPM5Nn*nCwsdN#Q_mNAEyyPw!Z1 zSLsk`kFTM=zHbz2iI4@ul87QTQ57UqV$9ZJud>l7v8apnhTpei z%x+8Fyrgw@<0h z)VDfk@M;^_LNYtnQQ?tcQFR7tw@@_i5p}jjOtKdwh#U8KSp5jo5wI!K^>fHTwP~rM zo=u9c5LCvfd^*ZJojpQNS7*W?QPRWiv|?_kV8-2ZN}aUZo@!XQX<2`uTHDMw-wRP2)a*44;S0QoC zoLA9g*6bTeWwrkB@!5=KuC^~A$dkpP{&lHX#wic}o2umW?KL`x@f0ROsY(NvajqIO zhhB)_w^xy9$53KUP=L0dK^!OZ)#ltaLR|a=r^!@za@Ck7lZ;I+V83=Q)2-HNG&=7v zyNzn8KG9|lVXoKUFX@qILq7yz{x|L`2{l*&$KP~Coaghy8n)TeRruLF&IV(1sHj1` zaeNB1UsR&}N2qH>qVC)BT?)$6b>5l_aMO;7ZT58>W!ux~1Uv(NVf>C4HY=-hVpLYR zlwrJ{?3;o*X^BX#0r;|{;o)@%9#i5TWkvAYsL$m;6LX5bIJhVB3y(94s~Kl*J#6<1 ztrwi0oOZ$ZyO^s0%pKGV4D(J^=3|n3a|jxXd7=(lT^P%B>U*Rp``f(P`u`Oq{-pZk zC@?#BJo9;AXUeIr#hSGLBD{NpxFx=(jT+qSf|+%>!ornq1<>V|5Bm6czdl=@RDLWn z#KB>0KGr#_3=@=v<_O_@TT5td&xY02nzQn~=V**G(4hSW(?qif?!^+g!(iIOsOzwm>yq@h88aI3=-${*}$~gjhP^4<31G7{Z-tb~ms+Rv)iTAbIYAy%!yMntgFlsP-a5-_A2W9LtUiX#ce_uJ zjwH$3uty_ob5&>QqGS0;RpirHzPbnbHS9@=aA+es72QU)GWpG)Hn&}FOk5T9kYS_r zAdO9BRFk1)Z7EXY5dM%$h$Vj6JrZ!Of}jamr)XU#1xQ^VAKHlL#K?Fr+zQ6GHAjN< zTO%gR9Ji;)_G6qx%2%e9wKBy&1#PntfB!SQ5v%1BP!yy70PPE}z|*J*?fv$} z8+N@=Vz1QawCn82G(}%!Ma5%i^MfY-ny--8UK}6qpqTCJ*z#~Ebd|Mo_FaLvIZJB- z(p$TRm8?=%emJr7O)=S?-$hQGV5%WP{!I<~J-}s_oQn%DTxLa`PSJ<|0=zCPurHwM zQ|}0MiCKqF63H2Ng(INRvBy8&t>2sJQeN9yoc6QFj;zE!*TGUc<7>MKE``#=lMw6b z_Ikd*n)?Mstvx9mXSY6_0sY#>IV@krw+FwAO~v%^uA%dGVz=H#DFpf2pLxH(R?MpK z9RqB9Ikj)U7ZVvgo|QzU_qZn5{N^jaufr3#_@$DeYNdf`Ikhx zdK|0d9qV0u9-H0WxJ@wZWxq)SP*W_gbVT%38G zVD5;k=5uMJMlIAreg9qPmPFN^YR3>QWg7zB5egeF?mb&$O9bGIGS``Qij)gi zpLD_VnXAL6vkw@B4TE zL4l#KrR5zSU8Bs7V+n{UQ8t%%?j2n5xWV?b zUNQ6Gy?KgcTb`w6gqeNLEk2#^T&SRl!)3XkskyhQ*@z(Cb_T#uo!Cfl(wtKEedsXu zV7(W1)Kr5X27~iprA$P}ILAE0?c?s8jmjv~HuiuS8=8{?nXF`|k8F-n%U-rh-yu&K z$VO#z9=`Ykta2;`jAtXlj+BM6G_lDbP&DSW#^QlKeb#29g7XfQ9hb9@U^RuQ#Z1Em zDl+pq@J739V+br%2Yo#Dd#(ETU?j zngs3oA_q8JP#_S!5RC>#lIH6{De`I-w@jwvgs|#Z0)Y5s*$t?+A+3}Ke~Jn2{ZO0K zr7H=<*AX z@34M4570=nc8^onSl^v08hJ4ra44~^^pW*3wlfUd67r%(_=s*l5i#5m7J;wzh_azK z&2DGL1F!&FE=WFH3J{XCCGfjS=`;4v+(q?G=xXfaf@Kc|&}i>>q=P;NqzKv8Z4 z+lqVYFN+bsWxZ;4R88ZD@0|UX9oEADuNkO7gB^h4%a`xwk&RC;i- z_m+3~^`Vx2UxX43_wlkqOb<}*uy^5A4?92vLJ+JV3O@|8u*^GuFiJl%>mkt{V?WXW z&IJfZBs~2VLQqXEw@l@NtB|X?;gn#On#iCtqnU>DNUH!8rvs7A>QkrW^>Drev2Ru3IMeD5*#5}|(5oOE zu3MuDI$f!_Cw$^Fsi^Yn;~^QS%ug^~%h-2uM){_FS>`S*>^jt7|IsN+G}z!M$yd4) z$?Lc`Y}h&scD|PH)eeMxaiF_<{*kzcpnc#g=?o5A!0hGp!rjIB75zsd_r5?4@fKw# z{EuXyJD(REDLlzgSdk?-b-@t~`1$pKq7NJGvJD*F4?(s%KT>!}bm#u5G-Q8M@#7_X zrMzP>!Hqqb-WVqU!=+f2;mhcPv>WF(BxOCK_7Ja~%250>Y!FsI499NeNBn~iJa&-D zALeZZkLragZlK8l*S^COe`msOWO&a?&pui7vb3f#Vh5HkrAdtt%pQd!!2G_l8LnT^ zNGhkExipp_RO1}>RlYNXqz=Iw1*veqy046zY3N(Q-i2~*)pF&yU-MD@P92Yq&S!-JvGe{r7v*bR%m5=Yt0h{aRs)+ z?$Entw?(n&1h!QXD1aPUC-(b(-%^MEZ7M7e!%~95rprR35@-s-2SH28D8~{qmjGgf z#SuST%iaxz#2v}@lb*L-v@ZWf43EsxzAK_lK3=4|B(G3eK%52;s1^X z0f9pMKl+Xc0r4;C`A>qP0`dR4C^PS2z7S@brk*3UcosfF{-;rC8iAzDRQqvG(o$KR zLJj#(qf#&W|JSHkjbj6l{D`%2L~Lz+Y&o-gd7PJ=bGZ2+(}?g~y@2qi6aNHoP=WZa1jBm8@^j7@ zal0;*?Ah~_6b7|Y4gQb5M+2nj=^Gy6c7;S$)i+T*G&lDjad2H=8oYsngLR|#$hfFZ zzpOY(BcY*D*Df##UXsT>K3-Cb#DG%{TxL{?5N*68fcdPHfD)R{ zKh*+by>Ft;dwu{Q6-~52tc)`!{Bw~5jCU!Bk05Ip6Ls@1S5Lz=Mg!%8ds=o@Wg6ff zG80`83XaOrJ@3aI8qBUnQOxWBOE8$?JL2>{$=Js-+O0?M2HNfGez0iJU?qUz&J|~k z<4v;Ov;;B)>37L^Qc7quB2f%lAL1K&s|!`Z(qWbNekXub5`Vc_xR+|1OyMSetRqqf z$(~9A;|VihNv=Jr$0DF0=STCewSG5BOcmy9#j<$5p$#K$O{IX*0Ons<3AWhN8ZwN; zjywsq(HBkd5|)b8#1%Fj$#UnDYJclJB?XJ$=Bz5W&d#|HjyyS9%Nr^bRcqNWh4<4) z?brWkLMj1hS4j4=k{c@#H5N@uCeO|}&>200F_+3@M8y$*6&oJzYng`9c1{{Qs`sl3 z%Sa{BNILB!Gbt4LThAAs;0w~p;TmG{mHWb6~kBC&gV|c zuIjfOS9*-TypTB9&X=bsg#7l6$dmHcF!5*%UCarmi}d=UtxsT<TbbIa|%pNaj$d7d~jr7obFf$odeimI>b zm$K4}Ec=4`d^kN{YZt~!uZ!|jaRLTb-=i>gYR7q1gt(Za66y%b;_HbiB*NTDDXO#I z>`eSlr1n>TQ!%Ib;r;a~SOmid9h0w>clZ6>n9XUFBXiB4KJ@+~A^rypkL>OpPpRo z%5n35ne3j9Q(@EgV979#Z50FnxBc46#tEG#oE%2{^yLDbq(qsv@f0@$C6&G(dGj*^ zrj61Foin(0h8Q{z4FrsW(X+crf;0U`Q7S+PVhr;9N2AfwUo)!1?Y>j+K8oS-mjR%jN^em(k z78b9MSuiRN+Bemxv~z2G^p&_=?AuqFEboz3qwHuIgQ1@Iel15n(%mUub%d61z>uIO zw(PIp@`*pjq?02@^+MSWE91QssWoHR&f&ePBCYY&8jXh8`EY@*tUn@g^s4sxkTvGW z_OI;tNa^%Eu}oOvp3m;7VREbJ1Z-JSNOv~!2)S#A9LAfw^XX9N%uzzur;_O2=R06& z!nxsGYUEE7AaC@u%Z7wAmwM=h0WGv)SC6%b+_j?u4{|dy!Y8Rzu>Cj+bVZXbZq2Va;6l0d?|8d5O!o-&=O-uTjFl2IDDlHylqR}g-N7q6^yCD8v3dcwCuZ3=3x7qyt740Hj|N*R_Xm!*rV z5N|Fg#3R^(8tGrwdOGC@zb!Qu5TT-Z zur|&0DR!t5o7S8f3MS>PbxWt#$5NE#X`7;{ zjc}Ep$A)@-M+^TVPCENgL&|SNfS3XfuS2&91qsLGxFD-X)#cov0Mun`b8c|OHW+_x zofW!ZEsAVaTjD0x^LSATCO4}7PMZZ(cHE;bSqb(rm%F^R|#bXBxq5s!i=MS zSsFO?DSAU-j1w>R;F)m40`J@KB?aVEAs2?LBJ@2P$56jz=1bMYoMBTsxYKl#D|^A5 z`&XK{U9tHIMh)^p01&x9^2c`(rqHpGzY8Eo=%_jt893vIQ`VP>)0?-XunCd|Y1Kza z=*eC`vElqO!)+Z7+8{ToWSiCdsuaNi<}#8~F|z8iRrp$-5k6IU7^i|U zCV3y6E1!F_ywuXY)vy|4pg0{^NcWDrUY+a~+7yKNiD+~QSpb4Iy+Zt~X8Na22#R3> zJJx&FdxWwAJYfJkI7ZjdrZdP#qK4upUH62Nux1d-~VG zJG8+U2C#)=bP5evhq>Bk<-xiFWTY4~Fx-}}1S6NVPp17UM;7C^tuW8}#V|e0R;O9K zhrSXhB*_+x?$nk6yLN|=pt1Tsy<~y7WJli0tOyV(M8n9o86%%@+JI_-EE0CxCMOm} zZi#VLaU4e0$%ts)D=ZTVYuO>6X`89fW|+x%GZJ#l%C>aFKk?20a&z&C&hj85MIT!t z9seZeGe^grL!N>>%skc*ZL%gHjg-+aZdJ2N`ss^~JAahnrdc^1>m^0h|C6;*YU6J6 z8$ZBVjZKw$Cl&T*$|Tb@K5@Pg0%J%jOc&)uunQKO_J=sYtV-<(NqclPiFV1D2Lfv& z31J9rFZq3foR-6)Sd3m)93B8`MqIIEuD45|#}3T|XO8m%HG4$KdnRHkyu4y}_Pd)| zDY7zFGd`?xinh8rrW!g~@jHjqYMu+R)GB~Sy-it*CE94nR<@g551mh1s#{FTfK*=_ zr8)$+s2WlGHW}9%)3A_Qf;q`W-2q>n3VnBxMS+A4T^9c03Vmghq7sY3En7FTGGjR_ zta6REx-G^5CV9HH&a=OfO^;sV$EElwd+2EeE>Rr}cgS=1&#(v~yD=d&mwFZTMtZ=4 z0x4XZS#q#XdUB!*jHr{HiDM{X$5nc!jL1-V(kSo%!&XiNH|dA)ifev4`cajUk=TUQRZ+vJr`=FY-T!BNJ7}eW=ga zoT!hgkQD7QX!PNvlUvHOznL7S{}utj;QwTW4mgKO7$VI=3OsioNb2{$DQ7MD_?_U% zyJPpVp!o^WM|%@>I|%jrizoU`7~DRMAN+23)IJ;W5c?gy4$zVhhjd)W4^t4tunnnd zDJm3)2lVu#5=!zNMCwE{8Ij$$4uUlS;(@dS_6BYk!g+;S_F3jF{I;+{e1!q9#LszX zxBg#4UW7A;;R+1Ta?R0-Prv;3LoGV;hqRs-JgZRFBu_75Oc5Vi(o!uX(eez&+j8&DbTFcQ zA{>av!Jcb44&+0~Qp~SCtSYB-wS}PV2DdHW17p93oOp1EgjIiAOHtHzD*As!3OA8N zc?B5)VvGELL<-@5M-%*Sw;6qE%nH^&MufeJ^LcwSGiSp|VNMYOgZTwx$W!_*{U`kY zkFIx&(d2o*hj*+U+qP}nwr!jD*tTuk=8oqc?r_K6vH9QcCwbodk|#M`sq|Ip7hRpM z)Hzq3i_FMPn2Z=lr%cuZT9lL5*%M66R=2KQ{a>T=-iS!Jj8TwAwpv*itx?x5u+VO^ zvI@2FR_kb6bh4G@Z^i{k-Km&;2|%5z^z>gF5KPOcH8g2XBlXFutz? zzz|%!i9u4cqc4iE$Ek-Sj=Xr?gM{Y{SBk#yKBR!>bbXhF?+8^gu5q*kP8TPL3&!Yb ze?*Vj(?M!&&Fv##cs9SV$NafD^tA5e4UPI;y+;7gE5e2J9L|LOe7oz&zC}39#y5zF z7=FXchc-I0^_4IARk)XgbbRA;ysHckNC;!X)D7{<-OLl_E83exLNL7&40i(mD&3nW zUT&IF73Q1OnYVh00n8H+g@$>hOXkDvdpmqr?>Q2)HQ&K)U76jI#AImkp^i=qUoPIr zK+|fSsat&YgafR+ zXIflMq>mh1n~bYYl!1q+NbERLqV3Tu)Du9nIIfe=Tpy+*jq&v1#-#@|S_!sOO~2V5 z(UinFz_QRa4$5V%mq2{9E$Kp}lCvoskItkTU)Q7R>}9SHD7KF;Q3&#e$asWgA!oAW z;?ITFJqW3WZ7xBMO`eyNd*9!M#D(m0B^sBv`gUk)=j0s0k<{SWDJp8tm9y_4CDeU0 z`j6!pI_PeyL{8ixkoEw~l&UpW6rL4UVO8`wxKJlL-S4}&l2dW@lg3@y5u&46aIEQN zHcBF|mrDOq?b~7{cO7hLV2H}VG?Ntcmz-6ZTR~p%={f0)%4?;L+lKo-e@hvh4G9-< zn02^_ySB=%Om>mKAMN>@Z$ncsGT@5N{6ddc=AIR9E1}~&PfY+gU3GN^r^;uskeizI z^k{G@Cp1^bfH^bRV>4?{l1-5Fi$f}IP6x=M}(Yjav^3d6)nVven2-llS ztehD*E~#BVSLguX%F6E?L>Ke0MG*7wBrV?JV{FqYKykb8RcvYE7eI+id0BDY`ZZiw zjY)%|#u&=>S1wO#(%?Jp$_Hhe^krsEa^Omr@XKyq%ROQ2l$UI=s=N6iwEn`VU3F&J za3j;QGi!n@0N!fn79Xf#*uDY>eem(=I2xI>&DKfxirfKmMso(9F4`M%qx<|Co*v$O z=-0a>26J@4mt(tDYVq4lW5V ztd@*!e!+l?-*NnEIuTJe`a;mpi)QUW?9TnG9Jf8xfT<+mSB)e6FFc&CcF2|`DRZfu zpJ>s8N#6ihd<><$Rt>H^_oC<@X|W%2vUEO^4qm#L+0e<|a{l_MjXP8c_n~~Pr};St zFe#}b#cG&56ADb8{YvfY6VZb~?@8rmF?6@6_zi1k#j%$8z1O-wj*9gpSQN(d8XZU> zS_exvelu|!XUO(voMJP8D1}c;ecsh! z9{)mPU>WKv;h?R!6jMk~0Gf)7l?Db(qq!lqwYw?B5`2xwCvfa7j|7MC`jugIab>{%dnxmX+6a^2@1!~GF)+Ol* zS;I3rToOJzLZx0H!j7G_yq7O^apW!)Xk9krajZ@990rLyBd5u-V@l@Yn4=^tt0K=&NQm5AR!y%BXH&GV>ZRdCN=xG)>Y3xI)=B-d}p zSLhkCmao`8Jq1RI+mkylL`f|cSNPaKw2`yE5ucv)XjgkA;eiNFb}2b=`~LzURsd5R zXi4K@m#2MDUe78zqtcOqO=8Q3(#v_2-H{J|%LD?ZKWuabLHiaeaqV)N@O1=bd;rKe zLRI&r6P56@m!jAmUjnK3tpVJBxxl5ym7dCvdW6-O59wYrDSDn0y;|J7O z{Fddtg9GvGXhCbdZ?ayBp}bmg{Q%LFFS7Z&GMrpjFkj7-om21}d_$Idc8E7voWCEy z0T3r%ffLPM4?k=jZnX1v9rtw!c5fYSy8d;2gDE?QPP~H|@4z*ChA@4C0gO-JYn?-w z-huufK}I2Md8sev59b0jrcg@RiluA?%Q4EiRbZK0V%$AdxvIrn7~ zR&7!ub{dhV0TTLhqB!eN4Kx4|QsD*l((;q>+l($Vsho)hp#`E5LX&vLeD2s(v>F0r zOsb_b*~6ZZZz27qr047JV$3UdZ>Yrq0=_AHi+!B6ef5L~8Z@Po1$QW_UMQ-|e;_M*F6Rzi$+br? zZi{K;k<`i~txXRlP@qFvb%NvxWoH=9#xs_WZD-9A?=~W%Qf1mjKl_+_`kkoM z0VGdKHU=gU0R|ps&~)TU_cESL*a$oK%>B92dC^si5ruZz)8CIS`TA~xoBU)&Bw~lM8ts1#&Qt>R+8Qvm}@CIRv`HC3C z0$|YT7SIqo(j{cdbk!X@(vKV)?t(qGF_Tf zq9bJiUoI4jZY_}YrSC`TZioXoEl%*qrnKMB7%N{Fl~0C>n0>gXTLZ{~gC2|LV;m2A z1`h|?Tk-mxV2-;A%E3M2SkIBr9+9t|hIFG~Cj0~_6??|c+yuy)d&;*&9?=uGp|IJfk2o8JU$2 zkZ58cTthm)m&P6RL50IV}5PIc-8gj?&pxo z4LT-4KK)!0eQIO zZ&Jkxd4N=LLT)Qme-eg*sRwO_&$KTJ;GaCQB}tY~(hPwLMi*;D|14SGGg`{e6ojbh z0hcr8H=Xj4PS&HvgBgXneY+@Ev-YD!)ESgb^7Pz83<&-h-f0%z(QRti`d=p~K?*FM z7|#qWp6Jh}W^<^|4*QGxdUvi>X>elU1SrpL$$*S)tDnz8Eu%T6=2u}Bu0^ALd2DEH z&V*a9TuHN}`EOHxy`9e~ui(ytKwq4y~ELiAIe)oSuy5MQ+!g#L&d!)S&A6` zG-=+EGopE^^I&EK6s}n_BjyCe_teGmq~;76-l;Ps<^%_&nq4A#<2+~VSCmuul=og) zlz?A+%E!_ynp1q*$J8tZG_Gkgf{EVMGb=1>zw~JD*_8L)vMhh`sUB;y%%^+D&$ycB zQ{G#%%x8E9%~VYLh0nm53#cB8vlNiW9-?N9?W<5SJnk1qPNO(mBhhQqv=|CLZ*9sig(`!p9Nnq5l=f}!R_N7bZpw!U z?U0_0r)8>)KZVQMyPTU)^8f1M4d(QoE9EgVtzkaJGy=X@ zD7%*ljd7Co^hu*(#AFt>8c|@$z+#& z2}!pJqKMl$EdN1UT(YbdBGW~yG56p@jQ&-1Pk+z+D4U}>njtp|5k(HDtp}03lSg-6~FB^qrJbV-A>v9l6_PpBC2um$9HpIu>$EC#lU?3GE#A+InbQ zJcOftY$@)qT&x5ysrDvlaBUg|?Jko>?fN4U4mVHB>3ol(#U@eZ<~R(Z&|FCI#r#*l!^h zklc4A7f{^4&%$f@fEPAw<&HfcCzEb4MdvBpgR!Nk=Ao4Z(NA7bq57;XnOtkKkg;K{ zIcF{wS3fQ;uR1t`gPwdro>iAaRiQl7iql`gvCP5FPwg+TCRQ-6U*J@dn|ND<@Xx}J zegl=zeCx3NWhASsb_fQZP6Dt&yIF6Mvej7rQ<*xW>9?1y#MG@ejT!YetPG~W9u_@A zb`wKkPAeR%;ZZ_GA!tsGVn}owR-R3(3Fd1kR@b$#m^)Qyb^D;Cg%x+!`s8*^B>{rZ zi@>gkSW>mO!9?=m9`GQoOvx@@k#=A*AW)qJrl*!i@Xzw=8J&|*EE!$G=Yj#4 zilIS!&n`NeX|^zZT~YDyXD&U+lt)AOx)}<6x#qNsj-B#Y))_Uj{c2=cv|881*MN_e z>}~I*=1n}x4BhGN-GEb^jo{c8v;;vc_2q&7M#j@28eC`!AwHZ{U%FVL3?O`2PA zhW^YoX7`v)M?bDh-IBU$2;_$%hI8ywZ4?A{9~0U7(Tq+ne#7(q=@%DF!y!$X-k~vE z@06H^{aJ?o?1rIQ^VI_qKwnJ9O&i08;=EMv%Gernx3`OA8=#h#CT3Iz_#D}7#8Z`L zda{rEA|dBX>mQ`_drS~5NFi~gxXmi8S`70$($VF1c37uNX9k5B9rKS#FH7sdF0r(a@qq2=XXEv@W~QR`2JdryVyvX?gi9GNw1-YF%0JipP%px_t#F`ESP~nv zh*{*2{@xgzlIIJc%BFIJ`95Q)H{PR6m1X>w`-Dpzdv33MCR%(lTE19%+N}OhewP?3 z7c(t3RVW&KZ-Kt!UgO;_$iP~R0JIHhj*u#PpOjhoAb@4w!d)jYJ4C{#_o0x%>o4|Z zDSJc}+me=6v^pqB4i-{mNyX$PF*3UB*}jIuNI0py>a0I%7)4`~u%l~jQ%GIhv*|vx zZ+h5=Z~_q>is(#8a&)X7h7)ipbTs7i5zNFwssLh~n>@w27N6PP%*bDo4q2Qfaa6QhJpcu5T|hY=zs0S0a%up$X5Re4ZZcLf$PSoM+14Z`2nc z&->y(;Wee#n?dM$d+-q&^L(2khmJj#*qo9S3NU!8R>+VVjkk`F!iZ=jc~2C+7ekd9 zIQF#=%|zlYdYYnFo%c~2M;X6cy-22&ZPd16&QDEci6>Ji>B?ufp<%-=szw+oed0Tc zRnFhqd*ZCY?G9On59+ieX_>b)DhS8 z!&odnRSUE=XKH0JEE~kQ6?x6Kac|^Mku|KV8MtcpIkWU>ynC5K;_V6-&1$JekNe02 zAUj{I_v*hx30-ajoV_LV^3gL2?&kGA@C2{-!9IxeNc~4a`=#8HR!GC{tPSV_Wm?62H^aj+wSwJ2Xfz{+KB{h>G98f@ z0GQzUqeZdksQ+?%MX|Hoy4nuw9*EK}IZJZ&nKrM`#^eAWKZ*~p&G$nzzMt?9ncZ!a ziY;m$Bk}FY@-E%%7iX-R_b01t=KcH*gIjdh@YF4=CiozZ&u1i+^Ox}h0o1mB!UZ-V zrlTiT(?+pWG5~~(SE^a+pUAki#XrZi=9XN7r_L*Ves&A-=GLO5OLH@*GjEgo-HPo% z7WH2-t7aM@Lz!gGjUvk_D5qg*VGnhgxGX6onLs}%3Zg_wTID4TtbUZOmJKWn6nZQM zOSsizteT2ng*swlD>N(u0KX+TOCv4*J`qF{$+kE2@0e(9OAX((^IS3nDNvSXuWW(W zNs!3+f3%X_>gMSb$|K*C9G9TA%jQg8+1jWmDnqtS@4rFu7NtZ2>Wa_7S*X|$rd7(* zN{W6DQdAFPjSE-JBo>L~e8G>c7FJCX0K;r(t5w{Oe$rRjBY?La0G5j%%5(+a;k2Vu zC=K0`9pjihYfYsi6d4R#S+oT0qXh1;QRP)cB+2S8f{Uw{QS}07;9!^7vHaW|8fE&3 zmCxZZsyNA{`i4jzjU}1eP9rL_7ZvU1OG)BO9;sd811NxuOEyL`;U*lBbqFIf2b{<| z+TbIerG}wOh8tozfT%N@sbbTyE^y@h`m(xC!jR{GYgFe>-~#y6II8kmPy!0#maO(Y zVcDf5m1RfvfrK6}DFjeys>pabZ0a-ux~rA%fwUXOvpnYvqg29sy@SM^!NA@(($4#d zBe~g%agu6TIq#$v`^9w1x!6G4Zmt&4 zuzA&fguf)=t-UO<-CP;gEhznZ)QoF=2mA2M{}0pnzW-R{czVz7JgEg)`2~?Mo5~J? z^OEp*ThavRM|IJOi=qIVQ*eH_Vx04a2n7)-ha!?KJbJdm-+%2&g0$HjC-$-&He1+~ zTDvo?p}YZ8fA__MZimAd*0)vQ;9WMKyIjR|+YlQ~g} zFlaO-%e*k9)nougfaHvp-$M*{D#*`=DM$n}=6(R!;fY(a{Gb~?gI|`!x$__hz{!PR zrE#CrSSvE_s@yv(w4)^~o_Lzd$noMsXSUq&gTG?crIW3R)sh zZfv%Ye=D*cSZ0e2m+X9Eju+qA5dZSP)8kI_TMOu@4W(Ft=&*!?xk2hQ2Iic)3FOQj zZdw77s(-aD9Ezm+(QZqy*hDY>ZH>dLbmZO^-UN>CRbD7`$6Q)1IcVKDw0&PM^1Csv zFWifCCwLTFPB_DFDWD_$)0hcoa1Co$!xu*p-GL`qD3fYkNgk>hB8 z#PvhBXqKU`>wBBpAb*3N3gc{WbkIYQ$J&L$*d*F1ihISHMQj3s zz@3xDsT7)_$D}cexF$)^D78cP$#~h4@vU}#G;AV+d3S9x?6%?($^Q49l+E!q2P$k> z3JLy({oH+6$j~ZclnxGn!Z*w}#fgNu4MM_BetjxG+@yV}H{EC0?FjU3fl{e7XG{?B z0@ZY8A5M8;a}eVCHQS4`m(&~22w;EN5&Lwit1u|twT6K&g{%dU6<%~vA}o|%hE5J? z4HQw6l#kRFHcs?}s2h!L!2z!a5wtyX=E*@=;NE@LyYV3K7du({b1L$NsUK>7Xwu3w zYM>L5&VFa@2BU+v>+VLa;{s!-aPi8}9gDbdL~{~6NlR7i+8>r)<;JV@41lNEK4s;v zV6m5U%%fT2cyP^~azmK9sAI_^J*;P?&mXl5dd#|3Kbs3Cum9I_oUZQcAW@#~C`{lL z@9kbPQ6R_N=1*p#`irkk?8;}*V7pSQPr0=S&$l){1C767bOs9YfyRG|8y0%xS+b$` z9)g2S_V==TrLD8B(m<^MO%BtLE4oWc@Rv6N-rFAMt!rMhwZ5~JzO$vivxUC1xxTZR zzGEW#hwi+>ug@WNilFOh7Bz}Qr6PXVaqxDbhWEs7>xDYO zAf6;aW4e;hOT4%l%)ky47z`=@$g2bONA^~$^#!UA8nKFKsxof@Mpy#XK%SjoG3so% zB3Ox1mp~#0FJ%gwAQHDBC;uRhKK*DeD7I`c0{P?@^2Mz5hyH~CY`ZLf2WH!LCKCwJ z)*qv{;kFp#D1eOmLLWxm}2z{YhLgY1ZYGVhcvoKn@& zsqP9ZL^vD|Cg_Hq`J=M|K+sxYV7p;(x-n%PX!`;?7=u?bPB|Z3Z{7?aK)l`(1EMte zK@1FqZ3(~{pn%bRyN~S40Z3|num%BR^jgiPF;_H5v{Y%zvUb2cusoai2RBn7zByfY z*?6&SdFu+GuvPuYkgituQM^OYFs1d>ft|j)13JSezCZDplK!88j+R4;YMHLX{btA3 zafQBvDH@?rk73}-3cSZE$isNhPI|VOs%;UMZ|r1EetAF5Ru*R;m_eIx%e1{@I<_|3 z@jLY5%mdM^h+5Gk1oak-Hht*BTtwE|l7!rb0S`K0u?z7z;>W0Ir>4+N!`>I+_JvVF&a4fw~baYeOY}(;G`dx_{9!Ug<*MZ6Skj>LxSYw8TeeLSU?dB zFR$)1sbn^!vqy5{{c)*=v$F!+EPV&*E#K`Br6kpHD@QgXn?0&Z3CA0urvfC*v@LM%Q7%}_p9sU>C>{3p-CeVFv8jxz*77ZPL$e&ka*9 z^Q@P!s`+E@{;rzcqLdz@EP~wHKoSL{AxE+%2WhwfIu9@;K@W=h1?YHFS2MFx|FA{dOYv6u{xHKC%Fnmd*+av^m9fu-FC z0oACq!ep{wkA*;&oJm-B>bk^8N&aG=oSRen8!d^GMMx}vxKc0HEA>QU+N<~76Tu1| zF{m^9t#7#k;GZy2@YiFl8>(_tFC@ReLu}9vaxi*HMSP(&UR3J0OxYvmhX;GDv64!u zibbwnxg11(hzZ3SrQE+t&g=;Q!7dXn2niOv341|&2=AGxybu?>Kzx#0vL^@=&IQdd65PKR^&&|nBF;HZaWcC&E2Dx{M-{j6 zcvYySDjw&}EPlDuieN)gr(+iny8f624Wdl*Y^^eOFBw`yyE^c}d`-vzDcd60lR0?S_6YgTjERWwI4+$nUr?3z6aK@K`r@d^L{m-nO1A(tE>RT1V zC*Nq#j7$Zlh6)Frtc0dQO_@F>UKC)_s>EG{KccIC&uNu|4F27}v;RfI#9cmEFA2R2RpFs%m} zR|AW6pkO-2Hkx4_%(M(tmKji8i*(j%*f-ju9mIlHrYJ6|W@E)mC(F8(lFNlbQk9`4 z+0b}}f4G>9tpw+Zl{oH+oF_MR} zIDo!*w@8Zh?BAIHr~tb$>tlNJb*kuP%N3Zw;0302L-WSP?DZLflC74=W(=!$1&80K zvE_6Ah=^lL-~?*>p>I{qqV3t9l7u=Q(LemyN4#l!z%BjEZ76BD@r&$mLF^}(TY(?% zC~JvzlvRy$ls))&MacC;BSS)x{<}4?NVsB1^>gBjv>#B@DIN)^r1@%chACI>&t(xP z$z-+N$xo$wv|R20h6rK@f9ElH-5>L87z}ZKQ$h>eYJ$+Re$p7NbWpwK5WngY)#(zy zZZ1@962I~iHU3Tf$V>dtPy9fT`f`x^B9QtLkP3hz8$eC|9|)8GAWRBE|6A851qU5= z#zwpVo;~D$c#kA_C|*T;Bs2V;zHug>nWewTddZNWnaCejyG?Q*X!O+w^h?ja1KI7@H zNiG^bAO5_|(n5xw3+U(4eI4gvyuTm|n;I`pFb+h3Ztx$1?zFy>EKk*-E$y}N`rWlnQDAzJyPGc`&b zN>p}4O}!YO&Jv6ZzPO&w6qQJ?M+iQpH-0GsH3G8RNw-yd3ETKZ8*W-2bib(kCIrC% z&hv#|C!K`Xl6~{8@Eyhdm|ooZV19v&2bix20h5J|Xs)48A)T65xnHDRV9T`ww2Sjk z&D=s^;|YiDxO@(piqP2fh7I3R3QC;?cL)bCxYX zP4=C>Rp|GBmV%*uq6{?G3Ovuiguy>U`q?72gdiFpriu157FK8%c7>5{X(GMg#Xexg zK5)c7AjNtSNCMzU0we_wIjwL9qwB>Mq3gr~B6fU$uS&@WOeKV5ZzKZHiE zN;h}8Q>(Z-m&Rb{a0C`Cp$S!QkMy2^3ju~cFHTs8ZUEuv;e?^pT}cRqsG)J%pR}{1 z=R8_7QOGbmxvE5&YA z*s!l~Xm`Zwcam(ld*~m`c@dquxUZ_+F!P-El*{7<#`PaH(hvtf(Q6mfom}-G+?dKi z`OattPj%Ip-gVW3enQbd;ePd>H{3?ydFSYyRYy#=>wYTtH%98m@nEkFR1%CweE+LC z1O+`UaA%L#@sk^bAN)VjO^zQV44nHp-#250A4CaoQY^Dc$>^2C%18Y(jUy7tOT#&^ zz%%7^yoDQceJcZh>3d2E$6y8d`bIN5)GE>Y9&<5vO_t-lY|BiGDmA6b2A?wSIGSrS zM01=rwM687+!=k|&cF2E2BJ$=x`xE;7p6~oE+5K}?vVY8)$<-3;6%%6VkB}PRi?Sb z|BD}B`bmeq6Ki4-JWI?=tL8nQEdRc^7;Gn1FEdO@7iDmp@Ll<``}gDSyW0M#pSoUG zcw0MJ+|oFU;!XxQhn@Yae)-Isj)Ky|$;Rxb;>70=YMmzK3W7CRf!!ey5N11DC1RK- zJYvMQ{5vIXt@OepdkbiuO&op0*y6s_2Hzw=iyov`pu17cf0vF$5Sy8Y=H~wCQ1aAI zkHauB$OQ3ySdKkslzpQuqWTMIZeK6f5_*2$FP0IhKT?+Y=`F)p5QLQGZtH4-R{+J7 z-el_&=6~;;J@_dd9Q4PJKFI&0uXg-9bA|%>-#pX>f>37=2!Rk~$mgEHbf8Osh=TkV z(3J$y1!StNqzP2?RA0D1hdAJZ;A+ESUWNxtfMi(MTcxj-YvU*h*%PiL6c=_^d#R66 z;OHU6;V>~fC?BL7k9QJpEU=JvCRwpDSOsr#DW_zf&TyehO3IUcd+VyZtG9sIZ$;&Og@)bRWq(fbyv( zAbFr>!8duJVWENiJ5FRE?E@?ggwpm*ixM1tm=@az)Au+K)5MT zyGg3Yfho?$VXfGhA0-xBnqRrY;WND3gT88|ZO#^f^3i(x%``q4X3vU?8)kZSnZe{v zE~f254t;j7awqv*s~i`u)f{w59 zx1FGzmc{59xXKc>lEhO}r=C$3y>Eq^>5yZ4>O8x!shgssa=lQpI6*2ozs$K!>)&o= zfv528hU>xaudkG_S?AyVSG+xPb7s5M(_Myhb$TyH9vNO>A)9R%*6K0?;7@vSFjvRs znPWAaM7T^=y9D=+P@i2lHhbpp7o9Ni;#He4@%o}xzPRc{RZXr6so^l$)#cdPjwrzF z?yt(L&{9tAdc}RLZG+rZ&y?L2RmBd-aI_N1vL3$FV(SXF7K>{WV%aKMqhDnosUxxh5 zm{OBg&O^tLBG8OJDL3<`{WI~93mOn>RO?P^kHN%cy7x}0vxRK+d%be*+!rNpj zcEWd(qR+!IM$cjZ-f*SucH9g;?lifvMHWTNsWx2y2uWNpGnWfsh(#vF=YL=*~5{ zXK2+8#*nGqcTqE0%~Nmj@pJ>Bd`f%Z7pYeEJOoQ?Eghd5^owx2-SSQgYF%yPFEzjf&h71xXQOt&19Rk`*-b!Eii>|wx%d4fhZQXbej+rrnXd*g3|>aMLV z4LfY?)7#Q#Y`hUez2jHtK25uxR*Z%N1w*cXKxF1ujO}~nhs$|DeXRE)ye!2cyy!Fh z>(e2;+}~h++8<|=HnIK2xe2KN85mgz6pYCM5!3=;-|(u{J~jYJsB=wb4+8}+<_pr$ z-)hvo!3-cgEe4@UK460>os=Hfw3^LUckmZEeIS8b(HV*Ft&#OZew>{89fhe7Y6$mEFU9G=GLV z{fAsv^g*fe z*jVl$;ekIa>h|eZyg;)?V}HjSr68}FDUK4?mgq+sE+x;snc!AdxS#y*_{u_k!}N@6 z1rR)wIZo^OqT1?)rI4ypf%$0m_kWo%*ciUWZ{4M@yhA9oT8_yO_gA1pnV8+A&N)!R z*c|H7Uvm&YY3)osLUWvlEowKd!to6*iGq3=T(hld*-F$UJMrMp=gii@%%O&{%3(6> z6+u`43a*DP;pDBE6dm@})Gc0>Cme0zCHMAm<~*=}?_1bbb$r5WnmP@3Atg=sSOZnX zO;0vZVra!y=rm0#)?s4?MI|<1W0bbCC0h^*x!Z; zpfm-LS5xzu&Rt{aG%M>eMr^A^>Xb#X4ZN?g9cgkP!>4f9mmVcfqYV7q5A`8ZaLAF( z-72@+2ZY`sQ7*@E71`~Fx;K09VZt8WR?J6apO=H-`{{Cj>WOj z2YQ-fkULj+WSNXb^Iz!8h6*`J1|a_mCIOU5s`2_`yj}=sbb4c=3CZUXTt_iV`+y;p zjNX-m>Pmoa6sflH1@#B}LpjYQ_S3l6XhCsD2+?Um3P*Km%-3iuMC#1e)~;&1ryI#% zOVUU5q+t4`7|MMW8%yGSNZ;NyefrBeXBGs_5i|>Z&Hbg_r5n2LYMAQi%9M}HKmbsG zxg*j;bzpmWASIspqWUiZn4DW}9AvgtVjN_SRb<=;1&&S0ft*`!oB|UtiUY@@IK@uQ zv{(lho)ZX-3n9n0C{ZG(W?2HH;8~Zb$h3-$8_%}NjZ<~#CS|MLt>+w7c z;DKpZObQ=*BpB>RP%}4b(|q%Oa;S*L==xn{m8T&`byXy>wfazvoyUf1$sA*Bt-6vW zl;@W2{YgqdLb!4(;!qLQ8x5}j6vGMs<%D|^=g0d8hA;B^WFqkSHXs0_6Tmny4pjxB zK*`{RxkALBK4nFu4kY3_Fe(+b!g{SjmJ6W>sO;m_j3Fr@< z3v3g838;=p3wdS7dlpVL1XSF92*}gWluc65ACEj%xRC3|q{%j(ytbybCt>z%i>v`X zn{tGEbNZojqM6%s`xQB%yP~J;Nz`vo+(@^K9K%OkV5f$d}Nu|{wfa*CT?b?L=(8K}noFW=ThXko-fOaw$ z4y=I%)l>c#3jU!9KmqTJ{ucuWsV9JTIuZ)3fm|UMxkk~1^-}@P*C}13*%-Ewv_AfI zH#c?hT+h_g;wX2^h@<9iZpw?Vc{bC#%6&MR3bYH$j2RcAoON{&Xv{f|VUs(7zyp8O zyt7dlZWzCz*n#x}`!nwOW9`nr7wSbiAiV(U>0UShbx{eBOAH@}6mgaqij5SSMf5?3 zBP!1pG$-~~n=K;y%q|<=+N!8cC_|L0zQo&&7uuJzZ85tR@bi{N76yNv3h)v7E@OsRv44_{M0INEL~17)uwav^DRGpcZEoz+zqo{r)|i z8g8Nr-L5=Fj72I2MNHeAHn`W3T)|#|aF|6tpk?MUr4c;Tj`9I!*N;hQOA}Oq)q_Hg zmA!{pcQ^Ly28wDZ7*vJ{)E$o3S{XC%^E>#agA5vQQhNPz15uQfaVLWmz}|2GColYa znDfV<@#h;4RV0tQl)?EsS-(NFP|ufbhu{Se;mBYmW@r(-;6|KaqXjk@A=uLEPvLI| z*I-9N8b66QjKc`?y?^J0!kMysm^gD9SL!4K7#(g3rx)q;Z@iS<>mRLdQVad^^`DCT z`t>!G99pK+7SBMTq!?#G7VWdZWI%!usKBf|g}4K+exMt5f%$-h;w|7Bg@Muh7)GcB z*E$O<`Jv&iJW5&!TWA^+*G)C$_GI`_+z^cp-84r4BL26y6J7mt1q>D-JHFDOVCb&^ z2sL(djlq8@UcQClgH%zP|5tWO@sOzDh&Iu1dhI^$SH{iu2h$w`IEG@D@kGoA#!b%$ z2mqQdQ*dOBO_#?Z)NL#D$AJYna>s7mCs-&($NrHMF8xr9G505uhznHcp2BFaXVKcW z*Y%DlFEPQpk`D;4ADH3gpMAI&nC)pffZ*|t8zEvT)C;%|((2Bz>lv|u2=7gRSEeRV z!9X@)@EqTdlONWWa38Y@RbywS0O+8#Hfgw6U;MSK?gq<$EF+1J*d_uy!!icT%49i( zz#4u#?U8v)E_0Gmq;aB$c9 z=P3U1s2yD+=|k2`k_5ucg2>~sk(6-^BsVM}vf$TEiI}Ii^jASf#*}~%b6&$hGI-Zjeby zDR4^H20;TTL~zp$90YN@5gn+kx?9e@iOjqjK9|AszbuBm`oTC3y>bPPxq(28W!$K2 zMSiGkt*z|KzWm(Ue_JH07J8$7S?sa$M(q1D@pGX3)(cx9#B&BJ9tf4W#~=I7FA)$p zKYne6=^q(*SJH|oRBcZ<7_{h2YF#btLHS;N?bY&sY>)~^;x`J)j~}Xx|A!6A_@fOX^gqrg z1<*p0L1YDjmhq8$h6C8v)OEtu#QxGqZ*6XkibLU5zhskD-K z*rF=6wYGQcUZv@&p-`X-`#~Ru0UDMpLM#O0N-w{ux0RYLE5+D~=xq{?ZLu4N&9l_c ztQUThx3ZFsMrj-lB~ilfI|umwzRvx=%=r#@RsW&y#T&V@U=F~89R};mr$vm6KpvEW zw$5Z>5e6@Wa^eDq^MHQe4Q(V`M?%;Y#+D4WLOKjF2~d-h0F#QEWM<|j7$)$OlOs&N zy(J>?(vlJ+dvH2J1@Tk)%}souDl8UOtQd34DsqW@`(*W_0R6xe#E&6x9&T>}%u58? zpE!^ac5#xZKNP?Sbz}C!5c#12@+LL50m2zpar&h@)={dGb%q!Q4yBwOO_SBeMJvYD zTuKo!s_8pl zNo8ZeK=EP@5+{~^oph*YUCtT>2gOI{Vmkh()vAO0;4VOh%a}slG{NS~B;W9XXQZ3n zSih_bxtjU1v&3>H0ffPCe%nUw9n;;U_~u{PFK0g~>m z$n^AHy(EAklx!KjGQMOwW@J|xHi@oBE0yWPs<>fh-s{-NDA_dSHv~&|TQ#$Fa%`IE zt!u5=h|%N8D#BT`#R2o^;z!Q>Josh7kRb}fQ+3vQ9qjpEFXge0lU(!%n<(e+k43HL zX7oB+8p_2vt<){2ITF4qa{9FudM5~+⪚=B`E;9N2$&Vo@x1Pgs$@UnIsToWjc+l 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

F}7Qg@R&b91#oaC{}PR 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%0D4f$C3HxivHSP?Gk9i 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 BIfWbbq@*L--S-zHi15xJ%7d;2Sj! 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 delta 180110 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

6VVo(-IgFVFr&|HQAf*qsu?^#*Nb#$ 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 diff --git a/src/danielcortes/xyz/models/caja/CajaDAO.java b/src/danielcortes/xyz/models/caja/CajaDAO.java index 941f7d3..b96cd52 100644 --- a/src/danielcortes/xyz/models/caja/CajaDAO.java +++ b/src/danielcortes/xyz/models/caja/CajaDAO.java @@ -30,12 +30,35 @@ import java.util.Optional; public interface CajaDAO { + /** + * Obtiene todas las cajas + * @return Una lista que contiene las cajas + */ List getAll(); + /** + * Obtiene una caja por su id + * @param id ID de la caja + * @return Optional que puede contener la Caja o puede estar vacio. + */ Optional getById(int id); + /** + * Obtiene una caja dada su fecha + * @param fecha Fecha a la que pertence la caja + * @return Un optional que puede contenter una caja o puede estar vacio + */ Optional getByFecha(LocalDate fecha); + /** + * Guarda una caja, le otorga un id a la caja guardada + * @param caja Caja a guardar + */ void insert(Caja caja); + + /** + * Actualiza una caja + * @param caja Caja actualizar + */ void update(Caja caja); } diff --git a/src/danielcortes/xyz/models/caja/SQLiteCajaDAO.java b/src/danielcortes/xyz/models/caja/SQLiteCajaDAO.java index 91d6af8..4cb6a38 100644 --- a/src/danielcortes/xyz/models/caja/SQLiteCajaDAO.java +++ b/src/danielcortes/xyz/models/caja/SQLiteCajaDAO.java @@ -36,10 +36,6 @@ import java.util.Optional; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -/** - * Objeto DAO que realiza las querys y mapeos necesarios del objeto Caja - * En especifico esta implementacion se comunica con la base de datos SQLite - */ public class SQLiteCajaDAO implements CajaDAO { private static final Logger log = LogManager.getLogger(SQLiteCajaDAO.class); private SQLiteConnectionHolder connectionHolder; @@ -48,11 +44,6 @@ public class SQLiteCajaDAO implements CajaDAO { this.connectionHolder = new SQLiteConnectionHolder(); } - /** - * Obtiene todas las instancias de Caja en la base de datos, las cuales mapea al objeto - * Caja y devuelve una lista con todos estos - * @return Una lista con todas las instancias de Caja en la base de datos - */ @Override public List getAll() { log.debug("Se intentara conseguir todas las Cajas"); @@ -77,13 +68,6 @@ public class SQLiteCajaDAO implements CajaDAO { return cajaList; } - - /** - * Obtiene una instancia de Caja desde la base de datos - * @param id el id de la fila de Caja en la base de datos - * @return Un optional conteniendo la caja y el cual puede estar vacio, dado que no es 100% seguro que el id - * entregado sea valido o exista en la base de datos - */ @Override public Optional getById(int id) { log.debug("Se intentara conseguir una Caja con el id " + id); @@ -108,12 +92,6 @@ public class SQLiteCajaDAO implements CajaDAO { return Optional.ofNullable(caja); } - /** - * Obtiene una instancia de caja dada su fecha. - * @param fecha Fecha a la cual corresponde la caja - * @return Un optional conteniendo la caja y el cual puede estar vacio, dado que no es 100% - * seguro que la fecha entregada corresponda a una caja en la base de datos - */ @Override public Optional getByFecha(LocalDate fecha) { log.debug("Se intentara conseguir la caja con fecha " + fecha); @@ -138,10 +116,6 @@ public class SQLiteCajaDAO implements CajaDAO { return Optional.ofNullable(caja); } - /** - * Inserta en la base de datos una instancia de Caja nueva. - * @param caja La caja a insertar, una vez que ocurra, se le otorgara un id. - */ @Override public void insert(Caja caja) { log.debug("Se intentara insertar la caja " + caja); @@ -166,10 +140,6 @@ public class SQLiteCajaDAO implements CajaDAO { log.debug("Se inserto al caja " + caja); } - /** - * Actualiza una caja existente en la base de datos - * @param caja La caja a actualizar. - */ @Override public void update(Caja caja) { log.debug("Se intentara actualizar la caja " + caja); diff --git a/src/danielcortes/xyz/models/calculo_fondo/CalculoFondoDAO.java b/src/danielcortes/xyz/models/calculo_fondo/CalculoFondoDAO.java index 0d1826a..35700cc 100644 --- a/src/danielcortes/xyz/models/calculo_fondo/CalculoFondoDAO.java +++ b/src/danielcortes/xyz/models/calculo_fondo/CalculoFondoDAO.java @@ -30,17 +30,48 @@ import java.util.Optional; public interface CalculoFondoDAO { + /** + * Obtiene todos los CalculoFondo + * @return Una lista con los CalculoFondo + */ List getAll(); + /** + * Obtiene una lista con los CalculoFondo de una Caja + * @param caja Caja a la que pertencen los CalculoFondo + * @return Una lista con los CalculoFondo + */ List getByCaja(Caja caja); + /** + * Obtiene un CalculoFondo dado su Id. + * @param id Id del CalculoFondo + * @return Un optional que puede contener el Calculo fondo o puede estar vacio. + */ Optional getById(int id); + /** + * Obtiene la suma de los valores del CalculoFondo de una Caja. + * @param caja Caja a la que pertencen los CalculoFondo a sumar + * @return La suma de los valores. En caso que la caja sea Caja.EMPTY retornara 0 + */ int getTotalCalculoFondo(Caja caja); + /** + * Guarda un CalculoFondo, le otorga un id una vez guardada. + * @param calculoFondo CalculoFondo a guardar + */ void insert(CalculoFondo calculoFondo); + /** + * Actualiza un CalculoFondo + * @param calculoFondo CalculoFondo a actualizar + */ void update(CalculoFondo calculoFondo); + /** + * Elimina un CalculoFondo + * @param calculoFondo CalculoFondo a eliminar + */ void delete(CalculoFondo calculoFondo); } diff --git a/src/danielcortes/xyz/models/calculo_fondo/SQLiteCalculoFondoDAO.java b/src/danielcortes/xyz/models/calculo_fondo/SQLiteCalculoFondoDAO.java index 7a5f26b..2580ad2 100644 --- a/src/danielcortes/xyz/models/calculo_fondo/SQLiteCalculoFondoDAO.java +++ b/src/danielcortes/xyz/models/calculo_fondo/SQLiteCalculoFondoDAO.java @@ -38,10 +38,6 @@ import java.util.Optional; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -/** - * Objeto DAO que realiza las querys y mapeos necesarios del objeto CalculoFondo - * En especifico esta implementacion se comunica con la base de datos SQLite - */ public class SQLiteCalculoFondoDAO implements CalculoFondoDAO { private static final Logger log = LogManager.getLogger(SQLiteCalculoFondoDAO.class); private ConnectionHolder connectionHolder; @@ -50,11 +46,6 @@ public class SQLiteCalculoFondoDAO implements CalculoFondoDAO { this.connectionHolder = new SQLiteConnectionHolder(); } - /** - * Obtiene todas las instancias de CalculoFondo existentes en la base de datos, las - * cuales mapea a el objeto CalculoFondo y devuelve una lista con todos estos - * @return Una lista con todos las instancias de CalculoFondo en la base de datos - */ @Override public List getAll() { log.debug("Se intentara conseguir todos los CalculosFondo"); @@ -84,15 +75,7 @@ public class SQLiteCalculoFondoDAO implements CalculoFondoDAO { return calculoFondoList; } - /** - * Obtiene todas las instancias de CalculoFondo que estan relacionadas a una caja. - * En caso que la caja entregada sea igual a Caja.EMPTY, se retornara automaticamente - * una lista vacia sin realizar ninguna query. - * - * @param caja Instancia de una caja existente en la base de datos, o que al menos - * tenga un id que exista en ella. - * @return Una lista de todos los CalculoFondo de la caja entregada - */ + @Override public List getByCaja(Caja caja) { log.debug("Se intentara conseguir todos los calculos fondo de la caja " + caja); @@ -125,12 +108,6 @@ public class SQLiteCalculoFondoDAO implements CalculoFondoDAO { return calculoFondoList; } - /** - * Obtiene una instancia de CalculoFondo desde la base de datos - * @param id el id de la fila de CalculoFondo en la base de datos - * @return Un optional que puede estar vacio, dado que no es 100% seguro que el id - * entregado sea valido o exista en la base de datos. - */ @Override public Optional getById(int id) { log.debug("Se intentara conseguir un CalculoFondo con id " + id); @@ -159,14 +136,6 @@ public class SQLiteCalculoFondoDAO implements CalculoFondoDAO { return Optional.ofNullable(calculoFondo); } - /** - * Obtiene la suma de los valores de CalculoFondo de una caja. - * En caso que la caja sea igual a Caja.EMPY, se retornara automaticamente 0 sin - * realizar ninguna query. - * @param caja Instancia de una caja existente en la base de datos, o que al menos - * tenga un id que exista. - * @return La suma de los valores de CalculoFondo en la caja entregada. - */ @Override public int getTotalCalculoFondo(Caja caja) { log.debug("Se intentara conseguir la suma de los valores de los CalculosFondo de la caja " + caja); @@ -195,11 +164,6 @@ public class SQLiteCalculoFondoDAO implements CalculoFondoDAO { return sum; } - /** - * Inserta en la base de datos una instancia de CalculoFondo nueva. - * Una vez que sea insertado, se le agrega un id al objeto entregado. - * @param calculoFondo instancia que se insertara. - */ @Override public void insert(CalculoFondo calculoFondo) { log.debug("Se intentara insertar el calculoFondo " + calculoFondo); @@ -226,11 +190,6 @@ public class SQLiteCalculoFondoDAO implements CalculoFondoDAO { log.debug("Se inserto el calculoFondo " + calculoFondo); } - /** - * Actualiza un calculo fondo existente en la base de datos. - * La instancia que se actualizara sera la del id que tenga el objeto entregado. - * @param calculoFondo instancia de CalculoFondo a ser actualizada. - */ @Override public void update(CalculoFondo calculoFondo) { log.debug("Se intentara actualizar el CalculoFondo " + calculoFondo); @@ -250,11 +209,6 @@ public class SQLiteCalculoFondoDAO implements CalculoFondoDAO { log.debug("Se actualizo el CalculoFondo " + calculoFondo); } - /** - * Elimina de la base de datos el objeto CalculoFondo entregado. - * La instancia en especifico sera la del id del objeto entregado - * @param calculoFondo instancia de CalculoFondo a eliminar. - */ @Override public void delete(CalculoFondo calculoFondo) { log.debug("Se intentara eliminar el CalculoFondo" + calculoFondo); diff --git a/src/danielcortes/xyz/models/documentos/DocumentosDAO.java b/src/danielcortes/xyz/models/documentos/DocumentosDAO.java index 93259de..38bef0e 100644 --- a/src/danielcortes/xyz/models/documentos/DocumentosDAO.java +++ b/src/danielcortes/xyz/models/documentos/DocumentosDAO.java @@ -30,19 +30,58 @@ import java.util.Optional; public interface DocumentosDAO { + /** + * Obtiene todos los Documentos + * + * @return Una lista con todos los Documentos + */ List getAll(); + /** + * Obtiene un Documentos dado su id + * + * @param id Id del Documentos + * @return Un optional que puede contener el Documentos o puede estar vacio + */ Optional getById(int id); + /** + * Obtiene un Documentos dado su Caja + * + * @param caja Caja a la que pertence el Documentos + * @return Un optional que puede contener el Documentos o puede estar vacio + */ Optional getByCaja(Caja caja); + /** + * Obtiene la suma de los valores de los documentos en una Caja + * + * @param caja Caja a la que pertencene los Documentos + * @return La suma de los valores de los documentos, si la Caja es Caja.EMPYY retorana 0 + */ int getTotalDocumentos(Caja caja); + /** + * Guarda un nuevo documentos, le otorga un id una vez guardado. + * @param documentos Documentos a guardar + */ void insert(Documentos documentos); + /** + * Inserta un documentos con valores por default. + * @param documentos Instancia del documento a guardar + */ void insertDefault(Documentos documentos); + /** + * Actualiza un documentos + * @param documentos Documento a actualizar + */ void update(Documentos documentos); + /** + * Elimina un Documentos. + * @param documentos Documentos a eliminar + */ void delete(Documentos documentos); } diff --git a/src/danielcortes/xyz/models/documentos/SQLiteDocumentosDAO.java b/src/danielcortes/xyz/models/documentos/SQLiteDocumentosDAO.java index 7b27de7..c09411c 100644 --- a/src/danielcortes/xyz/models/documentos/SQLiteDocumentosDAO.java +++ b/src/danielcortes/xyz/models/documentos/SQLiteDocumentosDAO.java @@ -38,10 +38,6 @@ import java.util.Optional; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -/** - * Objeto DAO que realiza las querys y mapeos necesarios del objecto Documentos - * En especifico esta implementacion se comunica con la base de datos SQLite - */ public class SQLiteDocumentosDAO implements DocumentosDAO { private static final Logger log = LogManager.getLogger(SQLiteDocumentosDAO.class); private ConnectionHolder connectionHolder; @@ -50,10 +46,6 @@ public class SQLiteDocumentosDAO implements DocumentosDAO { this.connectionHolder = new SQLiteConnectionHolder(); } - /** - * Obtiene todas las instancias de Documentos que existen en la base de datos - * @return Una lista con los Documentos - */ @Override public List getAll() { log.debug("Se intentaran conseguir todos los Documentos"); @@ -85,12 +77,6 @@ public class SQLiteDocumentosDAO implements DocumentosDAO { return documentosList; } - /** - * Obtiene un Documento dado su id en la base de datos - * @param id el id de la fila del documento en la base de datos - * @return Un optional que contiene el documento que puede ser vacio, dado que no es - * 100% seguro que el id entregado sea valido o exista en la base de datos. - */ @Override public Optional getById(int id) { log.debug("Se intentara conseguir el Documentos con id " + id); @@ -122,12 +108,6 @@ public class SQLiteDocumentosDAO implements DocumentosDAO { return Optional.ofNullable(documentos); } - /** - * Obtiene el Documentos que esta relacionado con la Caja - * @param caja caja con la cual esta relacionado el Documentos - * @return Un optional que contiene el Documentos el cual puede ser vacio, dado que no - * es 100% seguro que exista un Documentos con esa caja. - */ @Override public Optional getByCaja(Caja caja) { log.debug("Se intentara conseguir el Documentos de la caja " + caja); @@ -161,12 +141,6 @@ public class SQLiteDocumentosDAO implements DocumentosDAO { return Optional.ofNullable(documentos); } - /** - * Obtiene la suma de los documentos pertenecientes a una caja - * @param caja caja a la que pertenecen los documentos que se sumaran - * @return Un int con la suma obtenida, en caso que la caja entregada sea igual a - * Caja.EMPTY se retornara 0, al igual que si no existe ningun documentos para la caja - */ @Override public int getTotalDocumentos(Caja caja) { log.debug("Se intentara conseguir el total de Documentos de la caja " + caja); @@ -193,10 +167,6 @@ public class SQLiteDocumentosDAO implements DocumentosDAO { return total; } - /** - * Inserta en la base de datos una instancia de Documentos nuevo - * @param documentos Documentos a insertar, una vez que ocurra se le otorgara un id - */ @Override public void insert(Documentos documentos) { log.debug("Se intentara insertar un nuevo documentos " + documentos); @@ -223,12 +193,6 @@ public class SQLiteDocumentosDAO implements DocumentosDAO { log.debug("Se inserto el documentos " + documentos); } - /** - * Inserta un documentos por default, teniendo los campos cheques, tarjetas y retiros - * siendo 0. - * @param documentos Instancia de documentos la cual se guardara con esas caracteristicas - * Solo se tomara el objecto caja para obtener el id de esta y asociarlo en la base de datos - */ @Override public void insertDefault(Documentos documentos) { log.debug("Se intentara insertar el documento default " + documentos); @@ -250,10 +214,6 @@ public class SQLiteDocumentosDAO implements DocumentosDAO { log.debug("Se inserto el documento por default " + documentos); } - /** - * Actualiza un Documentos existente en la base de datos - * @param documentos el documentos a actualizar - */ @Override public void update(Documentos documentos) { log.debug("Se intentara actualizar el documentos " + documentos); @@ -273,10 +233,6 @@ public class SQLiteDocumentosDAO implements DocumentosDAO { log.debug("Se actualizo el documentos " + documentos); } - /** - * Elimina un Documentos existente en la base de datos - * @param documentos El documentos a eliminar - */ @Override public void delete(Documentos documentos) { log.debug("Se intentara eliminar el documentos " + documentos); diff --git a/src/danielcortes/xyz/models/efectivo/EfectivoDAO.java b/src/danielcortes/xyz/models/efectivo/EfectivoDAO.java index 4374fdf..b2f1d81 100644 --- a/src/danielcortes/xyz/models/efectivo/EfectivoDAO.java +++ b/src/danielcortes/xyz/models/efectivo/EfectivoDAO.java @@ -30,20 +30,54 @@ import java.util.Optional; public interface EfectivoDAO { + /** + * Obtiene todos los Efectivo + * @return Una lista con los Efectivo + */ List getAll(); + /** + * Obtiene un Efectivo por su id + * @param id Id del Efectivo + * @return Un Optional que puede contener un Efectivo o puede estar vacio + */ Optional getById(int id); + /** + * Obtiene un Efectivo por su Caja + * @param caja Caja a la que pertence el Efectivo + * @return Un Optional que puede contener un Efectivo o puede estar vacio + */ Optional getByCaja(Caja caja); + /** + * Obtiene la suma de los valores de los Efectivo pertencientes a una Caja + * @param caja Caja a la que pertenecen los Efectivo a sumar + * @return La suma de los valores de Efectivo + */ int getTotalEfectivo(Caja caja); + /** + * Guarda un Efectivo, le agrega un id a la instancia + * @param efectivo Efectivo a guardar + */ void insert(Efectivo efectivo); + /** + * Guarda un Efectivo con valores por defecto, le agrega un id a la instancia + * @param efectivo Instancia de efectivo a guardar + */ void insertDefault(Efectivo efectivo); + /** + * Actualiza un Efectivo + * @param efectivo Efectivo a guardar + */ void update(Efectivo efectivo); + /** + * Elimina un Efectivo + * @param efectivo Efectivo a eliminar + */ void delete(Efectivo efectivo); - } diff --git a/src/danielcortes/xyz/models/efectivo/SQLiteEfectivoDAO.java b/src/danielcortes/xyz/models/efectivo/SQLiteEfectivoDAO.java index ca01bf2..a93bbc9 100644 --- a/src/danielcortes/xyz/models/efectivo/SQLiteEfectivoDAO.java +++ b/src/danielcortes/xyz/models/efectivo/SQLiteEfectivoDAO.java @@ -39,10 +39,6 @@ import java.util.Optional; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -/** - * Objeto DAO que realiza las querys y mapeos necesarios del objeto Efectivo - * En especifico esta implementacion se comunica con la base de datos SQLite - */ public class SQLiteEfectivoDAO implements EfectivoDAO { private static final Logger log = LogManager.getLogger(SQLiteEfectivoDAO.class); private ConnectionHolder connectionHolder; @@ -51,10 +47,6 @@ public class SQLiteEfectivoDAO implements EfectivoDAO { this.connectionHolder = new SQLiteConnectionHolder(); } - /** - * Obtiene todas las instancias de Efectivo que existen en la base de datos - * @return una lista de Efectivo - */ @Override public List getAll() { log.debug("Se intentara conseguir todas los Efectivo"); @@ -94,12 +86,6 @@ public class SQLiteEfectivoDAO implements EfectivoDAO { return efectivoList; } - /** - * Obtiene un Efectivo dado su id en la base de datos - * @param id el id de la fila del efectivo en la base de datos - * @return un optional que contiene el efectivo y puede estar vacio, dado que no es - * 100% seguro que el id entregado sea valido o exista en la base de datos. - */ @Override public Optional getById(int id) { log.debug("Se intentara conseguir un Efectivo con id " + id); @@ -137,13 +123,6 @@ public class SQLiteEfectivoDAO implements EfectivoDAO { return Optional.ofNullable(efectivo); } - /** - * Obtiene un Efectivo perteneciente a una caja - * @param caja Caja a la cual pertenece el efectivo requerido - * @return Un optional que contiene el efectivo y puede estar vacio, dado que no es 100% - * seguro que la exista un efectivo para la caja. Ademas la caja puede ser Caja.EMPTY - * en ese caso siempre se retornara un Optional.empty(). - */ @Override public Optional getByCaja(Caja caja) { log.debug("Se intentara conseguir un Efectivo perteneciente a la caja " + caja); @@ -182,12 +161,6 @@ public class SQLiteEfectivoDAO implements EfectivoDAO { return Optional.ofNullable(efectivo); } - /** - * Obtiene la suma de los efectivos pertenecientes una caja - * @param caja Caja a la cual pertenece los efectivos a sumar - * @return Un int con la suma obtenida, en caso que la caja sea igual a Caja.EMPTY - * simplemente se retoranara 0, al igual que cuando no exista ningun efectivo para esa caja - */ @Override public int getTotalEfectivo(Caja caja) { log.debug("Se intentara conseguir la suma de efectivos de la caja " + caja); @@ -216,10 +189,6 @@ public class SQLiteEfectivoDAO implements EfectivoDAO { return total; } - /** - * Inserta en la base de datos una instancia de Efectivo nueva - * @param efectivo Efectivo a insertar, una vez que ocurra se le otorgara un id. - */ @Override public void insert(Efectivo efectivo) { log.debug("Se intentara insertar el efectivo " + efectivo); @@ -250,11 +219,6 @@ public class SQLiteEfectivoDAO implements EfectivoDAO { log.debug("Se inserto el efectivo " + efectivo); } - /** - * Inserta un efectivo por default, teniendo todos los campos en 0 exceptuando el id de la caja - * @param efectivo Instancia de efectivo que se guardara, solo se tomara en cuenta la caja - * que almacena para obtener su id. - */ @Override public void insertDefault(Efectivo efectivo) { log.debug("Se intentara insertar el efectivo por default " + efectivo); @@ -276,10 +240,6 @@ public class SQLiteEfectivoDAO implements EfectivoDAO { log.debug("Se inserto el efectivo por default " + efectivo); } - /** - * Actualiza un Efectivo existente en la base de datos - * @param efectivo efectivo a actualizar - */ @Override public void update(Efectivo efectivo) { log.debug("Se intentara actualizar el efectivo " + efectivo); @@ -306,10 +266,6 @@ public class SQLiteEfectivoDAO implements EfectivoDAO { log.debug("Se actualizo el efectivo " + efectivo); } - /** - * Elimina un efectivo de la base de datos - * @param efectivo efectivo a eliminar - */ @Override public void delete(Efectivo efectivo) { log.debug("Se intentara eliminar el efectivo " + efectivo); diff --git a/src/danielcortes/xyz/models/egreso/EgresoDAO.java b/src/danielcortes/xyz/models/egreso/EgresoDAO.java index 9e9dbba..8389675 100644 --- a/src/danielcortes/xyz/models/egreso/EgresoDAO.java +++ b/src/danielcortes/xyz/models/egreso/EgresoDAO.java @@ -31,26 +31,80 @@ import java.util.List; import java.util.Optional; public interface EgresoDAO { + + /** + * Obtiene todos los Egreso + * @return Lista de Egreso + */ List getAll(); + /** + * Obtiene un Egreso por su Id + * @param id id del Egreso + * @return Optional que puede contener el Egreso o puede estar vacio + */ Optional getById(int id); + /** + * Obtiene todos los Egreso pertenecientes a una Caja + * @param caja Caja a la que pertencen los Egreso + * @return Lista con los Egreso + */ List getByCaja(Caja caja); + /** + * Obtiene los Egreso dado su nro + * @param nro nro del Egreso + * @return Lista con los Egreso + */ List getByNro(String nro); + /** + * Obtiene los Egreso dado su TipoEgreso + * @param tipoEgreso TipoEgreso al que pertence los Egreso + * @return Lista con los Egreso + */ List getByTipoEgreso(TipoEgreso tipoEgreso); + /** + * Obtiene los Egreso dado su TipoEgreso y su Caja + * @param tipoEgreso TipoEgreso al que pertence los Egreso + * @param caja Caja al que pertence los Egreso + * @return Lista de Egreso + */ List getByTipoEgresoEnCaja(TipoEgreso tipoEgreso, Caja caja); + /** + * Guarda un Egreso + * @param egreso Egreso a guardar + */ void insert(Egreso egreso); + /** + * Actualiza un Egreso + * @param egreso Egreso a actualizar + */ void update(Egreso egreso); + /** + * Elimina un Egreso + * @param egreso Egreso a eliminar + */ void delete(Egreso egreso); + /** + * Obtiene la suma de los valores de Egreso en una Caja + * @param caja Caja a la que pertencene los Egreso + * @return La suma de los Egreso + */ int getTotalEgreso(Caja caja); + /** + * Obtiene la suma de los valores de Egreso en un mes de un TipoEgreso + * @param mes Mes al que pertencen los Egreso + * @param tipo TipoEgreso al que pertence los Egreso + * @return La suma de los Egreso + */ int getTotalEgresoMesPorTipo(YearMonth mes, TipoEgreso tipo); } diff --git a/src/danielcortes/xyz/models/egreso/SQLiteEgresoDAO.java b/src/danielcortes/xyz/models/egreso/SQLiteEgresoDAO.java index 0c754a6..02530af 100644 --- a/src/danielcortes/xyz/models/egreso/SQLiteEgresoDAO.java +++ b/src/danielcortes/xyz/models/egreso/SQLiteEgresoDAO.java @@ -43,10 +43,6 @@ import java.util.Optional; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -/** - * Objeto DAO que realiza las querys y mapeos necesarios del objeto Egreso En especifio esta - * implementacion se comunica con la base de datos SQLite - */ public class SQLiteEgresoDAO implements EgresoDAO { private static final Logger log = LogManager.getLogger(SQLiteEgresoDAO.class); @@ -56,11 +52,6 @@ public class SQLiteEgresoDAO implements EgresoDAO { this.connectionHolder = new SQLiteConnectionHolder(); } - /** - * Obtiene todas las instancias de Egreso que existen en la base de datos - * - * @return una lista de Egreso - */ @Override public List getAll() { log.debug("Se intentara conseguir todos los Egreso"); @@ -100,13 +91,6 @@ public class SQLiteEgresoDAO implements EgresoDAO { return egresoList; } - /** - * Obtiene un Egreso dado su id en la base de datos - * - * @param id el id de la fila de egreso en la base de datos - * @return un optional que contiene el egreso y puede estar vacio, dado que no es 100% seguro que - * el id entregado sea valido o exista en la base de datos - */ @Override public Optional getById(int id) { log.debug("Se intentara conseguir un Egreso con el id " + id); @@ -144,12 +128,6 @@ public class SQLiteEgresoDAO implements EgresoDAO { return Optional.ofNullable(egreso); } - /** - * Obtiene una lista de egresos perteneciente a una caja - * - * @param caja Caja a la cual pertenece el egreso requerido - * @return Una lista de egreso, si la caja es Caja.EMPTY se retoranara una lista vacia - */ @Override public List getByCaja(Caja caja) { log.debug("Se intentara conseguir los egresos de la caja " + caja); @@ -191,12 +169,6 @@ public class SQLiteEgresoDAO implements EgresoDAO { return egresoList; } - /** - * Obtiene una lista de Egreso dado su nro en la base de datos - * - * @param nro nro del egreso que se busca - * @return una lista con los Egresos con el nro entregado - */ @Override public List getByNro(String nro) { log.debug("Se intentara conseguir los Egreso con nro " + nro); @@ -236,13 +208,6 @@ public class SQLiteEgresoDAO implements EgresoDAO { return egresoList; } - /** - * Obtiene una lista de Egreso pertenecientes a un tipoEgreso - * - * @param tipoEgreso TipoEgreso al que pertenecen los Egreso requeridos - * @return Una lista con los egresos, en caso que tipoEgreso sea TipoEgreso.EMPTY se retorna una - * lista vacia. - */ @Override public List getByTipoEgreso(TipoEgreso tipoEgreso) { log.debug("Se intentara conseguir los Egreso con TipoEgreso " + tipoEgreso); @@ -283,13 +248,6 @@ public class SQLiteEgresoDAO implements EgresoDAO { return egresoList; } - /** - * Obtiene los Egreso que pertenecen a un TipoEgreso y Caja - * - * @param tipoEgreso TipoEgreso al que pertence el Egreso - * @param caja Caja al que pertence el egreso - * @return Lista de egreso, se retoranara una lista vacia en caso que tipoEgreso o caja sean EMPTY - */ @Override public List getByTipoEgresoEnCaja(TipoEgreso tipoEgreso, Caja caja) { log.debug("Se intentara conseguir los Egresos pertencienes al tipoEgreso " + tipoEgreso @@ -328,12 +286,6 @@ public class SQLiteEgresoDAO implements EgresoDAO { return egresoList; } - /** - * Obtiene la suma de los egresos en una caja - * - * @param caja caja a la que pertenecen los egresos a sumar - * @return La suma de los egresos, se retonara siempre 0 en caso que la Caja sea Caja.EMPTY - */ @Override public int getTotalEgreso(Caja caja) { log.debug("Se intentara conseguir la suma de egreso de la caja " + caja); @@ -362,14 +314,6 @@ public class SQLiteEgresoDAO implements EgresoDAO { return total; } - /** - * Obtiene la suma de egresos en un mes de un tipoEgreso - * - * @param mes Mes del que se necesita la suma - * @param tipo TipoEgreso al que pertencen los egresos - * @return La suma de los egresos dentro del mes y con el tipo entregado, en caso que el - * tipoEgreso sea TipoEgreso.EMPTY se retornara siempre 0 - */ @Override public int getTotalEgresoMesPorTipo(YearMonth mes, TipoEgreso tipo) { log.debug( @@ -404,11 +348,6 @@ public class SQLiteEgresoDAO implements EgresoDAO { return total; } - /** - * Inserta en la base de datos una instancia de egreso - * - * @param egreso Egreso a insertar, una vez que ocurra se le otorga un id. - */ @Override public void insert(Egreso egreso) { log.debug("Se intentara insertar el egreso " + egreso); @@ -434,10 +373,6 @@ public class SQLiteEgresoDAO implements EgresoDAO { log.debug("Se inserto el egreso " + egreso); } - /** - * Actualiza un Egreso existente en la base de datos - * @param egreso Egreso a actualizar - */ @Override public void update(Egreso egreso) { log.debug("Se intentara actualizar el egreso " + egreso); @@ -458,10 +393,6 @@ public class SQLiteEgresoDAO implements EgresoDAO { log.debug("Se actualizo el egreso " + egreso); } - /** - * Elimina un Egreso existente en la base de datos - * @param egreso Egreso a eliminar - */ @Override public void delete(Egreso egreso) { log.debug("Se intentara eliminar el egreso " + egreso); diff --git a/src/danielcortes/xyz/models/estado_resultado/EstadoResultadoDAO.java b/src/danielcortes/xyz/models/estado_resultado/EstadoResultadoDAO.java index 9b78302..08d629c 100644 --- a/src/danielcortes/xyz/models/estado_resultado/EstadoResultadoDAO.java +++ b/src/danielcortes/xyz/models/estado_resultado/EstadoResultadoDAO.java @@ -6,16 +6,42 @@ import java.util.Optional; public interface EstadoResultadoDAO { + /** + * Obtiene todos los EstadoResultado + * @return Lista con los EstadoResultado + */ List getAll(); + /** + * Obtiene un EstadoResultado por su Id + * @param id El id del EstadoResultado + * @return Optional que puede contener un EstadoResultado o puede estar vacio + */ Optional getById(int id); + /** + * Obtiene un EstadoResultado por su mes + * @param month El mes del EstadoResultado + * @return Optional que puede contener un EstadoResultado o puede estar vacio + */ Optional getByMonth(YearMonth month); + /** + * Guarda un EstadoResultado y le otorga un id + * @param estadoResultado EstadoResultado a guardar + */ void insert(EstadoResultado estadoResultado); + /** + * Actualiza un EstadoResultado + * @param estadoResultado EstadoResultado a actualizar + */ void update(EstadoResultado estadoResultado); + /** + * Elimina un EstadoResultado + * @param estadoResultado EstadoResultado a eliminar + */ void delete(EstadoResultado estadoResultado); } diff --git a/src/danielcortes/xyz/models/estado_resultado/SQLiteEstadoResultadoDAO.java b/src/danielcortes/xyz/models/estado_resultado/SQLiteEstadoResultadoDAO.java index 78ef772..3cf76e5 100644 --- a/src/danielcortes/xyz/models/estado_resultado/SQLiteEstadoResultadoDAO.java +++ b/src/danielcortes/xyz/models/estado_resultado/SQLiteEstadoResultadoDAO.java @@ -13,10 +13,6 @@ import java.util.Optional; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -/** - * Objeto DAO que realiza las querys y mapeos necesarios del objeto EstadoResultado. En especifico - * esta implementacion se comunica con la base de datos SQLite - */ public class SQLiteEstadoResultadoDAO implements EstadoResultadoDAO { private static final Logger log = LogManager.getLogger(SQLiteEstadoResultadoDAO.class); @@ -26,11 +22,6 @@ public class SQLiteEstadoResultadoDAO implements EstadoResultadoDAO { this.connectionHolder = new SQLiteConnectionHolder(); } - /** - * Obtiene todos los EstadoResultado. - * - * @return una Lista con los EstadoResultado - */ @Override public List getAll() { log.debug("Se intentara conseguir todos los EstadoResultado"); @@ -72,13 +63,6 @@ public class SQLiteEstadoResultadoDAO implements EstadoResultadoDAO { return estadoResultadoList; } - /** - * Obtiene un EstadoResultado dado su id en la base de datos - * - * @param id id de la fila de EstadoResultado en la base de datos - * @return Un optional que contiene al EstadoResultado que puede estar vacio, esto porque no es - * 100% seguro que la base de datos tenga una fila con ese id o que el id sea valido - */ @Override public Optional getById(int id) { log.debug("Se intentara conseguir el EstadoResultado con el id " + id); @@ -120,13 +104,6 @@ public class SQLiteEstadoResultadoDAO implements EstadoResultadoDAO { return Optional.ofNullable(estadoResultado); } - /** - * Obtiene un EstadoResultado dado su mes - * - * @param month YearMonth que tiene el EstadoResultado. - * @return Un optional que contiene el EstadoResultado que puede estar vacio, esto porque no es - * 100% seguro que exista un EstadoResultado en ese mes. - */ @Override public Optional getByMonth(YearMonth month) { log.debug("Se intentara conseguir un EstadoResultado con el mes " + month); @@ -169,11 +146,6 @@ public class SQLiteEstadoResultadoDAO implements EstadoResultadoDAO { return Optional.ofNullable(estadoResultado); } - /** - * Inserta en la base de datos el EstadoResultado, al terminar le otorga un id - * - * @param estadoResultado EstadoResultado a insertar - */ @Override public void insert(EstadoResultado estadoResultado) { log.debug("Se intentara insertar el EstadoResultado " + estadoResultado); @@ -213,11 +185,6 @@ public class SQLiteEstadoResultadoDAO implements EstadoResultadoDAO { log.debug("Se inserto el EstadoResultado " + estadoResultado); } - /** - * Actualiza un EstadoResultado existente en la base de datos - * - * @param estadoResultado EstadoResultado a actualizar - */ @Override public void update(EstadoResultado estadoResultado) { log.debug("Se intentara actualizar el estadoResultado " + estadoResultado); @@ -253,11 +220,6 @@ public class SQLiteEstadoResultadoDAO implements EstadoResultadoDAO { } - /** - * Elimina un EstadoResultado desde la base de datos - * - * @param estadoResultado EstadoResultado a eliminar - */ @Override public void delete(EstadoResultado estadoResultado) { log.debug("Se intentara eliminar el EstadoResultado " + estadoResultado); diff --git a/src/danielcortes/xyz/models/ingreso/IngresoDAO.java b/src/danielcortes/xyz/models/ingreso/IngresoDAO.java index 0b3fb32..5536b40 100644 --- a/src/danielcortes/xyz/models/ingreso/IngresoDAO.java +++ b/src/danielcortes/xyz/models/ingreso/IngresoDAO.java @@ -32,34 +32,109 @@ import java.util.List; import java.util.Optional; public interface IngresoDAO { + + /** + * Obtiene todos los Ingreso + * @return Lista con los Ingreso + */ List getAll(); + /** + * Obtiene los Ingreso pertenecientes a una Caja + * @param caja Caja a la que pertenece los Ingreso + * @return Lista con los Ingreso + */ List getByCaja(Caja caja); - Optional getById(int id); - + /** + * Obtiene los Ingreso segun su TipoIngreso + * @param tipoIngreso TipoIngreso al que pertenece el Ingreso + * @return Lista con los Ingreso + */ List getByTipoIngreso(TipoIngreso tipoIngreso); + /** + * Obtiene un Ingreso segun su Id + * @param id Id del Ingreso + * @return Optional que puede contener un Ingreso o puede estar Vacio + */ + Optional getById(int id); + + /** + * Obtiene la suma de los valores de los Ingreso en una Caja + * @param caja Caja a la que pertenecen los Ingreso a sumar + * @return La suma de los valores de los Ingreso + */ int getTotalIngreso(Caja caja); + /** + * Obtiene el total de la suma de los valores de los Ingresos en un mes + * @param mes Mes al que pertenecen los Ingreso + * @return La suma del valor de los Ingreso en el mes + */ int getTotalIngresoMes(YearMonth mes); + /** + * Obtiene el total de Ingresos de TipoIngreso 'Boleta Exenta'. + * @param mes Mes en el que estan los Ingreso + * @return La suma de los valores de los Ingreso + */ int getTotalExentasMes(YearMonth mes); + /** + * Obtiene el total de la suma de los Ingreso de una Caja segun su TipoIngreso + * @param caja Caja a la que pertenecen los Ingreso + * @param tipoIngreso TipoIngreso a los que pertenecen los Ingreso + * @return El total de la suma de los Ingreso + */ int getTotalIngresoEnCajaPorTipo(Caja caja, TipoIngreso tipoIngreso); + /** + * Obtiene el Primer numero de los NroInicial de los Ingreso de una Caja pertenecientes a un TipoIngreso + * @param caja Caja a la que pertenecen los Ingreso + * @param tipoIngreso TipoIngreso al que pertenecen los Ingreso + * @return Un Optional que puede contener el NroInicial o puede estar vacio + */ Optional getPrimerNroInicialDeCajaDeTipo(Caja caja, TipoIngreso tipoIngreso); + /** + * Obtiene el Ultimo numero de los NroFinal de los Ingreso de una Caja pertenecientes a un TipoIngreso + * @param caja Caja a la que pertenecen los Ingreso + * @param tipoIngreso TipoIngreso al que pertenecen los Ingreso + * @return Un Optional que puede contener el NroFinal o puede estar vacio + */ Optional getUltimoNroFinalDeCajaDeTipo(Caja caja, TipoIngreso tipoIngreso); + /** + * Obtiene el Primer numero de los NroZInicial de los Ingreso de una Caja pertenecientes al TipoIngreso Boleta Fiscal + * @param caja Caja a la que pertenecen los Ingreso + * @return Un Optional que puede contener el NroZInicial o puede estar vacio + */ Optional getPrimerNroZInicialDeCaja(Caja caja); + /** + * Obtiene el Ultimo numero de los NroZFinal de los Ingresos de una Caja pertenecientes al TipoIngreso Boleta Fiscal + * @param caja Caja a la que pertenecen los Ingreso + * @return Un Optional que puede contener el NroZFinal o puede estar vacio + */ Optional getUltimoNroZFinalDeCaja(Caja caja); + /** + * Guarda un Ingreso y le otorga un id + * @param ingreso Ingreso a guardar + */ void insert(Ingreso ingreso); + /** + * Actualiza un Ingreso + * @param ingreso Ingreso a actualizar + */ void update(Ingreso ingreso); + /** + * Elimina un Ingreso + * @param ingreso Ingreso a eliminar + */ void delete(Ingreso ingreso); } diff --git a/src/danielcortes/xyz/models/ingreso/SQLiteIngresoDAO.java b/src/danielcortes/xyz/models/ingreso/SQLiteIngresoDAO.java index 8c0a1c0..5084a94 100644 --- a/src/danielcortes/xyz/models/ingreso/SQLiteIngresoDAO.java +++ b/src/danielcortes/xyz/models/ingreso/SQLiteIngresoDAO.java @@ -43,10 +43,6 @@ import java.util.Optional; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -/** - * Objeto DAO que realiza las querys y mapeos necesarios del objeto Ingreso. En especifico - * esta implementacion se comunica con la base de datos SQLite - */ public class SQLiteIngresoDAO implements IngresoDAO { private static final Logger log = LogManager.getLogger(SQLiteIngresoDAO.class); @@ -56,11 +52,6 @@ public class SQLiteIngresoDAO implements IngresoDAO { this.connectionHolder = new SQLiteConnectionHolder(); } - /** - * Obtiene todos los Ingreso - * - * @return Una lista con los Ingreso - */ @Override public List getAll() { log.debug("Se intententaran conseguir todos los Ingreso"); @@ -104,12 +95,6 @@ public class SQLiteIngresoDAO implements IngresoDAO { return ingresosList; } - /** - * Obtiene la lista de Ingreso perteneciente a una Caja - * - * @param caja Caja a la que pertence los Ingreso buscados - * @return Una lista de ingreso, en caso que la caja sea Caja.EMPTY se retoranara una lista vacia. - */ @Override public List getByCaja(Caja caja) { log.debug("Se intentara buscar los ingresos de la caja " + caja); @@ -152,13 +137,6 @@ public class SQLiteIngresoDAO implements IngresoDAO { return ingresosList; } - /** - * Obtiene un Ingreso dado su id en la base de datos - * - * @param id de la fila de Ingreso en la base de datos - * @return Un Optional que contiene el Ingreso que puede estar vacio,esto porque no es 100% seguro - * que exista en la base de datos o que sea valido - */ @Override public Optional getById(int id) { log.debug("Se intentara conseguir un Ingreso con id " + id); @@ -201,12 +179,6 @@ public class SQLiteIngresoDAO implements IngresoDAO { return Optional.ofNullable(ingreso); } - /** - * Obtiene los Ingreso pertenecientes a un tipoIngreso - * - * @param tipoIngreso TipoIngreso al que pertenece los Ingreso deseados - * @return Lista con los ingreso. - */ @Override public List getByTipoIngreso(TipoIngreso tipoIngreso) { log.debug("Se intentara conseguir los Ingreso con TipoIngreso" + tipoIngreso); @@ -245,12 +217,6 @@ public class SQLiteIngresoDAO implements IngresoDAO { return ingresosList; } - /** - * Obtiene la suma de los ingresos en una caja - * - * @param caja Caja a la que pertencen los ingresos a sumar - * @return la suma de los ingresos, en caso que la caja sea Caja.EMPTY siempre retoranara 0 - */ @Override public int getTotalIngreso(Caja caja) { log.debug("Se intentara conseguir el total de ingreso en la caja " + caja); @@ -277,12 +243,6 @@ public class SQLiteIngresoDAO implements IngresoDAO { return total; } - /** - * Obtiene la suma de ingresos en un mes - * - * @param mes Mes dentro del cual estan los ingresos - * @return la suma de los ingresos. - */ @Override public int getTotalIngresoMes(YearMonth mes) { log.debug("Se intentara conseguir la suma de los ingreso en el mes " + mes); @@ -309,12 +269,6 @@ public class SQLiteIngresoDAO implements IngresoDAO { return total; } - /** - * Obtiene el total de ingresos con el tipo boleta exenta dentro de un mes - * - * @param mes Mes al cual pertenecen los ingresos - * @return La suma de los ingresos con el tipo boleta exenta en el mes - */ @Override public int getTotalExentasMes(YearMonth mes) { log.debug("Se intentara conseguir el total de boletas exentas en el mes " + mes); @@ -340,13 +294,6 @@ public class SQLiteIngresoDAO implements IngresoDAO { return total; } - /** - * Obtiene el total de ingresos en una caja, de un tipo especifico - * - * @param caja Caja a la que pertenen los ingresos - * @param tipoIngreso TipoIngreso al cual pertencen los ingresos - * @return La suma de los ingresos. - */ @Override public int getTotalIngresoEnCajaPorTipo(Caja caja, TipoIngreso tipoIngreso) { log.debug("Se intentara obtener el total de ingresos de la caja " + caja + " y el tipo " @@ -374,14 +321,6 @@ public class SQLiteIngresoDAO implements IngresoDAO { return total; } - /** - * Obtiene el primer numero inicial de ingreso de un tipo de ingreso, dentro de una caja. - * - * @param caja Caja a la que pertencen los ingreso - * @param tipoIngreso TipoIngreso al cual pertenecen los ingreso - * @return Un Optional que contiene el primer numero inicial de ingreso,este puede estar vacio ya - * que no es seguro que exista tal numero inicial. - */ @Override public Optional getPrimerNroInicialDeCajaDeTipo(Caja caja, TipoIngreso tipoIngreso) { log.debug("Se intentara conseguir el primer numero inicial de ingreso en la caja " + caja @@ -412,14 +351,6 @@ public class SQLiteIngresoDAO implements IngresoDAO { return Optional.ofNullable(nroInicial); } - /** - * Obtiene el ultimo numero final de ingreso de un tipo de ingrso, dentro de una caja - * - * @param caja Caja a la que pertencen los ingreso - * @param tipoIngreso TipoIngreso al cual pertenecen los ingreso - * @return Un Optional que contiene el ultimo numero final de ingreso, este puede estar vacio ya - * que no es seguro que exista tal numero final. - */ @Override public Optional getUltimoNroFinalDeCajaDeTipo(Caja caja, TipoIngreso tipoIngreso) { log.debug( @@ -450,13 +381,6 @@ public class SQLiteIngresoDAO implements IngresoDAO { return Optional.ofNullable(nroFinal); } - /** - * Obtiene el primer numero z inicial dentro de una caja - * - * @param caja caja a la que pertenecen los ingresos en los que buscar - * @return Un optional que contiene el primer numero z inicial, este puede estar vacio ya que no - * es seguro que exista tal numero z inicial - */ @Override public Optional getPrimerNroZInicialDeCaja(Caja caja) { log.debug("Se intentara conseguir el primero numero z inicial dentro de la caja " + caja); @@ -484,13 +408,6 @@ public class SQLiteIngresoDAO implements IngresoDAO { return Optional.ofNullable(nroZInicial); } - /** - * Obtiene el ultimo numero z final dentro de una caja - * - * @param caja caja a la que pertenecen los ingresos en los que buscar - * @return Un optional que contiene el ultimo numero z final, este puede estar vacio ya que no - * es seguro que exista tal numero z final - */ @Override public Optional getUltimoNroZFinalDeCaja(Caja caja) { log.debug("Se intentara conseguir el ultimo numero z final dentro de la caja " + caja); @@ -516,10 +433,6 @@ public class SQLiteIngresoDAO implements IngresoDAO { return Optional.ofNullable(nroZFinal); } - /** - * Inserta un ingreso en la base de datos - * @param ingreso Ingreso a insertar - */ @Override public void insert(Ingreso ingreso) { log.debug("Se intentara insertar el ingreso " + ingreso); @@ -548,10 +461,6 @@ public class SQLiteIngresoDAO implements IngresoDAO { log.debug("Se inserto el ingreso " + ingreso); } - /** - * Actualiza un ingreso existente en la base de datos - * @param ingreso Ingreso a actualizar - */ @Override public void update(Ingreso ingreso) { log.debug("Se intentara actualizar el ingreso " + ingreso); @@ -574,10 +483,6 @@ public class SQLiteIngresoDAO implements IngresoDAO { log.debug("Se actualizo el ingreso " + ingreso); } - /** - * Elimnina un ingreso existente en la base de datos - * @param ingreso Ingreso a eliminar - */ @Override public void delete(Ingreso ingreso) { log.debug("Se intentara eliminar el ingreso " + ingreso); diff --git a/src/danielcortes/xyz/models/tipo_egreso/SQLiteTipoEgresoDAO.java b/src/danielcortes/xyz/models/tipo_egreso/SQLiteTipoEgresoDAO.java index 17655d8..7f41ad4 100644 --- a/src/danielcortes/xyz/models/tipo_egreso/SQLiteTipoEgresoDAO.java +++ b/src/danielcortes/xyz/models/tipo_egreso/SQLiteTipoEgresoDAO.java @@ -49,11 +49,6 @@ public class SQLiteTipoEgresoDAO implements TipoEgresoDAO { this.connectionHolder = new SQLiteConnectionHolder(); } - /** - * Obtiene una lista todos los TipoEgreso existentes - * - * @return Una lista de tipoEgreso - */ @Override public List getAll() { log.debug("Se intentara conseguir todos los tipoEgreso"); @@ -77,13 +72,6 @@ public class SQLiteTipoEgresoDAO implements TipoEgresoDAO { return tipoEgresoList; } - /** - * Obtiene un TipoEgreso dado su id en la base de datos - * - * @param id Id pertenciente al TipoEgreso - * @return Un optional que contiene el TipoEgreso y puede estar vacio, dado que no es 100% seguro - * que el id entregado exista o siquiera sea valido. - */ @Override public Optional getById(int id) { log.debug("Se intentara conseguir un TipoEgreso con id " + id); @@ -107,13 +95,6 @@ public class SQLiteTipoEgresoDAO implements TipoEgresoDAO { return Optional.ofNullable(tipoEgreso); } - - /** - * Obtiene un TipoEgreso dado su nombre - * @param nombre Nombre del TipoEgreso buscado - * @return Un optional que contiene el TipoEgreso y puede estar vacio, dado que no es 100% seguro - * que el nombre entregado exista o siquiera sea valido. - */ @Override public Optional getByNombre(String nombre) { log.debug("Se intentara conseguir un TipoEgreso con nombre" + nombre); diff --git a/src/danielcortes/xyz/models/tipo_egreso/TipoEgresoDAO.java b/src/danielcortes/xyz/models/tipo_egreso/TipoEgresoDAO.java index cf5bfcf..d598174 100644 --- a/src/danielcortes/xyz/models/tipo_egreso/TipoEgresoDAO.java +++ b/src/danielcortes/xyz/models/tipo_egreso/TipoEgresoDAO.java @@ -52,9 +52,24 @@ import java.util.List; import java.util.Optional; public interface TipoEgresoDAO { + + /** + * Obtiene todos los TipoEgreso + * @return Lista de TipoEgreso + */ List getAll(); + /** + * Obtiene un TipoEgreso dado su Id + * @param id Id del TipoEgreso + * @return Un Optional que puede contener el TipoEgreso o puede estar vacio + */ Optional getById(int id); + /** + * Obtiene un TipoEgreso dado su nombre + * @param nombre Nombre del TipoEgreso + * @return Un Optional que puede contener el TipoEgreso o puede estar vacio + */ Optional getByNombre(String nombre); } diff --git a/src/danielcortes/xyz/models/tipo_ingreso/SQLiteTipoIngresoDAO.java b/src/danielcortes/xyz/models/tipo_ingreso/SQLiteTipoIngresoDAO.java index cc2579e..e492063 100644 --- a/src/danielcortes/xyz/models/tipo_ingreso/SQLiteTipoIngresoDAO.java +++ b/src/danielcortes/xyz/models/tipo_ingreso/SQLiteTipoIngresoDAO.java @@ -36,10 +36,6 @@ import java.util.Optional; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -/** - * Objeto DAO que realiza las querys y mapeos necesarios del objeto TipoIngreso. En especifico esta - * implementacion se comunica con la base de datos SQLite - */ public class SQLiteTipoIngresoDAO implements TipoIngresoDAO { private static final Logger log = LogManager.getLogger(SQLiteTipoIngresoDAO.class); @@ -49,11 +45,6 @@ public class SQLiteTipoIngresoDAO implements TipoIngresoDAO { this.connectionHolder = new SQLiteConnectionHolder(); } - /** - * Obtiene una lista todos los TipoIngreso existentes - * - * @return Una lista de TipoIngreso - */ @Override public List getAll() { log.debug("Se intentara conseguir todos los TipoIngreso"); @@ -77,13 +68,6 @@ public class SQLiteTipoIngresoDAO implements TipoIngresoDAO { return tiposIngresoList; } - /** - * Obtiene un TipoIngreso por su id - * - * @param id Id unico del TipoIngreso - * @return Un optional que puede contener TipoIngreso o puede estar vacio, dado que no es seguro - * que exista un TipoIngreso con el id indicado - */ @Override public Optional getById(int id) { log.debug("Se intentara conseguir un TipoIngreso con id " + id); @@ -107,13 +91,6 @@ public class SQLiteTipoIngresoDAO implements TipoIngresoDAO { return Optional.ofNullable(tipoIngreso); } - /** - * Obtiene un TipoIngreso dado su nombre - * - * @param nombre Nombre del TipoIngreso - * @return Un optional que puede contenter un TipoIngreso o puede estar vacio, ya que no es seguro - * que exista un TipoIngreso para dado nombre - */ @Override public Optional getByNombre(String nombre) { log.debug("Se intentara conseguir un TipoIngreso con nombre " + nombre); diff --git a/src/danielcortes/xyz/models/tipo_ingreso/TipoIngresoDAO.java b/src/danielcortes/xyz/models/tipo_ingreso/TipoIngresoDAO.java index 0ba6918..e10b159 100644 --- a/src/danielcortes/xyz/models/tipo_ingreso/TipoIngresoDAO.java +++ b/src/danielcortes/xyz/models/tipo_ingreso/TipoIngresoDAO.java @@ -28,9 +28,24 @@ import java.util.List; import java.util.Optional; public interface TipoIngresoDAO { + + /** + * Obtiene todos los TipoIngreso + * @return Una lista con los TipoIngreso + */ List getAll(); + /** + * Obtiene un TipoIngreso dado su id + * @param id Id del TipoIngreso + * @return Un Optional que puede contener el TipoIngreso o puede estar Vacio + */ Optional getById(int id); + /** + * Obtiene un TipoIngreso dado su nombre + * @param nombre Nombre del TipoIngreso + * @return Un Optional que puede contener el TipoIngreso o puede estar Vacio + */ Optional getByNombre(String nombre); } diff --git a/src/danielcortes/xyz/models/version/VersionDAO.java b/src/danielcortes/xyz/models/version/VersionDAO.java index bb3fec1..50fc9a2 100644 --- a/src/danielcortes/xyz/models/version/VersionDAO.java +++ b/src/danielcortes/xyz/models/version/VersionDAO.java @@ -1,5 +1,12 @@ package danielcortes.xyz.models.version; -public interface VersionDAO { +public interface VersionDAO { + + /** + * Actualiza la base de datos a una version superior a la actual + * Este metodo no puede volver la base de datos a una version anterior + * + * @param version Version a la que actualizar + */ void updateTo(int version); } diff --git a/src/danielcortes/xyz/views/ArqueoView.java b/src/danielcortes/xyz/views/ArqueoView.java index 81c221c..0d7b005 100644 --- a/src/danielcortes/xyz/views/ArqueoView.java +++ b/src/danielcortes/xyz/views/ArqueoView.java @@ -41,311 +41,451 @@ import javax.swing.border.TitledBorder; public class ArqueoView { - private JPanel contentPanel; - private NumberFormatedTextField veinteMilField; - private NumberFormatedTextField diezMilField; - private NumberFormatedTextField cincoMilField; - private NumberFormatedTextField dosMilField; - private NumberFormatedTextField milField; - private NumberFormatedTextField quinientosField; - private NumberFormatedTextField cienField; - private NumberFormatedTextField cincuentaField; - private NumberFormatedTextField diezField; - private NumberFormatedTextField chequesField; - private NumberFormatedTextField tarjetasField; - private NumberFormatedTextField efectivoField; - private NumberFormatedTextField documentosField; - private NumberFormatedTextField egresosField; - private NumberFormatedTextField rendidoField; - private JButton guardarEfectivoButton; - private JButton guardarDocumentosButton; - private JButton calcularFondoButton; - private NumberFormatedTextField diferenciaField; - private NumberFormatedTextField debeRendirField; - private NumberFormatedTextField retiroField; + private JPanel contentPanel; + private NumberFormatedTextField veinteMilField; + private NumberFormatedTextField diezMilField; + private NumberFormatedTextField cincoMilField; + private NumberFormatedTextField dosMilField; + private NumberFormatedTextField milField; + private NumberFormatedTextField quinientosField; + private NumberFormatedTextField cienField; + private NumberFormatedTextField cincuentaField; + private NumberFormatedTextField diezField; + private NumberFormatedTextField chequesField; + private NumberFormatedTextField tarjetasField; + private NumberFormatedTextField efectivoField; + private NumberFormatedTextField documentosField; + private NumberFormatedTextField egresosField; + private NumberFormatedTextField rendidoField; + private JButton guardarEfectivoButton; + private JButton guardarDocumentosButton; + private JButton calcularFondoButton; + private NumberFormatedTextField diferenciaField; + private NumberFormatedTextField debeRendirField; + private NumberFormatedTextField retiroField; - public JPanel getContentPanel() { - return contentPanel; - } + public JPanel getContentPanel() { + return contentPanel; + } - public NumberFormatedTextField getVeinteMilField() { - return veinteMilField; - } + public NumberFormatedTextField getVeinteMilField() { + return veinteMilField; + } - public NumberFormatedTextField getDiezMilField() { - return diezMilField; - } + public NumberFormatedTextField getDiezMilField() { + return diezMilField; + } - public NumberFormatedTextField getCincoMilField() { - return cincoMilField; - } + public NumberFormatedTextField getCincoMilField() { + return cincoMilField; + } - public NumberFormatedTextField getDosMilField() { - return dosMilField; - } + public NumberFormatedTextField getDosMilField() { + return dosMilField; + } - public NumberFormatedTextField getMilField() { - return milField; - } + public NumberFormatedTextField getMilField() { + return milField; + } - public NumberFormatedTextField getQuinientosField() { - return quinientosField; - } + public NumberFormatedTextField getQuinientosField() { + return quinientosField; + } - public NumberFormatedTextField getCienField() { - return cienField; - } + public NumberFormatedTextField getCienField() { + return cienField; + } - public NumberFormatedTextField getCincuentaField() { - return cincuentaField; - } + public NumberFormatedTextField getCincuentaField() { + return cincuentaField; + } - public NumberFormatedTextField getDiezField() { - return diezField; - } + public NumberFormatedTextField getDiezField() { + return diezField; + } - public NumberFormatedTextField getChequesField() { - return chequesField; - } + public NumberFormatedTextField getChequesField() { + return chequesField; + } - public NumberFormatedTextField getTarjetasField() { - return tarjetasField; - } + public NumberFormatedTextField getTarjetasField() { + return tarjetasField; + } - public NumberFormatedTextField getEfectivoField() { - return efectivoField; - } + public NumberFormatedTextField getEfectivoField() { + return efectivoField; + } - public NumberFormatedTextField getDocumentosField() { - return documentosField; - } + public NumberFormatedTextField getDocumentosField() { + return documentosField; + } - public NumberFormatedTextField getEgresosField() { - return egresosField; - } + public NumberFormatedTextField getEgresosField() { + return egresosField; + } - public NumberFormatedTextField getRendidoField() { - return rendidoField; - } + public NumberFormatedTextField getRendidoField() { + return rendidoField; + } - public JButton getGuardarEfectivoButton() { - return guardarEfectivoButton; - } + public JButton getGuardarEfectivoButton() { + return guardarEfectivoButton; + } - public JButton getGuardarDocumentosButton() { - return guardarDocumentosButton; - } + public JButton getGuardarDocumentosButton() { + return guardarDocumentosButton; + } - public JButton getCalcularFondoButton() { - return calcularFondoButton; - } + public JButton getCalcularFondoButton() { + return calcularFondoButton; + } - public NumberFormatedTextField getDiferenciaField() { - return diferenciaField; - } + public NumberFormatedTextField getDiferenciaField() { + return diferenciaField; + } - public NumberFormatedTextField getDebeRendirField() { - return debeRendirField; - } + public NumberFormatedTextField getDebeRendirField() { + return debeRendirField; + } - public NumberFormatedTextField getRetiroField() { - return retiroField; - } + public NumberFormatedTextField getRetiroField() { + return retiroField; + } - { + { // GUI initializer generated by IntelliJ IDEA GUI Designer // >>> IMPORTANT!! <<< // DO NOT EDIT OR ADD ANY CODE HERE! - $$$setupUI$$$(); - } + $$$setupUI$$$(); + } - /** - * Method generated by IntelliJ IDEA GUI Designer - * >>> IMPORTANT!! <<< - * DO NOT edit this method OR call it in your code! - * - * @noinspection ALL - */ - private void $$$setupUI$$$() { - contentPanel = new JPanel(); - contentPanel.setLayout(new GridLayoutManager(3, 2, new Insets(0, 0, 0, 0), -1, -1)); - final JPanel panel1 = new JPanel(); - panel1.setLayout(new GridLayoutManager(7, 2, new Insets(10, 10, 10, 10), -1, -1)); - contentPanel.add(panel1, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - panel1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Resumen")); - final JLabel label1 = new JLabel(); - label1.setText("Total Egresos"); - panel1.add(label1, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - egresosField = new NumberFormatedTextField(); - egresosField.setEditable(false); - egresosField.setText(""); - panel1.add(egresosField, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - diferenciaField = new NumberFormatedTextField(); - diferenciaField.setEditable(false); - Font diferenciaFieldFont = this.$$$getFont$$$(null, Font.BOLD, -1, diferenciaField.getFont()); - if (diferenciaFieldFont != null) diferenciaField.setFont(diferenciaFieldFont); - diferenciaField.setText(""); - panel1.add(diferenciaField, new GridConstraints(6, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final JLabel label2 = new JLabel(); - label2.setText("Diferencia"); - panel1.add(label2, new GridConstraints(6, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JSeparator separator1 = new JSeparator(); - panel1.add(separator1, new GridConstraints(3, 0, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); - final JLabel label3 = new JLabel(); - label3.setText("Debe Rendir"); - panel1.add(label3, new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - debeRendirField = new NumberFormatedTextField(); - debeRendirField.setEditable(false); - Font debeRendirFieldFont = this.$$$getFont$$$(null, Font.BOLD, -1, debeRendirField.getFont()); - if (debeRendirFieldFont != null) debeRendirField.setFont(debeRendirFieldFont); - debeRendirField.setText(""); - panel1.add(debeRendirField, new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - rendidoField = new NumberFormatedTextField(); - rendidoField.setEditable(false); - Font rendidoFieldFont = this.$$$getFont$$$(null, Font.BOLD, -1, rendidoField.getFont()); - if (rendidoFieldFont != null) rendidoField.setFont(rendidoFieldFont); - rendidoField.setText(""); - panel1.add(rendidoField, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final JLabel label4 = new JLabel(); - label4.setText("Rendido"); - panel1.add(label4, new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label5 = new JLabel(); - label5.setText("Total Documentos"); - panel1.add(label5, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - documentosField = new NumberFormatedTextField(); - documentosField.setEditable(false); - documentosField.setText(""); - panel1.add(documentosField, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final JLabel label6 = new JLabel(); - label6.setText("Total Efectivo"); - panel1.add(label6, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - efectivoField = new NumberFormatedTextField(); - efectivoField.setEditable(false); - efectivoField.setText(""); - panel1.add(efectivoField, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final JPanel panel2 = new JPanel(); - panel2.setLayout(new GridLayoutManager(2, 1, new Insets(0, 0, 0, 0), -1, -1)); - contentPanel.add(panel2, new GridConstraints(0, 0, 3, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - final JPanel panel3 = new JPanel(); - panel3.setLayout(new GridLayoutManager(10, 2, new Insets(10, 10, 10, 10), -1, -1)); - panel2.add(panel3, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - panel3.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Detalle Efectivo", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, this.$$$getFont$$$(null, -1, -1, panel3.getFont()))); - final JLabel label7 = new JLabel(); - label7.setText("$20000"); - panel3.add(label7, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - veinteMilField = new NumberFormatedTextField(); - veinteMilField.setText(""); - panel3.add(veinteMilField, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); - final JLabel label8 = new JLabel(); - label8.setText("$10000"); - panel3.add(label8, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - diezMilField = new NumberFormatedTextField(); - diezMilField.setText(""); - panel3.add(diezMilField, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); - cincoMilField = new NumberFormatedTextField(); - cincoMilField.setText(""); - panel3.add(cincoMilField, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); - final JLabel label9 = new JLabel(); - label9.setText("$5000"); - panel3.add(label9, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label10 = new JLabel(); - label10.setText("$2000"); - panel3.add(label10, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - dosMilField = new NumberFormatedTextField(); - dosMilField.setText(""); - panel3.add(dosMilField, new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); - milField = new NumberFormatedTextField(); - milField.setText(""); - panel3.add(milField, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); - final JLabel label11 = new JLabel(); - label11.setText("$1000"); - panel3.add(label11, new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label12 = new JLabel(); - label12.setText("$500"); - panel3.add(label12, new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - quinientosField = new NumberFormatedTextField(); - quinientosField.setText(""); - panel3.add(quinientosField, new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); - final JLabel label13 = new JLabel(); - label13.setText("$100"); - panel3.add(label13, new GridConstraints(6, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - cienField = new NumberFormatedTextField(); - cienField.setText(""); - panel3.add(cienField, new GridConstraints(6, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); - final JLabel label14 = new JLabel(); - label14.setText("$50"); - panel3.add(label14, new GridConstraints(7, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - cincuentaField = new NumberFormatedTextField(); - cincuentaField.setText(""); - panel3.add(cincuentaField, new GridConstraints(7, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); - final JLabel label15 = new JLabel(); - label15.setText("$10"); - panel3.add(label15, new GridConstraints(8, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - diezField = new NumberFormatedTextField(); - diezField.setText(""); - panel3.add(diezField, new GridConstraints(8, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); - guardarEfectivoButton = new JButton(); - guardarEfectivoButton.setText("Guardar"); - panel3.add(guardarEfectivoButton, new GridConstraints(9, 0, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); - final JPanel panel4 = new JPanel(); - panel4.setLayout(new GridLayoutManager(4, 2, new Insets(10, 10, 10, 10), -1, -1)); - panel2.add(panel4, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - panel4.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Detalle Documentos", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, this.$$$getFont$$$(null, -1, -1, panel4.getFont()))); - chequesField = new NumberFormatedTextField(); - chequesField.setText(""); - panel4.add(chequesField, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final JLabel label16 = new JLabel(); - label16.setText("Tarjetas de Credito"); - panel4.add(label16, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - tarjetasField = new NumberFormatedTextField(); - tarjetasField.setText(""); - panel4.add(tarjetasField, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - guardarDocumentosButton = new JButton(); - guardarDocumentosButton.setText("Guardar"); - panel4.add(guardarDocumentosButton, new GridConstraints(3, 0, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label17 = new JLabel(); - label17.setText("Cheques al Dia"); - panel4.add(label17, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - retiroField = new NumberFormatedTextField(); - retiroField.setText(""); - panel4.add(retiroField, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final JLabel label18 = new JLabel(); - label18.setText("Retiro"); - panel4.add(label18, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JPanel panel5 = new JPanel(); - panel5.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); - contentPanel.add(panel5, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - calcularFondoButton = new JButton(); - calcularFondoButton.setText("Calcular Fondo"); - panel5.add(calcularFondoButton, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final Spacer spacer1 = new Spacer(); - contentPanel.add(spacer1, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); + /** + * Method generated by IntelliJ IDEA GUI Designer >>> IMPORTANT!! <<< DO NOT edit this method OR + * call it in your code! + * + * @noinspection ALL + */ + private void $$$setupUI$$$() { + contentPanel = new JPanel(); + contentPanel.setLayout(new GridLayoutManager(3, 2, new Insets(0, 0, 0, 0), -1, -1)); + final JPanel panel1 = new JPanel(); + panel1.setLayout(new GridLayoutManager(7, 2, new Insets(10, 10, 10, 10), -1, -1)); + contentPanel.add(panel1, + new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + panel1 + .setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Resumen")); + final JLabel label1 = new JLabel(); + label1.setText("Total Egresos"); + panel1.add(label1, + new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + egresosField = new NumberFormatedTextField(); + egresosField.setEditable(false); + egresosField.setText(""); + panel1.add(egresosField, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + diferenciaField = new NumberFormatedTextField(); + diferenciaField.setEditable(false); + Font diferenciaFieldFont = this.$$$getFont$$$(null, Font.BOLD, -1, diferenciaField.getFont()); + if (diferenciaFieldFont != null) { + diferenciaField.setFont(diferenciaFieldFont); } + diferenciaField.setText(""); + panel1.add(diferenciaField, new GridConstraints(6, 1, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JLabel label2 = new JLabel(); + label2.setText("Diferencia"); + panel1.add(label2, + new GridConstraints(6, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JSeparator separator1 = new JSeparator(); + panel1.add(separator1, + new GridConstraints(3, 0, 1, 2, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, + null, 0, false)); + final JLabel label3 = new JLabel(); + label3.setText("Debe Rendir"); + panel1.add(label3, + new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + debeRendirField = new NumberFormatedTextField(); + debeRendirField.setEditable(false); + Font debeRendirFieldFont = this.$$$getFont$$$(null, Font.BOLD, -1, debeRendirField.getFont()); + if (debeRendirFieldFont != null) { + debeRendirField.setFont(debeRendirFieldFont); + } + debeRendirField.setText(""); + panel1.add(debeRendirField, new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + rendidoField = new NumberFormatedTextField(); + rendidoField.setEditable(false); + Font rendidoFieldFont = this.$$$getFont$$$(null, Font.BOLD, -1, rendidoField.getFont()); + if (rendidoFieldFont != null) { + rendidoField.setFont(rendidoFieldFont); + } + rendidoField.setText(""); + panel1.add(rendidoField, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JLabel label4 = new JLabel(); + label4.setText("Rendido"); + panel1.add(label4, + new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label5 = new JLabel(); + label5.setText("Total Documentos"); + panel1.add(label5, + new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + documentosField = new NumberFormatedTextField(); + documentosField.setEditable(false); + documentosField.setText(""); + panel1.add(documentosField, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JLabel label6 = new JLabel(); + label6.setText("Total Efectivo"); + panel1.add(label6, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + efectivoField = new NumberFormatedTextField(); + efectivoField.setEditable(false); + efectivoField.setText(""); + panel1.add(efectivoField, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JPanel panel2 = new JPanel(); + panel2.setLayout(new GridLayoutManager(2, 1, new Insets(0, 0, 0, 0), -1, -1)); + contentPanel.add(panel2, + new GridConstraints(0, 0, 3, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + final JPanel panel3 = new JPanel(); + panel3.setLayout(new GridLayoutManager(10, 2, new Insets(10, 10, 10, 10), -1, -1)); + panel2.add(panel3, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + panel3.setBorder(BorderFactory + .createTitledBorder(BorderFactory.createEtchedBorder(), "Detalle Efectivo", + TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, + this.$$$getFont$$$(null, -1, -1, panel3.getFont()))); + final JLabel label7 = new JLabel(); + label7.setText("$20000"); + panel3.add(label7, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + veinteMilField = new NumberFormatedTextField(); + veinteMilField.setText(""); + panel3.add(veinteMilField, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); + final JLabel label8 = new JLabel(); + label8.setText("$10000"); + panel3.add(label8, + new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + diezMilField = new NumberFormatedTextField(); + diezMilField.setText(""); + panel3.add(diezMilField, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); + cincoMilField = new NumberFormatedTextField(); + cincoMilField.setText(""); + panel3.add(cincoMilField, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); + final JLabel label9 = new JLabel(); + label9.setText("$5000"); + panel3.add(label9, + new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label10 = new JLabel(); + label10.setText("$2000"); + panel3.add(label10, + new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + dosMilField = new NumberFormatedTextField(); + dosMilField.setText(""); + panel3.add(dosMilField, new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); + milField = new NumberFormatedTextField(); + milField.setText(""); + panel3.add(milField, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); + final JLabel label11 = new JLabel(); + label11.setText("$1000"); + panel3.add(label11, + new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label12 = new JLabel(); + label12.setText("$500"); + panel3.add(label12, + new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + quinientosField = new NumberFormatedTextField(); + quinientosField.setText(""); + panel3.add(quinientosField, new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); + final JLabel label13 = new JLabel(); + label13.setText("$100"); + panel3.add(label13, + new GridConstraints(6, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + cienField = new NumberFormatedTextField(); + cienField.setText(""); + panel3.add(cienField, new GridConstraints(6, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); + final JLabel label14 = new JLabel(); + label14.setText("$50"); + panel3.add(label14, + new GridConstraints(7, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + cincuentaField = new NumberFormatedTextField(); + cincuentaField.setText(""); + panel3.add(cincuentaField, new GridConstraints(7, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); + final JLabel label15 = new JLabel(); + label15.setText("$10"); + panel3.add(label15, + new GridConstraints(8, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + diezField = new NumberFormatedTextField(); + diezField.setText(""); + panel3.add(diezField, new GridConstraints(8, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); + guardarEfectivoButton = new JButton(); + guardarEfectivoButton.setText("Guardar"); + panel3.add(guardarEfectivoButton, new GridConstraints(9, 0, 1, 2, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(200, -1), null, 0, false)); + final JPanel panel4 = new JPanel(); + panel4.setLayout(new GridLayoutManager(4, 2, new Insets(10, 10, 10, 10), -1, -1)); + panel2.add(panel4, + new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + panel4.setBorder(BorderFactory + .createTitledBorder(BorderFactory.createEtchedBorder(), "Detalle Documentos", + TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, + this.$$$getFont$$$(null, -1, -1, panel4.getFont()))); + chequesField = new NumberFormatedTextField(); + chequesField.setText(""); + panel4.add(chequesField, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JLabel label16 = new JLabel(); + label16.setText("Tarjetas de Credito"); + panel4.add(label16, + new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + tarjetasField = new NumberFormatedTextField(); + tarjetasField.setText(""); + panel4.add(tarjetasField, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + guardarDocumentosButton = new JButton(); + guardarDocumentosButton.setText("Guardar"); + panel4.add(guardarDocumentosButton, + new GridConstraints(3, 0, 1, 2, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JLabel label17 = new JLabel(); + label17.setText("Cheques al Dia"); + panel4.add(label17, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + retiroField = new NumberFormatedTextField(); + retiroField.setText(""); + panel4.add(retiroField, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JLabel label18 = new JLabel(); + label18.setText("Retiro"); + panel4.add(label18, + new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JPanel panel5 = new JPanel(); + panel5.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); + contentPanel.add(panel5, + new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + calcularFondoButton = new JButton(); + calcularFondoButton.setText("Calcular Fondo"); + panel5.add(calcularFondoButton, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final Spacer spacer1 = new Spacer(); + contentPanel.add(spacer1, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, + false)); + } - /** - * @noinspection ALL - */ - private Font $$$getFont$$$(String fontName, int style, int size, Font currentFont) { - if (currentFont == null) return null; - String resultName; - if (fontName == null) { - resultName = currentFont.getName(); - } else { - Font testFont = new Font(fontName, Font.PLAIN, 10); - if (testFont.canDisplay('a') && testFont.canDisplay('1')) { - resultName = fontName; - } else { - resultName = currentFont.getName(); - } - } - return new Font(resultName, style >= 0 ? style : currentFont.getStyle(), size >= 0 ? size : currentFont.getSize()); + /** + * @noinspection ALL + */ + private Font $$$getFont$$$(String fontName, int style, int size, Font currentFont) { + if (currentFont == null) { + return null; } + String resultName; + if (fontName == null) { + resultName = currentFont.getName(); + } else { + Font testFont = new Font(fontName, Font.PLAIN, 10); + if (testFont.canDisplay('a') && testFont.canDisplay('1')) { + resultName = fontName; + } else { + resultName = currentFont.getName(); + } + } + return new Font(resultName, style >= 0 ? style : currentFont.getStyle(), + size >= 0 ? size : currentFont.getSize()); + } - /** - * @noinspection ALL - */ - public JComponent $$$getRootComponent$$$() { - return contentPanel; - } + /** + * @noinspection ALL + */ + public JComponent $$$getRootComponent$$$() { + return contentPanel; + } } diff --git a/src/danielcortes/xyz/views/EgresosView.java b/src/danielcortes/xyz/views/EgresosView.java index 6c7864e..e213226 100644 --- a/src/danielcortes/xyz/views/EgresosView.java +++ b/src/danielcortes/xyz/views/EgresosView.java @@ -48,215 +48,287 @@ import javax.swing.table.TableRowSorter; public class EgresosView { - public JPanel contentPanel; - private JTable egresosTable; - private JButton guardarButton; - private NumberFormatedTextField valorField; - private JTextField descripcionField; - private JTextField nroField; - private NumberFormatedTextField totalEgresosField; - private JComboBox tipoCombo; + public JPanel contentPanel; + private JTable egresosTable; + private JButton guardarButton; + private NumberFormatedTextField valorField; + private JTextField descripcionField; + private JTextField nroField; + private NumberFormatedTextField totalEgresosField; + private JComboBox tipoCombo; - private JButton eliminarButton; - private JLabel errorNumero; - private JLabel errorDescripcion; - private JLabel errorValor; - private JLabel errorTipoEgreso; - private JButton editarButton; + private JButton eliminarButton; + private JLabel errorNumero; + private JLabel errorDescripcion; + private JLabel errorValor; + private JLabel errorTipoEgreso; + private JButton editarButton; - private EgresosTableModel egresosTableModel; + private EgresosTableModel egresosTableModel; - private void createUIComponents() { - createEgresosTable(); - createTipoCombo(); - } + private void createUIComponents() { + createEgresosTable(); + createTipoCombo(); + } - private void createEgresosTable() { - egresosTableModel = new EgresosTableModel(); - egresosTable = new JTable(egresosTableModel); + private void createEgresosTable() { + egresosTableModel = new EgresosTableModel(); + egresosTable = new JTable(egresosTableModel); - RowSorter sorter = new TableRowSorter<>(egresosTableModel); - egresosTable.setRowSorter(sorter); - egresosTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - } + RowSorter sorter = new TableRowSorter<>(egresosTableModel); + egresosTable.setRowSorter(sorter); + egresosTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + } - private void createTipoCombo() { - this.tipoCombo = new JComboBox<>(); - } + private void createTipoCombo() { + this.tipoCombo = new JComboBox<>(); + } - public JPanel getContentPanel() { - return contentPanel; - } + public JPanel getContentPanel() { + return contentPanel; + } - public JButton getGuardarButton() { - return guardarButton; - } + public JButton getGuardarButton() { + return guardarButton; + } - public JButton getEliminarButton() { - return eliminarButton; - } + public JButton getEliminarButton() { + return eliminarButton; + } - public JButton getEditarButton() { - return editarButton; - } + public JButton getEditarButton() { + return editarButton; + } - public NumberFormatedTextField getValorField() { - return valorField; - } + public NumberFormatedTextField getValorField() { + return valorField; + } - public JTextField getDescripcionField() { - return descripcionField; - } + public JTextField getDescripcionField() { + return descripcionField; + } - public JTextField getNroField() { - return nroField; - } + public JTextField getNroField() { + return nroField; + } - public NumberFormatedTextField getTotalEgresosField() { - return totalEgresosField; - } + public NumberFormatedTextField getTotalEgresosField() { + return totalEgresosField; + } - public JComboBox getTipoCombo() { - return tipoCombo; - } + public JComboBox getTipoCombo() { + return tipoCombo; + } - public JTable getEgresosTable() { - return egresosTable; - } + public JTable getEgresosTable() { + return egresosTable; + } - public EgresosTableModel getEgresosTableModel() { - return egresosTableModel; - } + public EgresosTableModel getEgresosTableModel() { + return egresosTableModel; + } - public JLabel getErrorNumero() { - return errorNumero; - } + public JLabel getErrorNumero() { + return errorNumero; + } - public JLabel getErrorDescripcion() { - return errorDescripcion; - } + public JLabel getErrorDescripcion() { + return errorDescripcion; + } - public JLabel getErrorValor() { - return errorValor; - } + public JLabel getErrorValor() { + return errorValor; + } - public JLabel getErrorTipoEgreso() { - return errorTipoEgreso; - } + public JLabel getErrorTipoEgreso() { + return errorTipoEgreso; + } - { + { // GUI initializer generated by IntelliJ IDEA GUI Designer // >>> IMPORTANT!! <<< // DO NOT EDIT OR ADD ANY CODE HERE! - $$$setupUI$$$(); - } + $$$setupUI$$$(); + } - /** - * Method generated by IntelliJ IDEA GUI Designer - * >>> IMPORTANT!! <<< - * DO NOT edit this method OR call it in your code! - * - * @noinspection ALL - */ - private void $$$setupUI$$$() { - createUIComponents(); - contentPanel = new JPanel(); - contentPanel.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); - final JPanel panel1 = new JPanel(); - panel1.setLayout(new GridLayoutManager(3, 1, new Insets(10, 10, 10, 10), -1, -1)); - contentPanel.add(panel1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - panel1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Egresos")); - final JScrollPane scrollPane1 = new JScrollPane(); - panel1.add(scrollPane1, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); - scrollPane1.setViewportView(egresosTable); - final JPanel panel2 = new JPanel(); - panel2.setLayout(new GridLayoutManager(3, 4, new Insets(0, 0, 0, 0), -1, -1)); - panel1.add(panel2, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - final JLabel label1 = new JLabel(); - label1.setText("N°"); - panel2.add(label1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label2 = new JLabel(); - label2.setText("Descripcion"); - panel2.add(label2, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - descripcionField = new JTextField(); - panel2.add(descripcionField, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - nroField = new JTextField(); - panel2.add(nroField, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - valorField = new NumberFormatedTextField(); - panel2.add(valorField, new GridConstraints(1, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final JLabel label3 = new JLabel(); - label3.setText("Valor"); - panel2.add(label3, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label4 = new JLabel(); - label4.setText("Tipo"); - panel2.add(label4, new GridConstraints(0, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - panel2.add(tipoCombo, new GridConstraints(1, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - errorNumero = new JLabel(); - errorNumero.setEnabled(true); - errorNumero.setForeground(new Color(-65536)); - errorNumero.setText("Error"); - errorNumero.setVisible(false); - panel2.add(errorNumero, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - errorDescripcion = new JLabel(); - errorDescripcion.setEnabled(true); - errorDescripcion.setForeground(new Color(-65536)); - errorDescripcion.setText("Error"); - errorDescripcion.setVisible(false); - panel2.add(errorDescripcion, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - errorValor = new JLabel(); - errorValor.setEnabled(true); - errorValor.setForeground(new Color(-65536)); - errorValor.setText("Error"); - errorValor.setVisible(false); - panel2.add(errorValor, new GridConstraints(2, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - errorTipoEgreso = new JLabel(); - errorTipoEgreso.setEnabled(true); - errorTipoEgreso.setForeground(new Color(-65536)); - errorTipoEgreso.setText("Error"); - errorTipoEgreso.setVisible(false); - panel2.add(errorTipoEgreso, new GridConstraints(2, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JPanel panel3 = new JPanel(); - panel3.setLayout(new GridLayoutManager(1, 3, new Insets(0, 0, 0, 0), -1, -1)); - panel1.add(panel3, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - final JPanel panel4 = new JPanel(); - panel4.setLayout(new GridLayoutManager(1, 3, new Insets(0, 0, 0, 0), -1, -1)); - panel3.add(panel4, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - guardarButton = new JButton(); - guardarButton.setText("Añadir"); - guardarButton.setMnemonic('A'); - guardarButton.setDisplayedMnemonicIndex(0); - panel4.add(guardarButton, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - eliminarButton = new JButton(); - eliminarButton.setEnabled(false); - eliminarButton.setText("Eliminar"); - eliminarButton.setMnemonic('E'); - eliminarButton.setDisplayedMnemonicIndex(0); - panel4.add(eliminarButton, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - editarButton = new JButton(); - editarButton.setEnabled(false); - editarButton.setText("Editar"); - editarButton.setMnemonic('D'); - editarButton.setDisplayedMnemonicIndex(1); - panel4.add(editarButton, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final Spacer spacer1 = new Spacer(); - panel3.add(spacer1, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false)); - final JPanel panel5 = new JPanel(); - panel5.setLayout(new GridLayoutManager(1, 2, new Insets(0, 0, 0, 0), -1, -1)); - panel3.add(panel5, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - final JLabel label5 = new JLabel(); - label5.setText("Total Egresos:"); - panel5.add(label5, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - totalEgresosField = new NumberFormatedTextField(); - totalEgresosField.setEditable(false); - panel5.add(totalEgresosField, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - } + /** + * Method generated by IntelliJ IDEA GUI Designer >>> IMPORTANT!! <<< DO NOT edit this method OR + * call it in your code! + * + * @noinspection ALL + */ + private void $$$setupUI$$$() { + createUIComponents(); + contentPanel = new JPanel(); + contentPanel.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); + final JPanel panel1 = new JPanel(); + panel1.setLayout(new GridLayoutManager(3, 1, new Insets(10, 10, 10, 10), -1, -1)); + contentPanel.add(panel1, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + panel1 + .setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Egresos")); + final JScrollPane scrollPane1 = new JScrollPane(); + panel1.add(scrollPane1, + new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, + null, null, 0, false)); + scrollPane1.setViewportView(egresosTable); + final JPanel panel2 = new JPanel(); + panel2.setLayout(new GridLayoutManager(3, 4, new Insets(0, 0, 0, 0), -1, -1)); + panel1.add(panel2, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + final JLabel label1 = new JLabel(); + label1.setText("N°"); + panel2.add(label1, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label2 = new JLabel(); + label2.setText("Descripcion"); + panel2.add(label2, + new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + descripcionField = new JTextField(); + panel2.add(descripcionField, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + nroField = new JTextField(); + panel2.add(nroField, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + valorField = new NumberFormatedTextField(); + panel2.add(valorField, new GridConstraints(1, 2, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JLabel label3 = new JLabel(); + label3.setText("Valor"); + panel2.add(label3, + new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label4 = new JLabel(); + label4.setText("Tipo"); + panel2.add(label4, + new GridConstraints(0, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + panel2.add(tipoCombo, new GridConstraints(1, 3, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + errorNumero = new JLabel(); + errorNumero.setEnabled(true); + errorNumero.setForeground(new Color(-65536)); + errorNumero.setText("Error"); + errorNumero.setVisible(false); + panel2.add(errorNumero, + new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + errorDescripcion = new JLabel(); + errorDescripcion.setEnabled(true); + errorDescripcion.setForeground(new Color(-65536)); + errorDescripcion.setText("Error"); + errorDescripcion.setVisible(false); + panel2.add(errorDescripcion, + new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + errorValor = new JLabel(); + errorValor.setEnabled(true); + errorValor.setForeground(new Color(-65536)); + errorValor.setText("Error"); + errorValor.setVisible(false); + panel2.add(errorValor, + new GridConstraints(2, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + errorTipoEgreso = new JLabel(); + errorTipoEgreso.setEnabled(true); + errorTipoEgreso.setForeground(new Color(-65536)); + errorTipoEgreso.setText("Error"); + errorTipoEgreso.setVisible(false); + panel2.add(errorTipoEgreso, + new GridConstraints(2, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JPanel panel3 = new JPanel(); + panel3.setLayout(new GridLayoutManager(1, 3, new Insets(0, 0, 0, 0), -1, -1)); + panel1.add(panel3, + new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + final JPanel panel4 = new JPanel(); + panel4.setLayout(new GridLayoutManager(1, 3, new Insets(0, 0, 0, 0), -1, -1)); + panel3.add(panel4, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + guardarButton = new JButton(); + guardarButton.setText("Añadir"); + guardarButton.setMnemonic('A'); + guardarButton.setDisplayedMnemonicIndex(0); + panel4.add(guardarButton, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + eliminarButton = new JButton(); + eliminarButton.setEnabled(false); + eliminarButton.setText("Eliminar"); + eliminarButton.setMnemonic('E'); + eliminarButton.setDisplayedMnemonicIndex(0); + panel4.add(eliminarButton, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + editarButton = new JButton(); + editarButton.setEnabled(false); + editarButton.setText("Editar"); + editarButton.setMnemonic('D'); + editarButton.setDisplayedMnemonicIndex(1); + panel4.add(editarButton, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final Spacer spacer1 = new Spacer(); + panel3.add(spacer1, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, + 0, false)); + final JPanel panel5 = new JPanel(); + panel5.setLayout(new GridLayoutManager(1, 2, new Insets(0, 0, 0, 0), -1, -1)); + panel3.add(panel5, + new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + final JLabel label5 = new JLabel(); + label5.setText("Total Egresos:"); + panel5.add(label5, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + totalEgresosField = new NumberFormatedTextField(); + totalEgresosField.setEditable(false); + panel5.add(totalEgresosField, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + } - /** - * @noinspection ALL - */ - public JComponent $$$getRootComponent$$$() { - return contentPanel; - } + /** + * @noinspection ALL + */ + public JComponent $$$getRootComponent$$$() { + return contentPanel; + } } diff --git a/src/danielcortes/xyz/views/EstadoResultadoView.java b/src/danielcortes/xyz/views/EstadoResultadoView.java index dbddf44..76fae3a 100644 --- a/src/danielcortes/xyz/views/EstadoResultadoView.java +++ b/src/danielcortes/xyz/views/EstadoResultadoView.java @@ -23,524 +23,771 @@ import javax.swing.SpinnerModel; public class EstadoResultadoView { - private NumberFormatedTextField ventaBrutaField; - private NumberFormatedTextField ventaNetaField; - private NumberFormatedTextField ventaIVAField; - private NumberFormatedTextField ventaExentasField; - private NumberFormatedTextField ventasNetaExentasField; - private NumberFormatedTextField gastosOperacionalesCostoVenta; - private NumberFormatedTextField gastosOperacionalesRemuneraciones; - private NumberFormatedTextField gastosOperacionalesFiniquitos; - private NumberFormatedTextField gastosOperacionalesAguinaldo; - private NumberFormatedTextField gastosOperacionalesPartime; - private NumberFormatedTextField gastosOperacionalesBonos; - private NumberFormatedTextField gastosOperacionalesHonorariosContador; - private NumberFormatedTextField gastosOperacionalesArriendo; - private NumberFormatedTextField gastosOperacionalesTotal; - private NumberFormatedTextField serviciosAgua; - private NumberFormatedTextField serviciosLuz; - private NumberFormatedTextField serviciosGas; - private NumberFormatedTextField serviciosTelefono; - private NumberFormatedTextField serviciosTotal; - private NumberFormatedTextField gastosGeneralesCuentaCorrienteFactura; - private NumberFormatedTextField gastosGeneralesCuentaCorrienteBoleta; - private NumberFormatedTextField gastosGeneralesCuentaCorrienteSinRespaldo; - private NumberFormatedTextField gastosGeneralesEfectivoFacturaField; - private NumberFormatedTextField gastosGeneralesEfectivoBoletaField; - private NumberFormatedTextField gastosGeneralesEfectivoSinRespaldo; - private NumberFormatedTextField gastosGeneralesTotal; - private NumberFormatedTextField resumenUtilidad; - private NumberFormatedTextField resumenPPMMes; - private NumberFormatedTextField resumenIVAMes; - private NumberFormatedTextField resumenIVAFavor; - private NumberFormatedTextField resumenResultado; - private JSpinner yearSpinner; - private JComboBox monthCombo; - private JPanel contentPanel; - private NumberFormatedTextField serviciosOtro; - private NumberFormatedTextField resumenAPagar; - private NumberFormatedTextField resumenIVAPPM; - private DoubleFormatedTextField resumenPPM; - private JButton guardarButton; - private JButton exportarButton; - private DoubleFormatedTextField gastosOperacionesPorcentajeCostoVenta; + private NumberFormatedTextField ventaBrutaField; + private NumberFormatedTextField ventaNetaField; + private NumberFormatedTextField ventaIVAField; + private NumberFormatedTextField ventaExentasField; + private NumberFormatedTextField ventasNetaExentasField; + private NumberFormatedTextField gastosOperacionalesCostoVenta; + private NumberFormatedTextField gastosOperacionalesRemuneraciones; + private NumberFormatedTextField gastosOperacionalesFiniquitos; + private NumberFormatedTextField gastosOperacionalesAguinaldo; + private NumberFormatedTextField gastosOperacionalesPartime; + private NumberFormatedTextField gastosOperacionalesBonos; + private NumberFormatedTextField gastosOperacionalesHonorariosContador; + private NumberFormatedTextField gastosOperacionalesArriendo; + private NumberFormatedTextField gastosOperacionalesTotal; + private NumberFormatedTextField serviciosAgua; + private NumberFormatedTextField serviciosLuz; + private NumberFormatedTextField serviciosGas; + private NumberFormatedTextField serviciosTelefono; + private NumberFormatedTextField serviciosTotal; + private NumberFormatedTextField gastosGeneralesCuentaCorrienteFactura; + private NumberFormatedTextField gastosGeneralesCuentaCorrienteBoleta; + private NumberFormatedTextField gastosGeneralesCuentaCorrienteSinRespaldo; + private NumberFormatedTextField gastosGeneralesEfectivoFacturaField; + private NumberFormatedTextField gastosGeneralesEfectivoBoletaField; + private NumberFormatedTextField gastosGeneralesEfectivoSinRespaldo; + private NumberFormatedTextField gastosGeneralesTotal; + private NumberFormatedTextField resumenUtilidad; + private NumberFormatedTextField resumenPPMMes; + private NumberFormatedTextField resumenIVAMes; + private NumberFormatedTextField resumenIVAFavor; + private NumberFormatedTextField resumenResultado; + private JSpinner yearSpinner; + private JComboBox monthCombo; + private JPanel contentPanel; + private NumberFormatedTextField serviciosOtro; + private NumberFormatedTextField resumenAPagar; + private NumberFormatedTextField resumenIVAPPM; + private DoubleFormatedTextField resumenPPM; + private JButton guardarButton; + private JButton exportarButton; + private DoubleFormatedTextField gastosOperacionesPorcentajeCostoVenta; - private ArrayList months; + private ArrayList months; - public EstadoResultadoView() { - $$$setupUI$$$(); + public EstadoResultadoView() { + $$$setupUI$$$(); + } + + public JPanel getContentPanel() { + return contentPanel; + } + + public YearMonth getMonth() { + int year = Integer.valueOf((String) yearSpinner.getValue()); + int month = this.months.indexOf((String) this.monthCombo.getSelectedItem()) + 1; + + YearMonth yearMonth = YearMonth.of(year, month); + return yearMonth; + } + + public JSpinner getYearSpinner() { + return yearSpinner; + } + + public JComboBox getMonthCombo() { + return monthCombo; + } + + public NumberFormatedTextField getVentaBrutaField() { + return ventaBrutaField; + } + + public NumberFormatedTextField getVentaNetaField() { + return ventaNetaField; + } + + public NumberFormatedTextField getVentaIVAField() { + return ventaIVAField; + } + + public NumberFormatedTextField getVentaExentasField() { + return ventaExentasField; + } + + public NumberFormatedTextField getVentasNetaExentasField() { + return ventasNetaExentasField; + } + + public NumberFormatedTextField getGastosOperacionalesCostoVenta() { + return gastosOperacionalesCostoVenta; + } + + public NumberFormatedTextField getGastosOperacionalesRemuneraciones() { + return gastosOperacionalesRemuneraciones; + } + + public NumberFormatedTextField getGastosOperacionalesFiniquitos() { + return gastosOperacionalesFiniquitos; + } + + public NumberFormatedTextField getGastosOperacionalesAguinaldo() { + return gastosOperacionalesAguinaldo; + } + + public NumberFormatedTextField getGastosOperacionalesPartime() { + return gastosOperacionalesPartime; + } + + public NumberFormatedTextField getGastosOperacionalesBonos() { + return gastosOperacionalesBonos; + } + + public NumberFormatedTextField getGastosOperacionalesHonorariosContador() { + return gastosOperacionalesHonorariosContador; + } + + public NumberFormatedTextField getGastosOperacionalesArriendo() { + return gastosOperacionalesArriendo; + } + + public NumberFormatedTextField getGastosOperacionalesTotal() { + return gastosOperacionalesTotal; + } + + public DoubleFormatedTextField getGastosOperacionesPorcentajeCostoVenta() { + return gastosOperacionesPorcentajeCostoVenta; + } + + public NumberFormatedTextField getServiciosAgua() { + return serviciosAgua; + } + + public NumberFormatedTextField getServiciosLuz() { + return serviciosLuz; + } + + public NumberFormatedTextField getServiciosGas() { + return serviciosGas; + } + + public NumberFormatedTextField getServiciosTelefono() { + return serviciosTelefono; + } + + public NumberFormatedTextField getServiciosTotal() { + return serviciosTotal; + } + + public NumberFormatedTextField getGastosGeneralesCuentaCorrienteFactura() { + return gastosGeneralesCuentaCorrienteFactura; + } + + public NumberFormatedTextField getGastosGeneralesCuentaCorrienteBoleta() { + return gastosGeneralesCuentaCorrienteBoleta; + } + + public NumberFormatedTextField getGastosGeneralesCuentaCorrienteSinRespaldo() { + return gastosGeneralesCuentaCorrienteSinRespaldo; + } + + public NumberFormatedTextField getGastosGeneralesEfectivoFacturaField() { + return gastosGeneralesEfectivoFacturaField; + } + + public NumberFormatedTextField getGastosGeneralesEfectivoBoletaField() { + return gastosGeneralesEfectivoBoletaField; + } + + public NumberFormatedTextField getGastosGeneralesEfectivoSinRespaldo() { + return gastosGeneralesEfectivoSinRespaldo; + } + + public NumberFormatedTextField getGastosGeneralesTotal() { + return gastosGeneralesTotal; + } + + public NumberFormatedTextField getResumenUtilidad() { + return resumenUtilidad; + } + + public NumberFormatedTextField getResumenPPMMes() { + return resumenPPMMes; + } + + public NumberFormatedTextField getResumenIVAMes() { + return resumenIVAMes; + } + + public NumberFormatedTextField getResumenIVAFavor() { + return resumenIVAFavor; + } + + public NumberFormatedTextField getResumenResultado() { + return resumenResultado; + } + + public NumberFormatedTextField getServiciosOtro() { + return serviciosOtro; + } + + public NumberFormatedTextField getResumenAPagar() { + return resumenAPagar; + } + + public NumberFormatedTextField getResumenIVAPPM() { + return resumenIVAPPM; + } + + public DoubleFormatedTextField getResumenPPM() { + return resumenPPM; + } + + public JButton getGuardarButton() { + return guardarButton; + } + + public JButton getExportarButton() { + return exportarButton; + } + + /** + * Method generated by IntelliJ IDEA GUI Designer >>> IMPORTANT!! <<< DO NOT edit this method OR + * call it in your code! + * + * @noinspection ALL + */ + private void $$$setupUI$$$() { + createUIComponents(); + contentPanel = new JPanel(); + contentPanel.setLayout(new GridLayoutManager(3, 3, new Insets(10, 10, 10, 10), -1, -1)); + final JPanel panel1 = new JPanel(); + panel1.setLayout(new GridLayoutManager(6, 2, new Insets(10, 10, 10, 10), -1, -1)); + contentPanel.add(panel1, + new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + panel1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Venta")); + final JLabel label1 = new JLabel(); + label1.setText("Bruto:"); + panel1.add(label1, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label2 = new JLabel(); + label2.setText("Neto:"); + panel1.add(label2, + new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label3 = new JLabel(); + label3.setText("IVA:"); + panel1.add(label3, + new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label4 = new JLabel(); + label4.setText("Exentas:"); + panel1.add(label4, + new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label5 = new JLabel(); + label5.setText("Neto + Exentas:"); + panel1.add(label5, + new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + ventaBrutaField = new NumberFormatedTextField(); + ventaBrutaField.setEditable(false); + panel1.add(ventaBrutaField, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + ventaNetaField = new NumberFormatedTextField(); + ventaNetaField.setEditable(false); + panel1.add(ventaNetaField, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + ventaIVAField = new NumberFormatedTextField(); + ventaIVAField.setEditable(false); + panel1.add(ventaIVAField, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + ventaExentasField = new NumberFormatedTextField(); + ventaExentasField.setEditable(false); + panel1.add(ventaExentasField, new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + ventasNetaExentasField = new NumberFormatedTextField(); + ventasNetaExentasField.setEditable(false); + panel1.add(ventasNetaExentasField, new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final Spacer spacer1 = new Spacer(); + panel1.add(spacer1, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, + false)); + final JPanel panel2 = new JPanel(); + panel2.setLayout(new GridLayoutManager(9, 2, new Insets(10, 10, 10, 10), -1, -1)); + contentPanel.add(panel2, + new GridConstraints(1, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + panel2 + .setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Resumen")); + resumenUtilidad = new NumberFormatedTextField(); + resumenUtilidad.setEditable(false); + panel2.add(resumenUtilidad, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + resumenPPMMes = new NumberFormatedTextField(); + resumenPPMMes.setEditable(false); + panel2.add(resumenPPMMes, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + resumenIVAMes = new NumberFormatedTextField(); + resumenIVAMes.setEditable(false); + panel2.add(resumenIVAMes, new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + resumenIVAFavor = new NumberFormatedTextField(); + resumenIVAFavor.setEditable(true); + panel2.add(resumenIVAFavor, new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + resumenResultado = new NumberFormatedTextField(); + resumenResultado.setEditable(false); + panel2.add(resumenResultado, new GridConstraints(8, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JLabel label6 = new JLabel(); + label6.setText("Utilidad:"); + panel2.add(label6, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label7 = new JLabel(); + label7.setText("PPM Mes:"); + panel2.add(label7, + new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label8 = new JLabel(); + label8.setText("+ IVA Mes:"); + panel2.add(label8, + new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label9 = new JLabel(); + label9.setText("- IVA A Favor:"); + panel2.add(label9, + new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label10 = new JLabel(); + label10.setText("Resultado:"); + panel2.add(label10, + new GridConstraints(8, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final Spacer spacer2 = new Spacer(); + panel2.add(spacer2, new GridConstraints(7, 1, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, + false)); + final JLabel label11 = new JLabel(); + label11.setText("PPM:"); + panel2.add(label11, + new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + resumenAPagar = new NumberFormatedTextField(); + resumenAPagar.setEditable(false); + panel2.add(resumenAPagar, new GridConstraints(6, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JLabel label12 = new JLabel(); + label12.setText("A Pagar PPM + IVA"); + panel2.add(label12, + new GridConstraints(6, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + resumenIVAPPM = new NumberFormatedTextField(); + resumenIVAPPM.setEditable(false); + panel2.add(resumenIVAPPM, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + resumenPPM = new DoubleFormatedTextField(); + panel2.add(resumenPPM, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JPanel panel3 = new JPanel(); + panel3.setLayout(new GridLayoutManager(1, 7, new Insets(0, 0, 0, 0), -1, -1)); + contentPanel.add(panel3, + new GridConstraints(0, 0, 1, 3, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final Spacer spacer3 = new Spacer(); + panel3.add(spacer3, new GridConstraints(0, 4, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, + 0, false)); + final JLabel label13 = new JLabel(); + label13.setText("Mes:"); + panel3.add(label13, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + panel3.add(monthCombo, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JLabel label14 = new JLabel(); + label14.setText("Año:"); + panel3.add(label14, + new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + panel3.add(yearSpinner, new GridConstraints(0, 3, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + guardarButton = new JButton(); + guardarButton.setText("Guardar"); + panel3.add(guardarButton, new GridConstraints(0, 6, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + exportarButton = new JButton(); + exportarButton.setText("Exportar"); + panel3.add(exportarButton, new GridConstraints(0, 5, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JPanel panel4 = new JPanel(); + panel4.setLayout(new GridLayoutManager(10, 3, new Insets(10, 10, 10, 10), -1, -1)); + contentPanel.add(panel4, + new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + panel4.setBorder(BorderFactory + .createTitledBorder(BorderFactory.createEtchedBorder(), "Gastos Operacionales")); + final JLabel label15 = new JLabel(); + label15.setText("Costo de Venta:"); + panel4.add(label15, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label16 = new JLabel(); + label16.setText("Remuneraciones:"); + panel4.add(label16, + new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label17 = new JLabel(); + label17.setText("Finiquitos:"); + panel4.add(label17, + new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label18 = new JLabel(); + label18.setText("Aguinaldo:"); + panel4.add(label18, + new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label19 = new JLabel(); + label19.setText("Partime:"); + panel4.add(label19, + new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label20 = new JLabel(); + label20.setText("Bonos Personal:"); + panel4.add(label20, + new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label21 = new JLabel(); + label21.setText("Honorarios Contador:"); + panel4.add(label21, + new GridConstraints(6, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label22 = new JLabel(); + label22.setText("Arriendo:"); + panel4.add(label22, + new GridConstraints(7, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + gastosOperacionalesCostoVenta = new NumberFormatedTextField(); + panel4.add(gastosOperacionalesCostoVenta, + new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosOperacionalesRemuneraciones = new NumberFormatedTextField(); + panel4.add(gastosOperacionalesRemuneraciones, + new GridConstraints(1, 1, 1, 2, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosOperacionalesFiniquitos = new NumberFormatedTextField(); + panel4.add(gastosOperacionalesFiniquitos, + new GridConstraints(2, 1, 1, 2, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosOperacionalesAguinaldo = new NumberFormatedTextField(); + panel4.add(gastosOperacionalesAguinaldo, + new GridConstraints(3, 1, 1, 2, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosOperacionalesPartime = new NumberFormatedTextField(); + gastosOperacionalesPartime.setEditable(false); + panel4.add(gastosOperacionalesPartime, + new GridConstraints(4, 1, 1, 2, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosOperacionalesBonos = new NumberFormatedTextField(); + panel4.add(gastosOperacionalesBonos, + new GridConstraints(5, 1, 1, 2, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosOperacionalesHonorariosContador = new NumberFormatedTextField(); + panel4.add(gastosOperacionalesHonorariosContador, + new GridConstraints(6, 1, 1, 2, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosOperacionalesArriendo = new NumberFormatedTextField(); + panel4.add(gastosOperacionalesArriendo, + new GridConstraints(7, 1, 1, 2, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JLabel label23 = new JLabel(); + label23.setText("Total:"); + panel4.add(label23, + new GridConstraints(9, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + gastosOperacionalesTotal = new NumberFormatedTextField(); + gastosOperacionalesTotal.setEditable(false); + panel4.add(gastosOperacionalesTotal, + new GridConstraints(9, 1, 1, 2, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final Spacer spacer4 = new Spacer(); + panel4.add(spacer4, new GridConstraints(8, 1, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, + false)); + gastosOperacionesPorcentajeCostoVenta = new DoubleFormatedTextField(); + gastosOperacionesPorcentajeCostoVenta.setColumns(6); + gastosOperacionesPorcentajeCostoVenta.setEditable(false); + panel4.add(gastosOperacionesPorcentajeCostoVenta, + new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final JPanel panel5 = new JPanel(); + panel5.setLayout(new GridLayoutManager(7, 2, new Insets(10, 10, 10, 10), -1, -1)); + contentPanel.add(panel5, + new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + panel5.setBorder( + BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Servicios")); + final JLabel label24 = new JLabel(); + label24.setText("Agua:"); + panel5.add(label24, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label25 = new JLabel(); + label25.setText("Luz:"); + panel5.add(label25, + new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label26 = new JLabel(); + label26.setText("Gas:"); + panel5.add(label26, + new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label27 = new JLabel(); + label27.setText("Telefono:"); + panel5.add(label27, + new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label28 = new JLabel(); + label28.setText("Total:"); + panel5.add(label28, + new GridConstraints(6, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + serviciosAgua = new NumberFormatedTextField(); + panel5.add(serviciosAgua, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + serviciosLuz = new NumberFormatedTextField(); + panel5.add(serviciosLuz, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + serviciosGas = new NumberFormatedTextField(); + panel5.add(serviciosGas, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + serviciosTelefono = new NumberFormatedTextField(); + panel5.add(serviciosTelefono, new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + serviciosTotal = new NumberFormatedTextField(); + serviciosTotal.setEditable(false); + panel5.add(serviciosTotal, new GridConstraints(6, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final Spacer spacer5 = new Spacer(); + panel5.add(spacer5, new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, + false)); + serviciosOtro = new NumberFormatedTextField(); + panel5.add(serviciosOtro, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JLabel label29 = new JLabel(); + label29.setText("Otros:"); + panel5.add(label29, + new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JPanel panel6 = new JPanel(); + panel6.setLayout(new GridLayoutManager(8, 2, new Insets(10, 10, 10, 10), -1, -1)); + contentPanel.add(panel6, + new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + panel6.setBorder( + BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Gastos Generales")); + gastosGeneralesCuentaCorrienteFactura = new NumberFormatedTextField(); + panel6.add(gastosGeneralesCuentaCorrienteFactura, + new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosGeneralesCuentaCorrienteBoleta = new NumberFormatedTextField(); + panel6.add(gastosGeneralesCuentaCorrienteBoleta, + new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosGeneralesCuentaCorrienteSinRespaldo = new NumberFormatedTextField(); + panel6.add(gastosGeneralesCuentaCorrienteSinRespaldo, + new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosGeneralesEfectivoFacturaField = new NumberFormatedTextField(); + gastosGeneralesEfectivoFacturaField.setEditable(false); + panel6.add(gastosGeneralesEfectivoFacturaField, + new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosGeneralesEfectivoBoletaField = new NumberFormatedTextField(); + gastosGeneralesEfectivoBoletaField.setEditable(false); + panel6.add(gastosGeneralesEfectivoBoletaField, + new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosGeneralesEfectivoSinRespaldo = new NumberFormatedTextField(); + gastosGeneralesEfectivoSinRespaldo.setEditable(false); + panel6.add(gastosGeneralesEfectivoSinRespaldo, + new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + gastosGeneralesTotal = new NumberFormatedTextField(); + gastosGeneralesTotal.setEditable(false); + panel6.add(gastosGeneralesTotal, new GridConstraints(7, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JLabel label30 = new JLabel(); + label30.setText("CTA CTE Con Factura:"); + panel6.add(label30, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label31 = new JLabel(); + label31.setText("CTA CTE Con Boleta:"); + panel6.add(label31, + new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label32 = new JLabel(); + label32.setText("CTA CTE Sin Respaldo:"); + panel6.add(label32, + new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label33 = new JLabel(); + label33.setText("Efectivo Con Factura:"); + panel6.add(label33, + new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label34 = new JLabel(); + label34.setText("Efectivo Con Boleta:"); + panel6.add(label34, + new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label35 = new JLabel(); + label35.setText("Efectivo Sin Respaldo"); + panel6.add(label35, + new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label36 = new JLabel(); + label36.setText("Total:"); + panel6.add(label36, + new GridConstraints(7, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final Spacer spacer6 = new Spacer(); + panel6.add(spacer6, new GridConstraints(6, 1, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, + false)); + } + + /** + * @noinspection ALL + */ + public JComponent $$$getRootComponent$$$() { + return contentPanel; + } + + private void createUIComponents() { + createYearSpinner(); + createMonthCombo(); + } + + private void createYearSpinner() { + SpinnerModel model = new YearSpinnerModel(); + this.yearSpinner = new JSpinner(); + this.yearSpinner.setModel(model); + ((DefaultEditor) this.yearSpinner.getEditor()).getTextField().setEditable(true); + } + + private void createMonthCombo() { + months = new ArrayList<>(); + months.add("Enero"); + months.add("Febrero"); + months.add("Marzo"); + months.add("Abril"); + months.add("Mayo"); + months.add("Junio"); + months.add("Julio"); + months.add("Agosto"); + months.add("Septiembre"); + months.add("Octubre"); + months.add("Noviembre"); + months.add("Diciembre"); + + monthCombo = new JComboBox<>(); + for (String month : months) { + monthCombo.addItem(month); } - public JPanel getContentPanel() { - return contentPanel; - } - - public YearMonth getMonth() { - int year = Integer.valueOf((String) yearSpinner.getValue()); - int month = this.months.indexOf((String) this.monthCombo.getSelectedItem()) + 1; - - YearMonth yearMonth = YearMonth.of(year, month); - return yearMonth; - } - - public JSpinner getYearSpinner() { - return yearSpinner; - } - - public JComboBox getMonthCombo() { - return monthCombo; - } - - public NumberFormatedTextField getVentaBrutaField() { - return ventaBrutaField; - } - - public NumberFormatedTextField getVentaNetaField() { - return ventaNetaField; - } - - public NumberFormatedTextField getVentaIVAField() { - return ventaIVAField; - } - - public NumberFormatedTextField getVentaExentasField() { - return ventaExentasField; - } - - public NumberFormatedTextField getVentasNetaExentasField() { - return ventasNetaExentasField; - } - - public NumberFormatedTextField getGastosOperacionalesCostoVenta() { - return gastosOperacionalesCostoVenta; - } - - public NumberFormatedTextField getGastosOperacionalesRemuneraciones() { - return gastosOperacionalesRemuneraciones; - } - - public NumberFormatedTextField getGastosOperacionalesFiniquitos() { - return gastosOperacionalesFiniquitos; - } - - public NumberFormatedTextField getGastosOperacionalesAguinaldo() { - return gastosOperacionalesAguinaldo; - } - - public NumberFormatedTextField getGastosOperacionalesPartime() { - return gastosOperacionalesPartime; - } - - public NumberFormatedTextField getGastosOperacionalesBonos() { - return gastosOperacionalesBonos; - } - - public NumberFormatedTextField getGastosOperacionalesHonorariosContador() { - return gastosOperacionalesHonorariosContador; - } - - public NumberFormatedTextField getGastosOperacionalesArriendo() { - return gastosOperacionalesArriendo; - } - - public NumberFormatedTextField getGastosOperacionalesTotal() { - return gastosOperacionalesTotal; - } - - public DoubleFormatedTextField getGastosOperacionesPorcentajeCostoVenta() { - return gastosOperacionesPorcentajeCostoVenta; - } - - public NumberFormatedTextField getServiciosAgua() { - return serviciosAgua; - } - - public NumberFormatedTextField getServiciosLuz() { - return serviciosLuz; - } - - public NumberFormatedTextField getServiciosGas() { - return serviciosGas; - } - - public NumberFormatedTextField getServiciosTelefono() { - return serviciosTelefono; - } - - public NumberFormatedTextField getServiciosTotal() { - return serviciosTotal; - } - - public NumberFormatedTextField getGastosGeneralesCuentaCorrienteFactura() { - return gastosGeneralesCuentaCorrienteFactura; - } - - public NumberFormatedTextField getGastosGeneralesCuentaCorrienteBoleta() { - return gastosGeneralesCuentaCorrienteBoleta; - } - - public NumberFormatedTextField getGastosGeneralesCuentaCorrienteSinRespaldo() { - return gastosGeneralesCuentaCorrienteSinRespaldo; - } - - public NumberFormatedTextField getGastosGeneralesEfectivoFacturaField() { - return gastosGeneralesEfectivoFacturaField; - } - - public NumberFormatedTextField getGastosGeneralesEfectivoBoletaField() { - return gastosGeneralesEfectivoBoletaField; - } - - public NumberFormatedTextField getGastosGeneralesEfectivoSinRespaldo() { - return gastosGeneralesEfectivoSinRespaldo; - } - - public NumberFormatedTextField getGastosGeneralesTotal() { - return gastosGeneralesTotal; - } - - public NumberFormatedTextField getResumenUtilidad() { - return resumenUtilidad; - } - - public NumberFormatedTextField getResumenPPMMes() { - return resumenPPMMes; - } - - public NumberFormatedTextField getResumenIVAMes() { - return resumenIVAMes; - } - - public NumberFormatedTextField getResumenIVAFavor() { - return resumenIVAFavor; - } - - public NumberFormatedTextField getResumenResultado() { - return resumenResultado; - } - - public NumberFormatedTextField getServiciosOtro() { - return serviciosOtro; - } - - public NumberFormatedTextField getResumenAPagar() { - return resumenAPagar; - } - - public NumberFormatedTextField getResumenIVAPPM() { - return resumenIVAPPM; - } - - public DoubleFormatedTextField getResumenPPM() { - return resumenPPM; - } - - public JButton getGuardarButton() { - return guardarButton; - } - - public JButton getExportarButton() { - return exportarButton; - } - - /** - * Method generated by IntelliJ IDEA GUI Designer - * >>> IMPORTANT!! <<< - * DO NOT edit this method OR call it in your code! - * - * @noinspection ALL - */ - private void $$$setupUI$$$() { - createUIComponents(); - contentPanel = new JPanel(); - contentPanel.setLayout(new GridLayoutManager(3, 3, new Insets(10, 10, 10, 10), -1, -1)); - final JPanel panel1 = new JPanel(); - panel1.setLayout(new GridLayoutManager(6, 2, new Insets(10, 10, 10, 10), -1, -1)); - contentPanel.add(panel1, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - panel1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Venta")); - final JLabel label1 = new JLabel(); - label1.setText("Bruto:"); - panel1.add(label1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label2 = new JLabel(); - label2.setText("Neto:"); - panel1.add(label2, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label3 = new JLabel(); - label3.setText("IVA:"); - panel1.add(label3, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label4 = new JLabel(); - label4.setText("Exentas:"); - panel1.add(label4, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label5 = new JLabel(); - label5.setText("Neto + Exentas:"); - panel1.add(label5, new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - ventaBrutaField = new NumberFormatedTextField(); - ventaBrutaField.setEditable(false); - panel1.add(ventaBrutaField, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - ventaNetaField = new NumberFormatedTextField(); - ventaNetaField.setEditable(false); - panel1.add(ventaNetaField, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - ventaIVAField = new NumberFormatedTextField(); - ventaIVAField.setEditable(false); - panel1.add(ventaIVAField, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - ventaExentasField = new NumberFormatedTextField(); - ventaExentasField.setEditable(false); - panel1.add(ventaExentasField, new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - ventasNetaExentasField = new NumberFormatedTextField(); - ventasNetaExentasField.setEditable(false); - panel1.add(ventasNetaExentasField, new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final Spacer spacer1 = new Spacer(); - panel1.add(spacer1, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); - final JPanel panel2 = new JPanel(); - panel2.setLayout(new GridLayoutManager(9, 2, new Insets(10, 10, 10, 10), -1, -1)); - contentPanel.add(panel2, new GridConstraints(1, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - panel2.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Resumen")); - resumenUtilidad = new NumberFormatedTextField(); - resumenUtilidad.setEditable(false); - panel2.add(resumenUtilidad, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - resumenPPMMes = new NumberFormatedTextField(); - resumenPPMMes.setEditable(false); - panel2.add(resumenPPMMes, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - resumenIVAMes = new NumberFormatedTextField(); - resumenIVAMes.setEditable(false); - panel2.add(resumenIVAMes, new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - resumenIVAFavor = new NumberFormatedTextField(); - resumenIVAFavor.setEditable(true); - panel2.add(resumenIVAFavor, new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - resumenResultado = new NumberFormatedTextField(); - resumenResultado.setEditable(false); - panel2.add(resumenResultado, new GridConstraints(8, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final JLabel label6 = new JLabel(); - label6.setText("Utilidad:"); - panel2.add(label6, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label7 = new JLabel(); - label7.setText("PPM Mes:"); - panel2.add(label7, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label8 = new JLabel(); - label8.setText("+ IVA Mes:"); - panel2.add(label8, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label9 = new JLabel(); - label9.setText("- IVA A Favor:"); - panel2.add(label9, new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label10 = new JLabel(); - label10.setText("Resultado:"); - panel2.add(label10, new GridConstraints(8, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final Spacer spacer2 = new Spacer(); - panel2.add(spacer2, new GridConstraints(7, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); - final JLabel label11 = new JLabel(); - label11.setText("PPM:"); - panel2.add(label11, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - resumenAPagar = new NumberFormatedTextField(); - resumenAPagar.setEditable(false); - panel2.add(resumenAPagar, new GridConstraints(6, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final JLabel label12 = new JLabel(); - label12.setText("A Pagar PPM + IVA"); - panel2.add(label12, new GridConstraints(6, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - resumenIVAPPM = new NumberFormatedTextField(); - resumenIVAPPM.setEditable(false); - panel2.add(resumenIVAPPM, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - resumenPPM = new DoubleFormatedTextField(); - panel2.add(resumenPPM, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final JPanel panel3 = new JPanel(); - panel3.setLayout(new GridLayoutManager(1, 7, new Insets(0, 0, 0, 0), -1, -1)); - contentPanel.add(panel3, new GridConstraints(0, 0, 1, 3, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final Spacer spacer3 = new Spacer(); - panel3.add(spacer3, new GridConstraints(0, 4, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false)); - final JLabel label13 = new JLabel(); - label13.setText("Mes:"); - panel3.add(label13, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - panel3.add(monthCombo, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final JLabel label14 = new JLabel(); - label14.setText("Año:"); - panel3.add(label14, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - panel3.add(yearSpinner, new GridConstraints(0, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - guardarButton = new JButton(); - guardarButton.setText("Guardar"); - panel3.add(guardarButton, new GridConstraints(0, 6, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - exportarButton = new JButton(); - exportarButton.setText("Exportar"); - panel3.add(exportarButton, new GridConstraints(0, 5, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final JPanel panel4 = new JPanel(); - panel4.setLayout(new GridLayoutManager(10, 3, new Insets(10, 10, 10, 10), -1, -1)); - contentPanel.add(panel4, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - panel4.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Gastos Operacionales")); - final JLabel label15 = new JLabel(); - label15.setText("Costo de Venta:"); - panel4.add(label15, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label16 = new JLabel(); - label16.setText("Remuneraciones:"); - panel4.add(label16, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label17 = new JLabel(); - label17.setText("Finiquitos:"); - panel4.add(label17, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label18 = new JLabel(); - label18.setText("Aguinaldo:"); - panel4.add(label18, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label19 = new JLabel(); - label19.setText("Partime:"); - panel4.add(label19, new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label20 = new JLabel(); - label20.setText("Bonos Personal:"); - panel4.add(label20, new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label21 = new JLabel(); - label21.setText("Honorarios Contador:"); - panel4.add(label21, new GridConstraints(6, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label22 = new JLabel(); - label22.setText("Arriendo:"); - panel4.add(label22, new GridConstraints(7, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - gastosOperacionalesCostoVenta = new NumberFormatedTextField(); - panel4.add(gastosOperacionalesCostoVenta, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - gastosOperacionalesRemuneraciones = new NumberFormatedTextField(); - panel4.add(gastosOperacionalesRemuneraciones, new GridConstraints(1, 1, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - gastosOperacionalesFiniquitos = new NumberFormatedTextField(); - panel4.add(gastosOperacionalesFiniquitos, new GridConstraints(2, 1, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - gastosOperacionalesAguinaldo = new NumberFormatedTextField(); - panel4.add(gastosOperacionalesAguinaldo, new GridConstraints(3, 1, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - gastosOperacionalesPartime = new NumberFormatedTextField(); - gastosOperacionalesPartime.setEditable(false); - panel4.add(gastosOperacionalesPartime, new GridConstraints(4, 1, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - gastosOperacionalesBonos = new NumberFormatedTextField(); - panel4.add(gastosOperacionalesBonos, new GridConstraints(5, 1, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - gastosOperacionalesHonorariosContador = new NumberFormatedTextField(); - panel4.add(gastosOperacionalesHonorariosContador, new GridConstraints(6, 1, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - gastosOperacionalesArriendo = new NumberFormatedTextField(); - panel4.add(gastosOperacionalesArriendo, new GridConstraints(7, 1, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final JLabel label23 = new JLabel(); - label23.setText("Total:"); - panel4.add(label23, new GridConstraints(9, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - gastosOperacionalesTotal = new NumberFormatedTextField(); - gastosOperacionalesTotal.setEditable(false); - panel4.add(gastosOperacionalesTotal, new GridConstraints(9, 1, 1, 2, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final Spacer spacer4 = new Spacer(); - panel4.add(spacer4, new GridConstraints(8, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); - gastosOperacionesPorcentajeCostoVenta = new DoubleFormatedTextField(); - gastosOperacionesPorcentajeCostoVenta.setColumns(6); - gastosOperacionesPorcentajeCostoVenta.setEditable(false); - panel4.add(gastosOperacionesPorcentajeCostoVenta, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JPanel panel5 = new JPanel(); - panel5.setLayout(new GridLayoutManager(7, 2, new Insets(10, 10, 10, 10), -1, -1)); - contentPanel.add(panel5, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - panel5.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Servicios")); - final JLabel label24 = new JLabel(); - label24.setText("Agua:"); - panel5.add(label24, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label25 = new JLabel(); - label25.setText("Luz:"); - panel5.add(label25, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label26 = new JLabel(); - label26.setText("Gas:"); - panel5.add(label26, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label27 = new JLabel(); - label27.setText("Telefono:"); - panel5.add(label27, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label28 = new JLabel(); - label28.setText("Total:"); - panel5.add(label28, new GridConstraints(6, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - serviciosAgua = new NumberFormatedTextField(); - panel5.add(serviciosAgua, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - serviciosLuz = new NumberFormatedTextField(); - panel5.add(serviciosLuz, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - serviciosGas = new NumberFormatedTextField(); - panel5.add(serviciosGas, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - serviciosTelefono = new NumberFormatedTextField(); - panel5.add(serviciosTelefono, new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - serviciosTotal = new NumberFormatedTextField(); - serviciosTotal.setEditable(false); - panel5.add(serviciosTotal, new GridConstraints(6, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final Spacer spacer5 = new Spacer(); - panel5.add(spacer5, new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); - serviciosOtro = new NumberFormatedTextField(); - panel5.add(serviciosOtro, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final JLabel label29 = new JLabel(); - label29.setText("Otros:"); - panel5.add(label29, new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JPanel panel6 = new JPanel(); - panel6.setLayout(new GridLayoutManager(8, 2, new Insets(10, 10, 10, 10), -1, -1)); - contentPanel.add(panel6, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - panel6.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Gastos Generales")); - gastosGeneralesCuentaCorrienteFactura = new NumberFormatedTextField(); - panel6.add(gastosGeneralesCuentaCorrienteFactura, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - gastosGeneralesCuentaCorrienteBoleta = new NumberFormatedTextField(); - panel6.add(gastosGeneralesCuentaCorrienteBoleta, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - gastosGeneralesCuentaCorrienteSinRespaldo = new NumberFormatedTextField(); - panel6.add(gastosGeneralesCuentaCorrienteSinRespaldo, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - gastosGeneralesEfectivoFacturaField = new NumberFormatedTextField(); - gastosGeneralesEfectivoFacturaField.setEditable(false); - panel6.add(gastosGeneralesEfectivoFacturaField, new GridConstraints(3, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - gastosGeneralesEfectivoBoletaField = new NumberFormatedTextField(); - gastosGeneralesEfectivoBoletaField.setEditable(false); - panel6.add(gastosGeneralesEfectivoBoletaField, new GridConstraints(4, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - gastosGeneralesEfectivoSinRespaldo = new NumberFormatedTextField(); - gastosGeneralesEfectivoSinRespaldo.setEditable(false); - panel6.add(gastosGeneralesEfectivoSinRespaldo, new GridConstraints(5, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - gastosGeneralesTotal = new NumberFormatedTextField(); - gastosGeneralesTotal.setEditable(false); - panel6.add(gastosGeneralesTotal, new GridConstraints(7, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final JLabel label30 = new JLabel(); - label30.setText("CTA CTE Con Factura:"); - panel6.add(label30, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label31 = new JLabel(); - label31.setText("CTA CTE Con Boleta:"); - panel6.add(label31, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label32 = new JLabel(); - label32.setText("CTA CTE Sin Respaldo:"); - panel6.add(label32, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label33 = new JLabel(); - label33.setText("Efectivo Con Factura:"); - panel6.add(label33, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label34 = new JLabel(); - label34.setText("Efectivo Con Boleta:"); - panel6.add(label34, new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label35 = new JLabel(); - label35.setText("Efectivo Sin Respaldo"); - panel6.add(label35, new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label36 = new JLabel(); - label36.setText("Total:"); - panel6.add(label36, new GridConstraints(7, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final Spacer spacer6 = new Spacer(); - panel6.add(spacer6, new GridConstraints(6, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); - } - - /** - * @noinspection ALL - */ - public JComponent $$$getRootComponent$$$() { - return contentPanel; - } - - private void createUIComponents() { - createYearSpinner(); - createMonthCombo(); - } - - private void createYearSpinner() { - SpinnerModel model = new YearSpinnerModel(); - this.yearSpinner = new JSpinner(); - this.yearSpinner.setModel(model); - ((DefaultEditor) this.yearSpinner.getEditor()).getTextField().setEditable(true); - } - - private void createMonthCombo() { - months = new ArrayList<>(); - months.add("Enero"); - months.add("Febrero"); - months.add("Marzo"); - months.add("Abril"); - months.add("Mayo"); - months.add("Junio"); - months.add("Julio"); - months.add("Agosto"); - months.add("Septiembre"); - months.add("Octubre"); - months.add("Noviembre"); - months.add("Diciembre"); - - monthCombo = new JComboBox<>(); - for (String month : months) { - monthCombo.addItem(month); - } - - int currentMonth = LocalDate.now().getMonth().getValue() - 1; - monthCombo.setSelectedIndex(currentMonth); - } + int currentMonth = LocalDate.now().getMonth().getValue() - 1; + monthCombo.setSelectedIndex(currentMonth); + } } diff --git a/src/danielcortes/xyz/views/InformesSideBar.java b/src/danielcortes/xyz/views/InformesSideBar.java index a10dd70..f317a2b 100644 --- a/src/danielcortes/xyz/views/InformesSideBar.java +++ b/src/danielcortes/xyz/views/InformesSideBar.java @@ -35,82 +35,106 @@ import javax.swing.JPanel; public class InformesSideBar { - private JButton generarLibroVentasButton; - private JPanel contentPanel; - private JButton GenerarEgresosFacturasMateriaPrimaButton; - private JButton estadoResultadoButton; - private JButton generarResumenArqueoButton; - private JButton volverButton; + private JButton generarLibroVentasButton; + private JPanel contentPanel; + private JButton GenerarEgresosFacturasMateriaPrimaButton; + private JButton estadoResultadoButton; + private JButton generarResumenArqueoButton; + private JButton volverButton; - public JPanel getContentPanel() { - return contentPanel; - } + public JPanel getContentPanel() { + return contentPanel; + } - public JButton getInformeLibroDeVentasButton() { - return generarLibroVentasButton; - } + public JButton getInformeLibroDeVentasButton() { + return generarLibroVentasButton; + } - public JButton getGenerarEgresosFacturasMateriaPrimaButton() { - return GenerarEgresosFacturasMateriaPrimaButton; - } + public JButton getGenerarEgresosFacturasMateriaPrimaButton() { + return GenerarEgresosFacturasMateriaPrimaButton; + } - public JButton getEstadoResultadoButton() { - return estadoResultadoButton; - } + public JButton getEstadoResultadoButton() { + return estadoResultadoButton; + } - public JButton getGenerarResumenArqueoButton() { - return generarResumenArqueoButton; - } + public JButton getGenerarResumenArqueoButton() { + return generarResumenArqueoButton; + } - public JButton getVolverButton() { - return volverButton; - } + public JButton getVolverButton() { + return volverButton; + } - { + { // GUI initializer generated by IntelliJ IDEA GUI Designer // >>> IMPORTANT!! <<< // DO NOT EDIT OR ADD ANY CODE HERE! - $$$setupUI$$$(); - } + $$$setupUI$$$(); + } - /** - * Method generated by IntelliJ IDEA GUI Designer - * >>> IMPORTANT!! <<< - * DO NOT edit this method OR call it in your code! - * - * @noinspection ALL - */ - private void $$$setupUI$$$() { - contentPanel = new JPanel(); - contentPanel.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); - final JPanel panel1 = new JPanel(); - panel1.setLayout(new GridLayoutManager(6, 1, new Insets(10, 10, 10, 10), -1, -1)); - contentPanel.add(panel1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - panel1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Informes Mensuales")); - generarLibroVentasButton = new JButton(); - generarLibroVentasButton.setText("Libro de Ventas Mensual"); - panel1.add(generarLibroVentasButton, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - GenerarEgresosFacturasMateriaPrimaButton = new JButton(); - GenerarEgresosFacturasMateriaPrimaButton.setText("Informe de Egresos"); - panel1.add(GenerarEgresosFacturasMateriaPrimaButton, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final Spacer spacer1 = new Spacer(); - panel1.add(spacer1, new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); - estadoResultadoButton = new JButton(); - estadoResultadoButton.setText("Estado Resultado"); - panel1.add(estadoResultadoButton, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - volverButton = new JButton(); - volverButton.setText("Volver"); - panel1.add(volverButton, new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - generarResumenArqueoButton = new JButton(); - generarResumenArqueoButton.setText("Resumen Arqueo"); - panel1.add(generarResumenArqueoButton, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - } + /** + * Method generated by IntelliJ IDEA GUI Designer >>> IMPORTANT!! <<< DO NOT edit this method OR + * call it in your code! + * + * @noinspection ALL + */ + private void $$$setupUI$$$() { + contentPanel = new JPanel(); + contentPanel.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); + final JPanel panel1 = new JPanel(); + panel1.setLayout(new GridLayoutManager(6, 1, new Insets(10, 10, 10, 10), -1, -1)); + contentPanel.add(panel1, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + panel1.setBorder( + BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Informes Mensuales")); + generarLibroVentasButton = new JButton(); + generarLibroVentasButton.setText("Libro de Ventas Mensual"); + panel1.add(generarLibroVentasButton, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + GenerarEgresosFacturasMateriaPrimaButton = new JButton(); + GenerarEgresosFacturasMateriaPrimaButton.setText("Informe de Egresos"); + panel1.add(GenerarEgresosFacturasMateriaPrimaButton, + new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final Spacer spacer1 = new Spacer(); + panel1.add(spacer1, new GridConstraints(4, 0, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, + false)); + estadoResultadoButton = new JButton(); + estadoResultadoButton.setText("Estado Resultado"); + panel1.add(estadoResultadoButton, new GridConstraints(3, 0, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + volverButton = new JButton(); + volverButton.setText("Volver"); + panel1.add(volverButton, new GridConstraints(5, 0, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + generarResumenArqueoButton = new JButton(); + generarResumenArqueoButton.setText("Resumen Arqueo"); + panel1.add(generarResumenArqueoButton, + new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + } - /** - * @noinspection ALL - */ - public JComponent $$$getRootComponent$$$() { - return contentPanel; - } + /** + * @noinspection ALL + */ + public JComponent $$$getRootComponent$$$() { + return contentPanel; + } } diff --git a/src/danielcortes/xyz/views/IngresosView.java b/src/danielcortes/xyz/views/IngresosView.java index 854f764..b636a27 100644 --- a/src/danielcortes/xyz/views/IngresosView.java +++ b/src/danielcortes/xyz/views/IngresosView.java @@ -49,240 +49,325 @@ import javax.swing.table.TableRowSorter; public class IngresosView { - private JPanel contentPanel; - private JTable ingresosTable; - private JButton guardarButton; - private JButton eliminarButton; - private NumberFormatedTextField totalIngresoField; - private NumberFormatedTextField valorField; - private JComboBox tipoCombo; - private JLabel errorTipoIngreso; - private JLabel errorValor; - private JButton editarButton; - private JTextField nroInicialField; - private JTextField nroFinalField; - private JLabel errorNroInicial; - private JLabel errorNroFinal; - private JTextField nroZInicialField; - private JTextField nroZFinalField; - private JLabel errorNroZFinal; - private JLabel errorNroZInicial; + private JPanel contentPanel; + private JTable ingresosTable; + private JButton guardarButton; + private JButton eliminarButton; + private NumberFormatedTextField totalIngresoField; + private NumberFormatedTextField valorField; + private JComboBox tipoCombo; + private JLabel errorTipoIngreso; + private JLabel errorValor; + private JButton editarButton; + private JTextField nroInicialField; + private JTextField nroFinalField; + private JLabel errorNroInicial; + private JLabel errorNroFinal; + private JTextField nroZInicialField; + private JTextField nroZFinalField; + private JLabel errorNroZFinal; + private JLabel errorNroZInicial; - private IngresosTableModel ingresosTableModel; + private IngresosTableModel ingresosTableModel; - private void createUIComponents() { - this.createIngresosTable(); - this.createTipoCombo(); - } + private void createUIComponents() { + this.createIngresosTable(); + this.createTipoCombo(); + } - private void createIngresosTable() { - this.ingresosTableModel = new IngresosTableModel(); - this.ingresosTable = new JTable(ingresosTableModel); + private void createIngresosTable() { + this.ingresosTableModel = new IngresosTableModel(); + this.ingresosTable = new JTable(ingresosTableModel); - RowSorter sorter = new TableRowSorter<>(ingresosTableModel); - this.ingresosTable.setRowSorter(sorter); - this.ingresosTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); - } + RowSorter sorter = new TableRowSorter<>(ingresosTableModel); + this.ingresosTable.setRowSorter(sorter); + this.ingresosTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + } - private void createTipoCombo() { - this.tipoCombo = new JComboBox<>(); - } + private void createTipoCombo() { + this.tipoCombo = new JComboBox<>(); + } - public JPanel getContentPanel() { - return contentPanel; - } + public JPanel getContentPanel() { + return contentPanel; + } - public JTable getIngresosTable() { - return ingresosTable; - } + public JTable getIngresosTable() { + return ingresosTable; + } - public JButton getGuardarButton() { - return guardarButton; - } + public JButton getGuardarButton() { + return guardarButton; + } - public JButton getEliminarButton() { - return eliminarButton; - } + public JButton getEliminarButton() { + return eliminarButton; + } - public NumberFormatedTextField getTotalIngresoField() { - return totalIngresoField; - } + public NumberFormatedTextField getTotalIngresoField() { + return totalIngresoField; + } - public NumberFormatedTextField getValorField() { - return valorField; - } + public NumberFormatedTextField getValorField() { + return valorField; + } - public JComboBox getTipoCombo() { - return tipoCombo; - } + public JComboBox getTipoCombo() { + return tipoCombo; + } - public JLabel getErrorTipoIngreso() { - return errorTipoIngreso; - } + public JLabel getErrorTipoIngreso() { + return errorTipoIngreso; + } - public JLabel getErrorValor() { - return errorValor; - } + public JLabel getErrorValor() { + return errorValor; + } - public JButton getEditarButton() { - return editarButton; - } + public JButton getEditarButton() { + return editarButton; + } - public JTextField getNroInicialField() { - return nroInicialField; - } + public JTextField getNroInicialField() { + return nroInicialField; + } - public JTextField getNroFinalField() { - return nroFinalField; - } + public JTextField getNroFinalField() { + return nroFinalField; + } - public JLabel getErrorNroInicial() { - return errorNroInicial; - } + public JLabel getErrorNroInicial() { + return errorNroInicial; + } - public JLabel getErrorNroFinal() { - return errorNroFinal; - } + public JLabel getErrorNroFinal() { + return errorNroFinal; + } - public IngresosTableModel getIngresosTableModel() { - return ingresosTableModel; - } + public IngresosTableModel getIngresosTableModel() { + return ingresosTableModel; + } - public JTextField getNroZInicialField() { - return nroZInicialField; - } + public JTextField getNroZInicialField() { + return nroZInicialField; + } - public JTextField getNroZFinalField() { - return nroZFinalField; - } + public JTextField getNroZFinalField() { + return nroZFinalField; + } - public JLabel getErrorNroZFinal() { - return errorNroZFinal; - } + public JLabel getErrorNroZFinal() { + return errorNroZFinal; + } - public JLabel getErrorNroZInicial() { - return errorNroZInicial; - } + public JLabel getErrorNroZInicial() { + return errorNroZInicial; + } - { + { // GUI initializer generated by IntelliJ IDEA GUI Designer // >>> IMPORTANT!! <<< // DO NOT EDIT OR ADD ANY CODE HERE! - $$$setupUI$$$(); - } + $$$setupUI$$$(); + } - /** - * Method generated by IntelliJ IDEA GUI Designer - * >>> IMPORTANT!! <<< - * DO NOT edit this method OR call it in your code! - * - * @noinspection ALL - */ - private void $$$setupUI$$$() { - createUIComponents(); - contentPanel = new JPanel(); - contentPanel.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); - final JPanel panel1 = new JPanel(); - panel1.setLayout(new GridLayoutManager(3, 1, new Insets(10, 10, 10, 10), -1, -1)); - contentPanel.add(panel1, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - panel1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Ingresos")); - final JScrollPane scrollPane1 = new JScrollPane(); - panel1.add(scrollPane1, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); - scrollPane1.setViewportView(ingresosTable); - final JPanel panel2 = new JPanel(); - panel2.setLayout(new GridLayoutManager(3, 6, new Insets(0, 0, 0, 0), -1, -1)); - panel1.add(panel2, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, new Dimension(150, -1), null, 0, false)); - final JLabel label1 = new JLabel(); - label1.setText("Tipo"); - panel2.add(label1, new GridConstraints(0, 5, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final DefaultComboBoxModel defaultComboBoxModel1 = new DefaultComboBoxModel(); - tipoCombo.setModel(defaultComboBoxModel1); - panel2.add(tipoCombo, new GridConstraints(1, 5, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final JLabel label2 = new JLabel(); - label2.setText("Valor"); - panel2.add(label2, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - valorField = new NumberFormatedTextField(); - panel2.add(valorField, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final JLabel label3 = new JLabel(); - label3.setText("N° Inicial"); - panel2.add(label3, new GridConstraints(0, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label4 = new JLabel(); - label4.setText("N° Final"); - panel2.add(label4, new GridConstraints(0, 4, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - nroInicialField = new JTextField(); - panel2.add(nroInicialField, new GridConstraints(1, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - nroFinalField = new JTextField(); - panel2.add(nroFinalField, new GridConstraints(1, 4, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - errorTipoIngreso = new JLabel(); - errorTipoIngreso.setForeground(new Color(-65536)); - errorTipoIngreso.setText("Label"); - errorTipoIngreso.setVisible(false); - panel2.add(errorTipoIngreso, new GridConstraints(2, 5, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - errorNroInicial = new JLabel(); - errorNroInicial.setForeground(new Color(-65536)); - errorNroInicial.setText("Label"); - errorNroInicial.setVisible(false); - panel2.add(errorNroInicial, new GridConstraints(2, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - errorNroFinal = new JLabel(); - errorNroFinal.setForeground(new Color(-65536)); - errorNroFinal.setText("Label"); - errorNroFinal.setVisible(false); - panel2.add(errorNroFinal, new GridConstraints(2, 4, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label5 = new JLabel(); - label5.setText("N° Z Inicial"); - panel2.add(label5, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JLabel label6 = new JLabel(); - label6.setText("N° Z Final"); - panel2.add(label6, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - nroZInicialField = new JTextField(); - panel2.add(nroZInicialField, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - nroZFinalField = new JTextField(); - panel2.add(nroZFinalField, new GridConstraints(1, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - errorNroZInicial = new JLabel(); - errorNroZInicial.setForeground(new Color(-65536)); - errorNroZInicial.setText("Label"); - errorNroZInicial.setVisible(false); - panel2.add(errorNroZInicial, new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - errorNroZFinal = new JLabel(); - errorNroZFinal.setForeground(new Color(-65536)); - errorNroZFinal.setText("Label"); - errorNroZFinal.setVisible(false); - panel2.add(errorNroZFinal, new GridConstraints(2, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final JPanel panel3 = new JPanel(); - panel3.setLayout(new GridLayoutManager(1, 3, new Insets(0, 0, 0, 0), -1, -1)); - panel1.add(panel3, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - final JPanel panel4 = new JPanel(); - panel4.setLayout(new GridLayoutManager(1, 2, new Insets(0, 0, 0, 0), -1, -1)); - panel3.add(panel4, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - final JLabel label7 = new JLabel(); - label7.setText("Total Ingresos"); - panel4.add(label7, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - totalIngresoField = new NumberFormatedTextField(); - totalIngresoField.setEditable(false); - panel4.add(totalIngresoField, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final JPanel panel5 = new JPanel(); - panel5.setLayout(new GridLayoutManager(1, 3, new Insets(0, 0, 0, 0), -1, -1)); - panel3.add(panel5, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - guardarButton = new JButton(); - guardarButton.setText("Añadir"); - guardarButton.setMnemonic('A'); - guardarButton.setDisplayedMnemonicIndex(0); - panel5.add(guardarButton, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - eliminarButton = new JButton(); - eliminarButton.setText("Eliminar"); - panel5.add(eliminarButton, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - editarButton = new JButton(); - editarButton.setText("Editar"); - panel5.add(editarButton, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); - final Spacer spacer1 = new Spacer(); - panel3.add(spacer1, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false)); - } + /** + * Method generated by IntelliJ IDEA GUI Designer >>> IMPORTANT!! <<< DO NOT edit this method OR + * call it in your code! + * + * @noinspection ALL + */ + private void $$$setupUI$$$() { + createUIComponents(); + contentPanel = new JPanel(); + contentPanel.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); + final JPanel panel1 = new JPanel(); + panel1.setLayout(new GridLayoutManager(3, 1, new Insets(10, 10, 10, 10), -1, -1)); + contentPanel.add(panel1, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + panel1.setBorder( + BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), "Ingresos")); + final JScrollPane scrollPane1 = new JScrollPane(); + panel1.add(scrollPane1, + new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_WANT_GROW, null, + null, null, 0, false)); + scrollPane1.setViewportView(ingresosTable); + final JPanel panel2 = new JPanel(); + panel2.setLayout(new GridLayoutManager(3, 6, new Insets(0, 0, 0, 0), -1, -1)); + panel1.add(panel2, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, + new Dimension(150, -1), null, 0, false)); + final JLabel label1 = new JLabel(); + label1.setText("Tipo"); + panel2.add(label1, + new GridConstraints(0, 5, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final DefaultComboBoxModel defaultComboBoxModel1 = new DefaultComboBoxModel(); + tipoCombo.setModel(defaultComboBoxModel1); + panel2.add(tipoCombo, new GridConstraints(1, 5, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JLabel label2 = new JLabel(); + label2.setText("Valor"); + panel2.add(label2, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + valorField = new NumberFormatedTextField(); + panel2.add(valorField, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JLabel label3 = new JLabel(); + label3.setText("N° Inicial"); + panel2.add(label3, + new GridConstraints(0, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label4 = new JLabel(); + label4.setText("N° Final"); + panel2.add(label4, + new GridConstraints(0, 4, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + nroInicialField = new JTextField(); + panel2.add(nroInicialField, new GridConstraints(1, 3, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + nroFinalField = new JTextField(); + panel2.add(nroFinalField, new GridConstraints(1, 4, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + errorTipoIngreso = new JLabel(); + errorTipoIngreso.setForeground(new Color(-65536)); + errorTipoIngreso.setText("Label"); + errorTipoIngreso.setVisible(false); + panel2.add(errorTipoIngreso, + new GridConstraints(2, 5, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + errorNroInicial = new JLabel(); + errorNroInicial.setForeground(new Color(-65536)); + errorNroInicial.setText("Label"); + errorNroInicial.setVisible(false); + panel2.add(errorNroInicial, + new GridConstraints(2, 3, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + errorNroFinal = new JLabel(); + errorNroFinal.setForeground(new Color(-65536)); + errorNroFinal.setText("Label"); + errorNroFinal.setVisible(false); + panel2.add(errorNroFinal, + new GridConstraints(2, 4, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label5 = new JLabel(); + label5.setText("N° Z Inicial"); + panel2.add(label5, + new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JLabel label6 = new JLabel(); + label6.setText("N° Z Final"); + panel2.add(label6, + new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + nroZInicialField = new JTextField(); + panel2.add(nroZInicialField, new GridConstraints(1, 1, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + nroZFinalField = new JTextField(); + panel2.add(nroZFinalField, new GridConstraints(1, 2, 1, 1, GridConstraints.ANCHOR_WEST, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + errorNroZInicial = new JLabel(); + errorNroZInicial.setForeground(new Color(-65536)); + errorNroZInicial.setText("Label"); + errorNroZInicial.setVisible(false); + panel2.add(errorNroZInicial, + new GridConstraints(2, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + errorNroZFinal = new JLabel(); + errorNroZFinal.setForeground(new Color(-65536)); + errorNroZFinal.setText("Label"); + errorNroZFinal.setVisible(false); + panel2.add(errorNroZFinal, + new GridConstraints(2, 2, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + final JPanel panel3 = new JPanel(); + panel3.setLayout(new GridLayoutManager(1, 3, new Insets(0, 0, 0, 0), -1, -1)); + panel1.add(panel3, + new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + final JPanel panel4 = new JPanel(); + panel4.setLayout(new GridLayoutManager(1, 2, new Insets(0, 0, 0, 0), -1, -1)); + panel3.add(panel4, + new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + final JLabel label7 = new JLabel(); + label7.setText("Total Ingresos"); + panel4.add(label7, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_EAST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_FIXED, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, + false)); + totalIngresoField = new NumberFormatedTextField(); + totalIngresoField.setEditable(false); + panel4.add(totalIngresoField, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_WANT_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final JPanel panel5 = new JPanel(); + panel5.setLayout(new GridLayoutManager(1, 3, new Insets(0, 0, 0, 0), -1, -1)); + panel3.add(panel5, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + guardarButton = new JButton(); + guardarButton.setText("Añadir"); + guardarButton.setMnemonic('A'); + guardarButton.setDisplayedMnemonicIndex(0); + panel5.add(guardarButton, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + eliminarButton = new JButton(); + eliminarButton.setText("Eliminar"); + panel5.add(eliminarButton, new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + editarButton = new JButton(); + editarButton.setText("Editar"); + panel5.add(editarButton, new GridConstraints(0, 2, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, new Dimension(150, -1), null, 0, false)); + final Spacer spacer1 = new Spacer(); + panel3.add(spacer1, + new GridConstraints(0, 1, 1, 1, GridConstraints.ANCHOR_WEST, GridConstraints.FILL_NONE, + GridConstraints.SIZEPOLICY_WANT_GROW, 1, null, null, null, 0, false)); + } - /** - * @noinspection ALL - */ - public JComponent $$$getRootComponent$$$() { - return contentPanel; - } + /** + * @noinspection ALL + */ + public JComponent $$$getRootComponent$$$() { + return contentPanel; + } } diff --git a/src/danielcortes/xyz/views/MainSideBar.java b/src/danielcortes/xyz/views/MainSideBar.java index df9189c..f43b4ae 100644 --- a/src/danielcortes/xyz/views/MainSideBar.java +++ b/src/danielcortes/xyz/views/MainSideBar.java @@ -11,63 +11,76 @@ import javax.swing.JPanel; public class MainSideBar { - private JPanel contentPanel; - private JButton informesMensualesButton; - private JButton cajasButton; - private JPanel buttonPanel; + private JPanel contentPanel; + private JButton informesMensualesButton; + private JButton cajasButton; + private JPanel buttonPanel; - public JPanel getContentPanel() { - return contentPanel; - } + public JPanel getContentPanel() { + return contentPanel; + } - public JPanel getButtonPanel() { - return buttonPanel; - } + public JPanel getButtonPanel() { + return buttonPanel; + } - public JButton getInformesMensualesButton() { - return informesMensualesButton; - } + public JButton getInformesMensualesButton() { + return informesMensualesButton; + } - public JButton getCajasButton() { - return cajasButton; - } + public JButton getCajasButton() { + return cajasButton; + } - { + { // GUI initializer generated by IntelliJ IDEA GUI Designer // >>> IMPORTANT!! <<< // DO NOT EDIT OR ADD ANY CODE HERE! - $$$setupUI$$$(); - } + $$$setupUI$$$(); + } - /** - * Method generated by IntelliJ IDEA GUI Designer - * >>> IMPORTANT!! <<< - * DO NOT edit this method OR call it in your code! - * - * @noinspection ALL - */ - private void $$$setupUI$$$() { - contentPanel = new JPanel(); - contentPanel.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); - buttonPanel = new JPanel(); - buttonPanel.setLayout(new GridLayoutManager(3, 1, new Insets(10, 10, 10, 10), -1, -1)); - contentPanel.add(buttonPanel, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, null, 0, false)); - buttonPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), null)); - cajasButton = new JButton(); - cajasButton.setText("Cajas"); - buttonPanel.add(cajasButton, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - final Spacer spacer1 = new Spacer(); - buttonPanel.add(spacer1, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, false)); - informesMensualesButton = new JButton(); - informesMensualesButton.setText("Informes Mensuales"); - buttonPanel.add(informesMensualesButton, new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_HORIZONTAL, GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); - } + /** + * Method generated by IntelliJ IDEA GUI Designer >>> IMPORTANT!! <<< DO NOT edit this method OR + * call it in your code! + * + * @noinspection ALL + */ + private void $$$setupUI$$$() { + contentPanel = new JPanel(); + contentPanel.setLayout(new GridLayoutManager(1, 1, new Insets(0, 0, 0, 0), -1, -1)); + buttonPanel = new JPanel(); + buttonPanel.setLayout(new GridLayoutManager(3, 1, new Insets(10, 10, 10, 10), -1, -1)); + contentPanel.add(buttonPanel, + new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, GridConstraints.FILL_BOTH, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, null, null, + null, 0, false)); + buttonPanel + .setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(), null)); + cajasButton = new JButton(); + cajasButton.setText("Cajas"); + buttonPanel.add(cajasButton, new GridConstraints(0, 0, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + final Spacer spacer1 = new Spacer(); + buttonPanel.add(spacer1, new GridConstraints(2, 0, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_VERTICAL, 1, GridConstraints.SIZEPOLICY_WANT_GROW, null, null, null, 0, + false)); + informesMensualesButton = new JButton(); + informesMensualesButton.setText("Informes Mensuales"); + buttonPanel.add(informesMensualesButton, + new GridConstraints(1, 0, 1, 1, GridConstraints.ANCHOR_CENTER, + GridConstraints.FILL_HORIZONTAL, + GridConstraints.SIZEPOLICY_CAN_SHRINK | GridConstraints.SIZEPOLICY_CAN_GROW, + GridConstraints.SIZEPOLICY_FIXED, null, null, null, 0, false)); + } - /** - * @noinspection ALL - */ - public JComponent $$$getRootComponent$$$() { - return contentPanel; - } + /** + * @noinspection ALL + */ + public JComponent $$$getRootComponent$$$() { + return contentPanel; + } }