From f3ba275d413add22edd1a4c2af7f3ed5117bda3e Mon Sep 17 00:00:00 2001 From: yoga-agoy Date: Thu, 18 Jun 2026 17:03:52 +0530 Subject: [PATCH] added days calculation for after invoice and payment bill raised --- build/classes/com/cont_mgmt/dto/Bill.class | Bin 5686 -> 6232 bytes .../repository/FetchExistBillDet.class | Bin 4399 -> 4658 bytes .../repository/FetchExistExtBillDet.class | Bin 4583 -> 4843 bytes .../cont_mgmt/repository/InsertBillDet.class | Bin 3843 -> 3785 bytes .../repository/InsertExtBillDet.class | Bin 3892 -> 3834 bytes .../cont_mgmt/repository/UpdateBillDet.class | Bin 0 -> 2908 bytes .../repository/UpdateExtBillDet.class | Bin 0 -> 2937 bytes .../cont_mgmt/service/ExtBillDetService.class | Bin 7969 -> 7670 bytes .../cont_mgmt/service/NewBillDetService.class | Bin 7747 -> 7473 bytes .../cont_mgmt/service/UpdBillDetService.class | Bin 0 -> 2596 bytes .../service/UpdExtBillDetService.class | Bin 0 -> 2684 bytes .../cont_mgmt/servlet/ExtBillDetServlet.class | Bin 8851 -> 8746 bytes .../cont_mgmt/servlet/NewBillDetServlet.class | Bin 8514 -> 8416 bytes .../cont_mgmt/servlet/UpdBillDetServlet.class | Bin 0 -> 4627 bytes .../servlet/UpdExtBillDetServlet.class | Bin 0 -> 4762 bytes src/main/java/com/cont_mgmt/dto/Bill.java | 27 +- .../repository/FetchExistBillDet.java | 20 +- .../repository/FetchExistExtBillDet.java | 6 +- .../cont_mgmt/repository/InsertBillDet.java | 6 +- .../repository/InsertExtBillDet.java | 6 +- .../cont_mgmt/repository/UpdateBillDet.java | 82 +++ .../repository/UpdateExtBillDet.java | 81 +++ .../cont_mgmt/service/ExtBillDetService.java | 14 +- .../cont_mgmt/service/NewBillDetService.java | 12 +- .../cont_mgmt/service/UpdBillDetService.java | 56 ++ .../service/UpdExtBillDetService.java | 60 +++ .../cont_mgmt/servlet/ExtBillDetServlet.java | 5 +- .../cont_mgmt/servlet/NewBillDetServlet.java | 5 +- .../cont_mgmt/servlet/UpdBillDetServlet.java | 111 ++++ .../servlet/UpdExtBillDetServlet.java | 110 ++++ src/main/webapp/WEB-INF/web.xml | 3 +- src/main/webapp/exist_bill_det_display.jsp | 508 ++++++++++-------- .../webapp/exist_ext_bill_det_display.jsp | 71 ++- src/main/webapp/ext_bill_det_entry.jsp | 12 - .../webapp/js/exist-bill-det-funcs-display.js | 40 ++ .../js/exist-ext-bill-det-funcs-display.js | 40 ++ src/main/webapp/new_bill_det_entry.jsp | 12 - src/main/webapp/upd_bill_det_entry.jsp | 161 ++++++ src/main/webapp/upd_ext_bill_det_entry.jsp | 161 ++++++ 39 files changed, 1318 insertions(+), 291 deletions(-) create mode 100644 build/classes/com/cont_mgmt/repository/UpdateBillDet.class create mode 100644 build/classes/com/cont_mgmt/repository/UpdateExtBillDet.class create mode 100644 build/classes/com/cont_mgmt/service/UpdBillDetService.class create mode 100644 build/classes/com/cont_mgmt/service/UpdExtBillDetService.class create mode 100644 build/classes/com/cont_mgmt/servlet/UpdBillDetServlet.class create mode 100644 build/classes/com/cont_mgmt/servlet/UpdExtBillDetServlet.class create mode 100644 src/main/java/com/cont_mgmt/repository/UpdateBillDet.java create mode 100644 src/main/java/com/cont_mgmt/repository/UpdateExtBillDet.java create mode 100644 src/main/java/com/cont_mgmt/service/UpdBillDetService.java create mode 100644 src/main/java/com/cont_mgmt/service/UpdExtBillDetService.java create mode 100644 src/main/java/com/cont_mgmt/servlet/UpdBillDetServlet.java create mode 100644 src/main/java/com/cont_mgmt/servlet/UpdExtBillDetServlet.java create mode 100644 src/main/webapp/upd_bill_det_entry.jsp create mode 100644 src/main/webapp/upd_ext_bill_det_entry.jsp diff --git a/build/classes/com/cont_mgmt/dto/Bill.class b/build/classes/com/cont_mgmt/dto/Bill.class index 37eb9b2a6583d7d2c0c130d9570a5b013d6ae412..8fa4d9bce20aa5fdd267ff0248c419a29c08a139 100644 GIT binary patch literal 6232 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 diff --git a/build/classes/com/cont_mgmt/repository/FetchExistBillDet.class b/build/classes/com/cont_mgmt/repository/FetchExistBillDet.class index fc58ffd240e78f04abeabcc2a877ee77e1b743a6..6c2e606d783d95546c7b12bc162080870bf1924e 100644 GIT binary patch delta 1270 zcmb7?U2KzO6vuz(ZP&Mb`!WSoT8PQQj2lVIaGEId3#ESH>IcLr#JSYA*^1jb+IPl~ zkdhcK@Mei6F)HE0nCOKFqhnB1=G1LCRAlP>!VeVC7_and(X5_#Wr-J4V{dxSbAJE- zdEWD!11k?*Wlhc=I}Y5;PlHy@ki(@N#$qWBc$y25Iw#wa>`LSsGpqaaxsGgKt|OUC zC!BPu!^!ld^G>3tFH+YKi$&w{=w|&jtg1`o>*kr1k_&nC_qmmS_fRG<2f1iz)H7RC z@UvgA|88z^3kPftk`-$6X=i=)axsC)dP7~3@C&|Vwx=iK zScG`bW~>;sLZJzp6K<_0*`3X6t7ax#$waB$YL{i-3zyFI>`wG{Hf?fpnchy5ABv}g zAvst4B{&**5f4Eye8nNVRT@gNNTgs!m%LV{%V3z-!|M@n8IEw9ok`{|M)w#reSkP*6Nj9!`4Fr!y)9BEH;vmf!!J^PTT&pLsdedN_2g7g);Y zHmlB%x#7b`vV=~=<%A0yL-8}*T;#IJB_U~l*}<}`hJdd+tI$^;uxX_&)N7^A4clCy zLvYkoGzNsY^f_DHq;b`ziv+=0?muwA7qIYf&E|S2$?fs<*!0G7@#WS2`U*Gm=!r>s z!pq#-CHsvqdAM11S1MR&Ihfp_7Q$?8|j!_Ty4P zx8Qa3V|g7B`UJ(NXQ-KKpsE`qD$8rdRIa{pHCrbXIa_g(D3#*V)r|b7i(eX~ao9g1 zNAx&HrA02`kuDjOFB*4{tWkr!(A!C~gBfI#$s+x(AcytLr-%h?Vj<-kttFSkEao^% zIITB)mSwcDTvwmRBUQX(CEr-ZA6643Uu@Qhm$fpB0?A>W%PuxZCB;%j ziTK$h4U|e#kj)Zgs}8zNj^SBXxL}d)B^?Mb*qCs)U!HuV&O4Ql&WGH13Xo$Nr`7X*N50TYFXNTBxdnKJKEZ8q{d6F z@k%3YOp5A~O%pK*zBWlSS#2`UMD2_4S6mxS-bP6xVVD_6EsL9+T+=Mmt>j!9eHpLv?;6Sk zW*`qO*7~;i^VJ*@?7xd!+{UXmM@S2`xwyNsGF*plspd6>XFGW!9(>g1^;vjbWeN`t za*UG6aaGyoJm$3axrtHN4h9`7z-otadA84RR_J82bNv{73LpBfI5Eb*S=xeWUD^ee(27;(#0g zIVi(&h6WjzDfv_LKCaNL#fn0IT}!@|CHmaNGVb6;R?|k5cGhzWEF_xTAu>8H4z zXIRdQN)50=Pi-Y<)%wp_#YOJqH}0a$-C}c(gjg-tajz_+Qwl${$v}qlJYyU%rKn2m4xair(Pk#XcOgf7I delta 1017 zcmb7?NoZ4H5XXP>jCtlIZQanO2N8=Kwze*a)~)Vq1*upSw;0kAnp{euV4SpqAR>5r^ZxUjneY35^QrHw^`ledyTNfcQ{I&z1-As#N@D$zS6hamsf2ELwU1*!KC$ z=dJSj18yeMv57Mr4m$M z+P{OcBqG&P(hcf2#OfV zd{z7uP|0Z4F^0|h$U7OwKE~5Pp}IVQ8%*RWlX$Dfe`N|urizDY;$^z@V}=Z4rW7(u ziYSs2M#ysJN-4!s&OC`wBGoLA+9(Sp%3?j}64}Ty*~D_$!U~Dumt6#852do7GC4?4 z>RBnr2}z@JXOz33+!f_+D|cVHXUerI_eQx7RM1s-vldV4@#sc({YypXxqx8EM=o-S zsDVS?bD0)>XH(vCg{$h2rA}Q_u%p`A%5}Y~lldatVHL+ zj&Ij2?(0O44r}l6Kzlq?rGbp3nrxbgN%WCPw#j6Zp(YyF!FO@ZHF=UGolb4cpNJ+? qrJ2qo#;-PiBB}hdq%N-Y*AAd*a2K2T|89dz8AbFGFZAdJFMk3whUaJi diff --git a/build/classes/com/cont_mgmt/repository/InsertBillDet.class b/build/classes/com/cont_mgmt/repository/InsertBillDet.class index 8a261bfb1e051f4fe4958fde9f924aeafd0a1d2c..a7c4a02c70253eceb6ad80601c75a2f92f1bc907 100644 GIT binary patch delta 1125 zcmb_cOHUJF6g_vQblPcwp|s_@otEN;fJn+l5+;F-fZ~INCKwZwrXiKoU^Q5fP^UteCD6Ezd7RR4lF)axuu;gZ7RoERg>t31Qe2B- z0jCL}Qn|8JSY0m?)REDJdN^36`YSC!6I%qMU3H8XsM2s)SwNS&dHsD!qML)_EAw4VvHJp50jv(XVnM4vB< z3f+g@u@n9YJsfXfuGNgu%LzYWC_dT8{XQA9k9C;$w{7B_>_{Ydpd(6Z4$ioORAo9IUB a-z}E?aUeZ_rT@?kBAyEf&*Wc4!Smnn8@_7* delta 1168 zcmb_c-%rzE6g_v{*3k{<#sNy7^r@uT=fUV+PD^xCrEM;|~R$zU>)(rAhd{opHf)}b5BEZNBVz-*(R z5F0d-f=k*M^1;wq_Yc{~Nnkw?uyNP{!Qmz&v%iT#ERwED4QfFfV}7AiWi2A0<>C-` z)G_X5+E{GbV;<)Hg4h;Qi#wStl>6vr(xWIg*440 zfV;Sd3_WY2EWPy*?gJK;5pK{7G#MmgUB-mF3a~DT%Z&v!A&|q#m~>Z%lF=uys2Xuf zA2y(Z|JKE7wGk$clNM~i_wNmDHqegLJ`Jt?`CO2(3C#VUo)C78KzJ;EKt4SA1@M^5 A4gdfE diff --git a/build/classes/com/cont_mgmt/repository/InsertExtBillDet.class b/build/classes/com/cont_mgmt/repository/InsertExtBillDet.class index 847b3bff00a72e8c05d1d0865cc1a3495aba7676..5ef43a029905ebf06abda272280b8f0ff187f8a4 100644 GIT binary patch delta 1091 zcmbtUO=}ZT6g@YS< zPMstL-^N;BDAg*_)AkR_xu<Q#mZgixQITU)GLZPu>T86LHg{`bZ~ zxRC|uE$N(ep%mhzC-!e+q=Tf+1y@XDT@c*FK0c@IRF*w1H}fk2kXrgh=?O-E{7ZyA%_ealLO(QeoRVhTR5aA1^M}Rd zsac66H}6;^wO3+dn6morccFo^-A2d&7&3-?yKu=_cAI1MJ?zT;#Q!~_>|6&j!wUNE QVNkL{K-iT33>O~%0$W42oB#j- delta 1146 zcmb`H%}*0y5XPVBw%v9qu#~p!wA)fH1_S~ZN!SDuBcP}ue#9CR6DX!)O;Z#KB7Ur* z;zzvg*_dbyCZ0@5<9d+9g9rZ#@BRmxSl?Z{(u2_$-NWWL&phwEGqcHlNpEMAkKf+D z12Be1uayCkD9~#yQrc2|QEQ#p`a~_(W11Blt$wCK|EPiqOv#uebX?4@=7&o8^1{$` zxl&jtEJbh-hX|o!xsuD5Rtf~Ew{JRx!vq?v9uF>4Yh=DyDoqtjg=6{3h3b1bOv85w z>Tao%m8D{NLB>5o=dL=rcCK)#Qd}&{xNm(8y)jS0j~;+tk-=mnrI8dF`rd7{*Pt8B zEZNBVz-(g=A=+mog_g9@?}MSU?(erTB!Trnz{WlYf`bi3W`Bc1ERwEE4QfFfqkiF2 zWi2AmbUDOrHH>+gFpJB7MhdG?aVJmlfH?(oQh69ae)OJpI3DxI`9USw- zs5#J7yfZrOC1Tvwl!&v|6eVOEN1R!0%n(kCS;QqLd>BbNYswL}u-`~Ce?Y9Uw=F0} zhBGys;q;Et?WA;Ov7hY7kKLYi4k<>KvyP{Gr^)dPLp)VI-;y9H3EeUyPs};QoG*yW zSVG*TWy~SrQU&wqa%n}728mu`6<5Fr(hIB!UlL(@hO1ad3K4pWYq$=bW`yGgZX!*y z2*AWGWN4#7S$ggfZUZKj5U$fvXfjB~hKzCdEnq_uj~feVT#%#5m~h{YB%?>LI5q4X zy<3M0{@W^Ma~V;@siXz#@cny3n{~0W)E^pJ|NUH$vH8DRLe3ctga_hRTf_SSX4*|i3P8wgs4PfQ3MN?><|bE!G;|hBt-bG$Bh%(@{p35Gxwfz?m6H2 z&bj{j&(A&wum`Vc=n&Xm@~Y{Q=LUspr5dDtS@Y_4;Q2G@W3{ps$bGis?3aOtsKA=D z)&(o=SZ*bKq@E8UcfYMmOk=ce};M?7~(Aimpn?ciyFNN?X1O-H=4 zOd*0!9U2lEx&+LBbCZIO&LkL%ju_$st8=z1#~an6^e3&NBL%v1UdeK%EZZsrK_TCH1ik8_2$}n=L6q%D?|TtCF=&VBK@JhlLD#HOC?!Tz|=Ju0_&U3 z>*t+x{<+-Jo`$=KM*G|m$Ew%Iz2Jb?aLY?t3XQvU+=HzGNzb=RjwI9q8+-f02$fr| zv??*wiF>h4!+iohOQ*KCb=;2!1iI=n7;XgKh*z!Js>Hn~`=*rT4jsKn2qb*Zaf(*y zoQ8gZd)h&cHymfevze^F6k-AcBw5zI;MpZ6b3*#IS2jzQ>w1A%l%}lKf|(Th zuuG94O;~P&df!w64-0&MY-0cLQ z;Q_N;EQIAO7XrH~sZgzPCx0S8nH?L=PY#bw4493&U+`-FZ8b-Z9X&caK3Q0%-cl_z z>e3Gn+B*=QKW#g*P_u$FJYuhT{LtvpQ4*Ui<~FL$CCe?FHzQXO6OuwLgoG9f>qm7w zhQ~?s8Yyb|GS8G`Rl2OlL$^bwUG9m{puA);l)@8uO2d-^YumMIQBp?+BzuBIo3fk+ z+lS4W?c{jatAVY$d5I^t_|@?YhS?{i3!MqXdb3$Ylsy>Hu^*$PB)7tb5!le1y|rmV z^@BPNsUW)KC0S|&G8{Y#g~K|YRg8;sERc&D#>nk<4x#UT4cjS8KY=3xn-m4j3n~*+ zx+OLXxhTsSGld*>DSjQ*k;f$4up)yoS+83a=DhA^zcgoCtH+hel#b(go&i|3nsmzo zJMRqsGTT;2L_UX;I$lr*CIT;XtPnb-<0X|?tmJrgsZu>9pec@Ul&KN+_aq6=+7@F} z4~6|BpeyzqAl)X&Ho7B)vy8H5nSHC!bP%C`HddP|?bhdR?0iG|GXfno&dDuprCaJw z-RQJqRRjdbneKZR>%-I2ob{3?i!A?%sJSeH+l>V}X$8`RZE0L6=Nww}u(2J&^1(=j zE>gR6Zp^ARXS;?AD{iI`WDS>Y4!M;FXn1+W#^f0$5MCUqyw~tcQo+d*thoMmsd}(V z1d(?qK~k3wr4GuxyZB7A=N(*{lqn_x{B2wHZ|AsxvFWOM3jSjHEp`N zriV7@!8(2s7i^&4jg;ejZ^CBfJMtD!?BaHh$ize@E;3qVFwy@BR?lKfCT7GUb1*w# z#OAPFVBkx1&7)rCXD1Po}0z7Suo+93z?)5yMgXj zEbk(bNg1gHBe{_2G_)H?8QL6P6pZx-HXE_%Qs4#UJCV^1eZlBl_^+z#6YsMGI$p;c zY;X0xLeRqZX1s?F@Nx5d9`l6sI=;gX{QgBGL?_=7sIq*70Y1C=)kDzN5%Bf&VDNbt z?#340i(7g1nRo=-Fo^9K#tw{gnTWE4Y; zV>hm{^*`mHy~4v7Q~ zi!MAX*6?&ioi|A$Qldp2C7p()=tQYVsiP^CD3P{YD?^fc5!z3q()|6@g)`iZBPmkM z;;ceaXgCLlr1t5(3YTbHCI%jAl-?mRJ)Ea>l|Fsckz&N5q%*dbgn-fgj8%(-EUAGm z8#n)+&~R^4-orTmU}B4O_76I=?K`F6;v&`{bw^iJP^WB)E;8wV_BOM~M$+%-3B+Iq TnEDUS(Am@?;IA;<4!rsophmn3 literal 0 HcmV?d00001 diff --git a/build/classes/com/cont_mgmt/repository/UpdateExtBillDet.class b/build/classes/com/cont_mgmt/repository/UpdateExtBillDet.class new file mode 100644 index 0000000000000000000000000000000000000000..dda6bfa4d873d2ee9c330ddef4699eb90fee9929 GIT binary patch literal 2937 zcmb7GOK%(375=XH7?K+KA=$A<@nhn|j%Z6(o=QvEbtIX#=~9Yf%1Z3SVTR-tJ@#;h z9u95EZ5IIo|AruoEP?=rfh_W}97RY3WZ|M+blF{jqCk;svPw1uimKn`(4zcI0!TAw z?mg$+bH4MPbNSc*ef151!}ybiE`fB}s|}YuHz?MswP4tnb+2Iup1&}Bx?ZsYnVk>D zZO1t(0}WAuO&6@o*05u_)!|o47i2jQh|<~>*pt88Q>CQVsbPEW@X^wQ=Z*@*5819A z{7xV;ke;RKgjbO%M9{56LqbE3fcbN7Qqa+z1Y^+=LtJ2E-gf0wvsRM+j8$@^KyThF zTh6TI+v>Z$7!A(b4S@sq#QBJfRlv;_3Ih3od?)on;M;C>^jEIr+(1^PKbk%(kjl=N zWnE#@&|nB`Z8>jTa)t}9=GXQ#JWfD5=T10QqcPeq{9f6TduT=G1`qM@T7)40)15s)ofMefwSpZW%;y@ z0VD(xzUMe4t9((zet}(`Ag7v+Gws<-)?W)TfkAm!+u)Mf}WZ>Dyk#EL*PY z1!hT_vQ`fkQb^;V;=?duc>wC^*#w>y`0@1g(XpAV8I+u&oDYh2=)72wfmz7Tm};%W zgNlv73W~u(T^8+%dDwh*(5#e-VOcB1z^+Lu)au+RoGHxYCbNZ^vB~K{v)S;AUfqA7 z=EUh!r?OKs#dYd!)ncWqb z#XFg(=m}G?9>PRRh5z$9UcifFf1S*=d|6<6vL;>D=$Qwh)uF(2Xi!;<=d>U{HB6H4og6~n z<4xPCNI!vB1hy+$nwM23rgY0}Ao5dIGG+>S98{b;rK5luwq{iZld{pUs?2%IogQk9 zymsF!lUW_F;dKUJ)$7u&2n;(z93$Pi(DxGn_ z-Pon3^cMuW>KvatI!gD|ox0IE$EpeljyT=-t~AEx=6D52o-A_wC!*%M2p%*l=%gJ; z3%0cpqMUP((ZjY*26?#bR^2JH3-WvHDF5h)wg&=E~zccvmK0w3OyEbOdGlB3v zNfo@NUzQ3^MtASUcum=B>tOl3(N86?|{ne+#Mo%h1oG zMT{)rPy~h+8(PA+65~QRNj}7KhryP3)4n& z5w9-d^dgw>&`Kt0#BQUv9m{njGASdqVkB2G-G+7>DMMSrn}V_4M!yk@t_5CHz7rYU z&{vG^m0zm5HSsY^pyM69%MMrX4+&cM?#B&$g3nvu%UC9)U*jM6C%?ZJ3DM1W1gb2b zVUW+w{OTp>eFS_9J#1$w`mqy_^Sa!{8*w+D!yb%aFUGJBQ+S%=VE}LQR2v82V+dDp z5Lc=74(InZyvRsK@DT^_4G!8*Fp8TvgfDS~k-W@E#_=sC@E2t9Hyp#?ah$Q`@GqRi zzd1U-=l&1e|B3tmVIc&Liv;oS!AY?RlP&7JM-q_|ZR#lLZCHv8&C?ti3i*QJ4pWbV5iN-bTfQLGzk4Q`pmnhw&Pah4W z7;z}+jIAvpAfDf0!z#f@YM{&JoxhhfJkgR5GtU1qsZ~0Agbr=f=QLbd#U`X4>WT{L mlJXdU*HVgEiD562d3MFKmH$9AIJUx literal 0 HcmV?d00001 diff --git a/build/classes/com/cont_mgmt/service/ExtBillDetService.class b/build/classes/com/cont_mgmt/service/ExtBillDetService.class index e453a36ec62ce02e6dbd78f5f2db578332f94872..f10530b82b5c8c42c77913c67526a3ea4e7b2751 100644 GIT binary patch delta 1568 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 GC;tnU%w){~ delta 2774 zcmcJRd34lQ7018t%|4kWnPf8aCbMKA%Me0R+eR}qwNwg5%GN~-2dPOILrNM*GSma9 zPFtz*U@ImM41_|Vw3%*FQqm#NHeso$Qdz2YQCm>ks!%IptqTb8{$3`W)JFgFBe%!{+SZFLtiX|W~W@Qcgc4BGWj{XXU{49X>QP8 z-`Lb7Png~`7!>U`w-=hx#bBywzH3EeebkH%4CYj)%!(=az75^jB(Jt?$?UOV3m#%H zHa53KTVsqFw50-F){SyLt#nae*kyIel~$8AT%!%$X2ZksZR=ixtxj9^p|p~8XXEHP zGaH+t^J`mUdk&@9*;J+1M00EJj53Tj8kJl&m|q)PCQsRxu;cPtd(itTL&hDoch#0R z)iyVj*EGkX4bfH;ekNn~8;oz*@Frf9L-wonZ!u)cZT4*GaO8V_ZNqPHl8&)7+7yjN zt;okaWGZJlDvZC^#{5Bk-4V_^gIi5_pTVIPSQTq*D!;L@EtZBe_`rrg;jDbwk(+-8 z=WO^3K4j3hHLjt}>q@l42k?C;mB(3n0XteW1M(pyvd+%bJ_nd`PBmTZPuxDwEpMGAz|RTtNUOCwH^IgGU; zGl^wAxLf-!cXV$?tH_MxdkrFw`XWe8y~tHhG0Cnf6?s$Q zWkT;Y(4Ktc#-PX*A+JXiiDHp1Tq0j{?B>cq0{M{=HA_(vTNM-&Bw&t&MR-V*47mgP z9Wd%Eg;AZsT zi%8&0=)-O3$3pDKV!VPc<8|DQ5AYS7Lmi7}pq_=WlocV$s_|7e8x3qOma&DngDu8# zR);&;eQ0Li!wS}om24MU*b8W7Lug}1@HKV}tJynP!#+Ygx8iQ@N1TUo4=<%}1@7h5 zxQ~C9zB6z?pM!7l+tI<76R*U#`6{f7^KalgyaNyL2k;K(0SRO4Fm8r3znV+WX`M~JwhokTiCj}qw>J%(Nw6eWmEiXJCz+@kOa zLaU-DiP983MPyU-G=2cPqFqD|MbD7dsc1JjI9<`RB+F2=hsdR1YFSLJur-(tQ*k0UO_n=Sk*+i+AG%8sdkWZ@`Nfq&u&L&NW1`AlC5m6m^p9 z0Len=;m#EGk?bJJaU7)p(hxh$0%rkBEvXjsg4_M^HjR)KQB41YsNnbar@0D1(JOm>sen zGlBl+nQ%h3c(XJYJ9T1&f)bcOEiYu-*#rs?g~6ni%zqo{v;A*b+-#y;{W(3EwW5%{E<5PL z*-AOPjS}u*N~Z0UJdaRf?4*o%Ob!aqVlC>7EIcYZIN3Sy3;dFtOzx$GMu+U9am6OD&KCM=?`$ii=?UOL$DS3s@qoW1nY+pJ1t!(#QnYW9y z&rrearflz{M0u8i*N-VCy)yAYfi{tdEvt|I^d diff --git a/build/classes/com/cont_mgmt/service/UpdBillDetService.class b/build/classes/com/cont_mgmt/service/UpdBillDetService.class new file mode 100644 index 0000000000000000000000000000000000000000..6f6e68cda01cecdca4f488a96988b030b1e9caa9 GIT binary patch literal 2596 zcma)7TT>fl7=AtiY_cqJ4DEu&9xM<}k+vd2Ta}ZhO@T@q1rN9+OIX-s<7UIqafT~z z{0aVo-gx7Tgc&>2-usihus+`=kU$b;CX?^o_j}*xJ-^>y|NQwHzyml6ngoWEP9~ak zvffrEo$;c1(><_~X7qV3HE-GWqUo)dI0~8tI`@nNBWfGjbaZul&rEs(Z9A52mSqHP z#p}Z@SA^yS+6%dq;hALv0wWi+Tr=n7EzfaZNIxo)R2?u6t-Ke@9ys*U2jKOY`MVc@ zPNP|BtVGP#`&QQS9ts3TA_;-!1t(>y2%tkl8#D!70yq9QEES#T2tlA%Lkn6J^a%`| z*J>1&if~C)*PtM%U_fB%yy_(aQPE#Q8PpJhD$o(PvgS%5vu(Q1jBVQ#=#D!{!%i5k zCBMteW^dQZ3q%^EuBH)~uooloN+Ya$u9Z#C)#dCPu4ni?Wt(1f*Yk4GHL|LOV_DBk zn{G9$A!1}xKwUaanmNyMvUvqV0@o{^EZ9aqzv6hyP9d8*6H_oE5cZ|=Kibjtr}3(* zQGvk6@Jk(oHTGl!U!vU`_I52` zT?fNh)v$)A%tvX73dAq#-s$SD_2F~~Bb%}V)-^nnHR(>799usLu^oSfa!)Aot>9LX z+vH-2xf;5x%4%LSUCUv?v~5;frc%y6SNMNqimg$|yD=*DRH2``$EqB#1y+mPU-yjU{u3kT?@9$k zta<`Vc~r0`pf@bO0-IT>WU3qs7umW~aFgX0>#JF_lTrmY_@D&%S_jZ1UlmeK@`>Tzp5UF)SLob0LH99wNQOyXImT6z{UqN##fqwMjHovcvE3t`4UvBbb2jCXHc%QVCzl~u;Fea^w*Su>Z|0po6h}q!iAGkI) zUc|&~h-6Rql>FCQ#`M-A?iTUUE6il0ghe_lyg+tuIPq^o2<7Yq5N9AlVRy;?-&(IOR zBGn}0$Jf}P6-jO48)ivT-||*w`G}q+Xg@&A?`cmVeaOlsSl2GZV2}#Yr<>R&rBb37 zNu3eVg_3s~l0=NrTLzBQr z+Req&Zr*>K%jW!eQF?oJTE^E3nT36S)^?nE>93ZR8kz;#pICcV+_Cc6`10lxnf3)* zw`@mNFam?g`izTJ&pfN8oB)%cU+&vQpXU?#J(nH_ zt`hXxkI6Uajw4%m>p3#F+_Cev|FJ-5IF=Gp%u26TbtYqMLqK2HPs@UDyZNGqA%TIaCv%QfEH1hJqPv@CRaamdh6SPl zs`#T5UwxRY*&1PiRSA}M9cRV0>5*51858IVFt!^{EWh4RDW5P9$4$~_Wt|cgm})3d zvD3K=lmeO!XptqXc^0m(H+D=A#VX*Nc#{rJ(n8By2?>=KP>+r`?3NdG3 z9t-STt5A^njKFw3=&2AZCTA4I=LWt&g1PnGvOnzH;WJWj-#`)%h%H)sQjIl%U+Ne< zWlz;|1C@VfnV%-C>tGbi23GKp`6v%rfn=lZ9gp_YJ{frMIMv7eM@4(M#}X zSB;rtSNSp#kYYtFSvg*k@@uw8W`CPweao@30)nICq*=9jfyjz~^DOd{kTRK|Hd;1% zvi})g$acAVe$}_qI}fZvFjF;Nj)gR%J(2xnI;&-o#($Fh!k9hMvib{F<@{^njQ^#`FzO-zSJe#hm}u@c6oBNV$j-&0@n+^E@7!uutB_yRNQop+D$2{E%J zEKchcz__WKEoP*IdjZMC(J?b@HkYt8sXc>PW;4SjeEAIFY2DOcnvs`L?N_u!wdefN zyB2KVJ9_mP+t}e6f{HT5XBmtwgiA#9)7LAEt{)wYt(VaaavkD#ir-nrwaE28quU6W zCdd^>4mVN2EfhJn_c4i|h#ny8&q4kVDp_I?!G6 z?yBq`(Bl;S3X$`BdahC4=Z&U#-yKN6q7+7Wm&0|e)JXn)z5?w5TKg>K@&l=peir_AAKFtlmGw# literal 0 HcmV?d00001 diff --git a/build/classes/com/cont_mgmt/servlet/ExtBillDetServlet.class b/build/classes/com/cont_mgmt/servlet/ExtBillDetServlet.class index 264d83ac5a5338d8f55e3ec70e9a5d7947b19898..7e334de473dc28013eeaf8645ccefc86f9087b36 100644 GIT binary patch delta 3190 zcmaJ@3w)E+75|^SzC6CrG-=X&eIzL;l$P?E7D>SkXgkXr3f)kkgf^B!U!*CI4UGa$ zMFrUf2W4|SHp`qtN?oL&D4WB9Y;#PVOl2aQQyIF44wxuAH%;39#@z3hU%qqy_kYek z=iGDdy`t>#QtOG&4;=w8p6=+heqvG`;Z@P<`lc1l^)+E(R;F03$i$s0Vz^7RDpi?l zRjk8gf*~5IZ?s_{?oshA+$-KzN*wnSXoL+9;2{MM5`5x9M&^u3%}r6ZsbV7*6Kr+i z=~lv|3uKT)v{PZCTG;ikIilEjJ?W^{@zmZ_#L6;I)(;$6#b?P(PU(M_<2 zYHQ0@MJLubG?a#;M7d&@wNo_OT1+?+t{!P%tOq*s`@SzoX z_)Nv;xGF9?wEu_nDFrV<><%sD{Ev6@*N`6VP_fR-<4Rb=P%#_E)Q&ZO})ugFGDqWYd zG^qzR(_rSb_Hpu68k*u%rZ|PN2>UoiDh*F@D(VUn_RTbs%O={KT5GgQUy>XPyEG?( zn(0R2aAmN&V^q2+HOH=%wuQ|UomG*<%~Z-xaCgj3WY0=jdMa1xtCFWOuQD}brV8<_E8jFlrKvPcoOey38DdO^ z-!x05*;Fa!XH;6|($^HKBIJn&GV+WneVyisGZ}Z%0gUWJpEijBt1;Z;@~r3RH6Wt?)8r-fTvLv>tV zwbZOq3oYlwhFV&}O}y_#VzV(rOgE%ECbrc#)P^G^lGdtHv@7hnLYBLbfq{T7S1k3O zj1@eEtim|%h~w^{yRaMUIg$5uV}lM7@$mG}Lg%J9#s@RC%wuqAnQ?4xhfT{oh`Ajw z3^<6bL2nOjo1|%)b_^a(WA!9c>&MK}jL!BrzPlY(=gweuM+~ZF)Ena19n98D&d1`| z8_Y2j=W03gf_X=Z1Nvfr2MV-2w|{idr}^S|Vmq9gFQK7jv!Qla^u@Uyu&?)%+wTtS zy85a+w;hfG=YGwlxeJHIaiCLQ>|+nFE7DAwqM5xmuU$*i99p{OjA7ij)I@-I4Jpe~(3r{H+< z`%?1ztK|1L(4&xVk#{jxJeO4#JB%UM2905P94e_Cb7(T= z(lk_273NVj=F?&Vn~wNvz)GD3t8@dfT9<=07zWTp1Z2^m2*cTRDHUT3 zC?Va1vCzS$bK(25SN&-!#h-cBjq@~`vwsR6T%^G<{Ds9#a*_@2;eB{{1Fqr& z#xzd-S>BrWk;Tc^5∋b|n{oXP%E!z7+q!KjGtC zy6`bRfgk_kOn!#+tBAm+fD|m`|BE6m*QaiSCxuABD;z!-T^37n^R0nvCPrRXP@ei# zC4`>;Px;Dbv!8-P$i=maqrX^@t@NrI|A*?RFIG*hsk_Sin{$n~!T+O)^ebEua}*rS z;2Pow0soKU0<&`UyoBSz@7H2if+o#$jBjUyi~me<(sh%fPYi8xXzv|5)9OCfwl`G*y`=$1H5mZ47XrkOg9GNu{3X^tM9oR*%GV=`Aba5pDuEqB5?_^_TE z^B#=j*X4BFi$%DPE9`zoH{cO|V(!I*IE06AoZppiU=tVZ!?=viB%hDm+_;6C5oAv_ zH%qc`xw%<73)?%qCsO3*5zhy*wOhHlOtO}_ap?-F3h9|4Uw$740q%!`1fxP1o?8@oi`}9=rGmJbJ6Wj(~`nCEsIlAoFYL*`dGvlfYRe-fu_ijk#~h} z4Yt|ipNCBWJ2}{0oax={&mIK%kt{Pen^B;o*T<4Xqe~x4sEurElB@YNc<|8sI-e6wOiq delta 3215 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 JPHnUR_zx4@#bf{g delta 3084 zcmZ`*dwi4C8Gha*&6lQMXq!uuuSuJfaw!dk$+Tc9j6%yS2z0a*L7{{;lwz8eG*#He zcwyibp$C}YL~z40-35dNDwi>scme0;g~=uZWt-c)fNtWPV0};0mi{5X?fFmjg6ByT@|4i(KxXz%_i2GOU3uiOTs5Pl=( zWo)3|iVGRV#-n&%!S94mb$O4$M#yZ7Hb-JLv0%e(wb5V$=a}%KikI-Rn4|8X6P=b^ z`n_;lhSDEIxuuX^+a0oupfojErj3J&vNC%sG=&RP9gN1rfk7V`{!b_pJM~3I1(yg~ zr=ockTri=BD;kPMTcguM?d`#)5Lb;zB^~L7J!`x%O(i2KVouhyVd(@{By>l;+=r9h zUfQJ<~wb4v&%2UWA&S$$RUu0PG<8Mi$jN>YZZ zG)z*muTUx@jY$F(u{dPFHKAB697^s|tdgHba;=zN-V&=0Ha8~gT4AD51beJC77UlS zw04LcR!iJX-%#lqNw=ivmCGB#wZY{koRM2!tI~CSYfWxym+P5uR(i&%bbX(vrqA<^ z^xUA*_&!fnuZO6c`DsPw~C>5pJ4&PDNfs+g(h0ag({Eul7jNJHZ*iZqoKxt&rI`akqRp{ zh)9}qaGe=PDWuY38JjFaul6KuiAv41R2;CE8Rt`2rIy{7?H4G0Jsc%azRBE6m&hOt+R6xBfVREt_DrJ{j=1t(2n_$(v$r+l5*V&A8eQACd zEGvEF@Hq;$^}OlG-;Atc>$93o%khs)V9zdnsh1~?DDnx?rE z*jMUxcn#ZNEp~YOrXA=)iNmYgis8l9!+qeMF1P|d&6mKDV$FAj{K766=&;VF%fa#9 z=PSL>S9_m-gdTo=GrWdtAtq}T@sp^+IZVZ;m_~$~$cyRZ#|)Z`nN-2gD%4O7YH1E; z(>&Bs1Ljf~w^A$S(@MTF9z#8C!9v=`<7W_}omfl<&_oBZln$eXjw3>+(Ms>J{Q=tO z6D*@I5!ESZ*V)h!*ST=JE)RF;{8)jJ0IR(~iUcJX#c@ij6l3}Rl-4+04;?ae1$Z5A z@JXCH2i|1MfMGf#PO_DT>*zE5i7g|_>3zJ#mcmCmgHvpoIQZA`XSUKg)EDp<#NU7! z9kds3<1{jG4?T^)vSq;xTadhH+XndU!K437HC!E8F zjJY}GdVIu~hm-zNuNB5&oW}*^aRCnEV|;>qE<+yv!#po1JdFQxDZQLk8!qBA`0zi@ zoQmuoM3JF@6f98ixq>OFzqr|xX$2%eW7)=h)-*d+y)><24P2JU1r#NotU zDCQ3$RwE{)mh4j_b9*?`90FUi?7E~SODsOlbH(|yfT3#`H1mS5;5f!`quE*3&+}N} zr$ycY?gZHbM$LGPU*jB=OEV@YHyN=Udgaj9KP;5PA^pSQayWu7yncjllmv~INL(IT zE-^+z-yBFPmB`qENI)WG1Ca?5nK%%cERo8A$c+-2+Q0X7Ih@f)h|9gdBcWM+P^ttr zntk;Oq;90C+)ThKPTXp4y8Doi`#I|m;08R18F&Z_`MWcUHCTy9un}vq1MB#Mt&=-L za38Pdp4kB9bNvYOS;6jn5uTX4pp~QZ#Tbn~Sb78qP_)4Hlq$=d*y2&}{)l9<7A6q@?s!tSNGo#>eN|o~Ngj zmBV)u@Hj8Hh0pW^pJ^)s*p^h+tkgD)CGR?vC3`kc%Bw8d$WmTq$@uk2OUA#&=N>La bs6a;%Ms?ImZTz&dwTv4wdJCwXe=*=IvHi_k diff --git a/build/classes/com/cont_mgmt/servlet/UpdBillDetServlet.class b/build/classes/com/cont_mgmt/servlet/UpdBillDetServlet.class new file mode 100644 index 0000000000000000000000000000000000000000..d9dc220c1c10253f14d3f8a1b74819ba0b09bcd9 GIT binary patch literal 4627 zcmb7HX?qjb6@ITRGqN-WA{HZ>!axFe!HBjgO=LD>o1nzlie;M^65O#gwg-7cEuni$8w(t0y3;mo(|t|T5B<`g&<}Z@wC~kOMv_h9c$vG*x#ync zJ;sh8r2or1qJX)n&K|Z%2VoKs%;S z>W-_=kxjU6CUSs}B9*{$axisk$Z)czogR#J35eSS8anNC*45MQkZ$FSItn0vgn*hh z+!MAlIp~^JR$xO$)fuS+UqpJ!$#^c9bsaN3Uc5=G zI#swSag~AxuFF+ep>SDq)v?lLl?Edz&o9|&rcHOZKy6d=kbtk#P8k8zVzr78Rw!5_ zu>K9y4WJRL>ml$K6#)blyj9?a$}=SiD%1_&dheX3LPdjujRNZ`&s8fNzy|NgCKXGu zOu?1~(IG86PuT!AduLlzEXQ>M%X-YT(VLqZHJkx`)S{O{J$90~(1{MNi<>@o!lc(1 zGU|dTq*3cq_N|61Fx1rZMriCej^~W5+r9|GY=-zW+NGNU-6xYq#wB{Q3f{2*=o4N< z%#kU0r@)G1`m`P~?MSR|?uCHjcp^v@7b~rR-!VLS1X>nxtSCG2ma^k^*7aj2<7&c8 zjTGWKotu)b-K}B|_6pQz^)Vx^JNlGB-~ zOdul}rUN_W2lGIEVPnj+j3D;ofPz~Iuti!$MGQ(+WqKZ z=8#62Hqxn)v_56{(Mxa3tz6a_F;h~ixQaW_PxE;fk;*k3fz8*rtxA9Z1~8;xkg4OU zaIv&&j2n)ML%5T^&FD_n;GV#$g_y=9kHadC;4Z2=Ewg3cn850$Sh>B6JlmznM^%jA z-Mo?_7oo{y>l!C{#m1)jHmRhcVMdvvBSEAvrhtLEuG%G)2ULtp0|j|ozoA=k-JJ-) z#H4~_%>Gx^_E4h20)ggZUgfZ|AkI9aHNsYr!EvSya_zKCBkjgA9jO#8ziaUjEjLgR zqkb^Ez>geN+%CmDq2eS?F;p0rx-2*qPUsswW+dJA=EHuxM__HNcc`N$)}`%>_4H`* z?*3R`m)3cpFVWpA)9ZUxybt#h)_N-CBL(3W#)zoy2@G?_cFF*?lS=!o$qfC!|$SB2 z&f?3m!+2QEo>g%UUm@W2OooY1plt!w=0{HPLgMCY%q*IoPL;z$^Wz)LNt$Q1l$OmU zlSVc>mb0u=wCh=XOU1Wk-1}YIv!0B-^D4e8H-oM{NMW2#Vo~DkITbTkahC9Sm2l?A z1%d4nd`3!h?c$Y{m}O%*&jz!&q~Q4yItz7ct}d&%EaeC=ZVpmxeVnD>1+KTSAO{N5>0wl-QDWTa}?IK`gOGl)nxT=>u8tdRfWn$axGI zqbzk1IxwX3%`Tz_OLkwY(l!10T!NGOXu%BR27OJNLHojmoQd0ot&Q zqYn|jso@$tSA)0Xrh*`QxRwfutBj>q;33IG^IjI2kPJKUuEKkPn{f*n`4C-*acz#4 zq5k4>%X7G~HPoKRu3m52!D-aj8tR-ycMYO--tO&kcZrB9t)YXn=&Qj+Brak&>TjLJ z-87v(i)0P*n26T%z}nV4(sB_9IniM44mIq%g2u2f-Cz&_DKc8U1G~>7VfEdA7MNtc2^xb4j>9 zkEeF1tJEhDyM(jDp)Xv(m)i1pCiGQ4!it=IosT@e84Z>M2?z7|P6cnd^F7LP4v!SL zgW~w3;`o!| zcoXp7bu6E9;JuWa&HN?iwE#4&J=!YoyM>68|Hz2af}*VK|LkB8^7f&K)HtT zJI;cXYzV){AD~jo+wn*I2@RCB3xDR@rT7bNxC_evXcm6O3kCZX+^4`S{5@Kl43s7& s<8*PfW@b4m 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 0) { + flag = true; + } + + // Commit the transaction + con.commit(); + + } catch (NullPointerException e) { + throw new NullPointerException("Null value encountered: " + e.getMessage()); + } catch (SQLException | ClassNotFoundException e) { + if (con != null) { + try { + // Rollback the transaction in case of error + con.rollback(); + } catch (SQLException sqle) { + throw sqle; + } + } + throw e; + } finally { + try { + if (ps != null) { + ps.close(); + } + if (con != null) { + con.setAutoCommit(true); + con.close(); + } + } catch (SQLException sqle) { + throw sqle; + } + } + return flag; + + } + +} diff --git a/src/main/java/com/cont_mgmt/repository/UpdateExtBillDet.java b/src/main/java/com/cont_mgmt/repository/UpdateExtBillDet.java new file mode 100644 index 0000000..f37cf7a --- /dev/null +++ b/src/main/java/com/cont_mgmt/repository/UpdateExtBillDet.java @@ -0,0 +1,81 @@ +package com.cont_mgmt.repository; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.SQLException; + +import com.cont_mgmt.dbconnection.DbCon; + +public class UpdateExtBillDet { + + // Call the driver class + private DbCon conn = new DbCon(); + + public boolean update(String contNum, String invoiceBillPeriod, String billFilePath, Integer usrId) + throws SQLException, ClassNotFoundException { + // TODO Auto-generated method stub + Connection con = null; + String query = null; + PreparedStatement ps = null; + boolean flag = false; + + try { + // Establish database connection + con = conn.oracleCon(); + + con.setAutoCommit(false); // keep your transactional logic + con.rollback(); // clear any leftover uncommitted changes + + // Check for null values and throw a meaningful NullPointerException + if (invoiceBillPeriod == null) { + throw new NullPointerException("Invoice Billing Period cannot be empty"); + } + + query = "UPDATE tbl_ext_invoice_det SET ext_bill_stat_type_id = 1, db_updated_timestamp = SYSTIMESTAMP, " + + "usr_opr_updated_timestamp = CURRENT_TIMESTAMP, opr_upd_user_id = ?, " + + "ext_bill_file_path = ? WHERE ext_cont_num = ? and ext_invoice_billing_period = ?"; + ps = con.prepareStatement(query); + ps.setInt(1, usrId); + ps.setString(2, billFilePath); + ps.setString(3, contNum); + ps.setString(4, invoiceBillPeriod); + + int rowsAffected = ps.executeUpdate(); // Execute the query + + if (rowsAffected > 0) { + flag = true; + } + + // Commit the transaction + con.commit(); + + } catch (NullPointerException e) { + throw new NullPointerException("Null value encountered: " + e.getMessage()); + } catch (SQLException | ClassNotFoundException e) { + if (con != null) { + try { + // Rollback the transaction in case of error + con.rollback(); + } catch (SQLException sqle) { + throw sqle; + } + } + throw e; + } finally { + try { + if (ps != null) { + ps.close(); + } + if (con != null) { + con.setAutoCommit(true); + con.close(); + } + } catch (SQLException sqle) { + throw sqle; + } + } + return flag; + + } + +} diff --git a/src/main/java/com/cont_mgmt/service/ExtBillDetService.java b/src/main/java/com/cont_mgmt/service/ExtBillDetService.java index 1c6c652..1d3db43 100644 --- a/src/main/java/com/cont_mgmt/service/ExtBillDetService.java +++ b/src/main/java/com/cont_mgmt/service/ExtBillDetService.java @@ -103,8 +103,8 @@ public class ExtBillDetService { public int addExtBillDet(String extContNum, String extInvoiceBillingPeriod, String extInvoiceStartDate, String extInvoiceEndDate, double extInvoiceAmt, double extContAmt, String extCGSTAmt, String extSGSTAmt, - String extIGSTAmt, String extITTaxAmt, Part extBillFilePart, Part extInvoiceFilePart, String extVendName, - Integer extUsrId, String extBasePath, String extInvoiceBilledDate, Double extPercent, Double extSNARetAmt) + String extIGSTAmt, String extITTaxAmt, Part extInvoiceFilePart, String extVendName, Integer extUsrId, + String extBasePath, String extInvoiceBilledDate, Double extPercent, Double extSNARetAmt) throws ClassNotFoundException, SQLException, IOException { // TODO Auto-generated method stub double extAmtExclTax = 0.0; @@ -183,26 +183,20 @@ public class ExtBillDetService { extTotAmt = extInvoiceAmt; - fileService.createDirectory("Bill-Ext", - fileService.getContractorDirectory(extVendName, extContNum, extBasePath)); - String extBillFileName = "Bill-Ext-" + extInvoiceBillingPeriod; fileService.createDirectory("Invoice-Ext", fileService.getContractorDirectory(extVendName, extContNum, extBasePath)); String extInvoiceFileName = "Invoice-Ext-" + extInvoiceBillingPeriod; // Handle file upload - String extBillFilePath = fileService.saveFile(extVendName, extContNum, extBillFilePart, extBillFileName, - extBasePath, extInvoiceDate); String extInvoiceFilePath = fileService.saveFile(extVendName, extContNum, extInvoiceFilePart, extInvoiceFileName, extBasePath, extInvoiceDate); try { extInvoiceId = insertExtBillDet.insert(extContNum, newExtITTaxAmt, extInvoiceBillingPeriod, extInvoiceStartDate, extInvoiceEndDate, extInvoiceAmt, extContAmt, extAmtDue, extAmtExclTax, - newExtCGSTAmt, newExtSGSTAmt, newExtIGSTAmt, extTotAmt, extBillFilePath, extInvoiceFilePath, - extUsrId, extInvoiceBilledDate, newExtPercent, extSNARetAmt); + newExtCGSTAmt, newExtSGSTAmt, newExtIGSTAmt, extTotAmt, extInvoiceFilePath, extUsrId, + extInvoiceBilledDate, newExtPercent, extSNARetAmt); } catch (SQLException | ClassNotFoundException e) { try { - fileService.deleteFileIfExists(extBillFilePath); fileService.deleteFileIfExists(extInvoiceFilePath); } catch (IOException ioe) { throw ioe; diff --git a/src/main/java/com/cont_mgmt/service/NewBillDetService.java b/src/main/java/com/cont_mgmt/service/NewBillDetService.java index 76827ea..45f8b37 100644 --- a/src/main/java/com/cont_mgmt/service/NewBillDetService.java +++ b/src/main/java/com/cont_mgmt/service/NewBillDetService.java @@ -40,9 +40,8 @@ public class NewBillDetService { public int addBillDet(String contNum, String invoiceBillingPeriod, String invoiceStartDate, String invoiceEndDate, double invoiceAmt, double contAmt, String cgstAmt, String sgstAmt, String igstAmt, String itTaxAmt, - Part billFilePart, Part invoiceFilePart, String vendName, Integer usrId, String basePath, - String invoiceBilledDate, Double percent, Double snaRetAmt) - throws ClassNotFoundException, SQLException, IOException { + Part invoiceFilePart, String vendName, Integer usrId, String basePath, String invoiceBilledDate, + Double percent, Double snaRetAmt) throws ClassNotFoundException, SQLException, IOException { // TODO Auto-generated method stub double amtExclTax = 0.0; double totAmt = 0.0; @@ -118,24 +117,19 @@ public class NewBillDetService { totAmt = invoiceAmt; - fileService.createDirectory("Bill", fileService.getContractorDirectory(vendName, contNum, basePath)); - String billFileName = "Bill-" + invoiceBillingPeriod; fileService.createDirectory("Invoice", fileService.getContractorDirectory(vendName, contNum, basePath)); String invoiceFileName = "Invoice-" + invoiceBillingPeriod; // Handle file upload - String billFilePath = fileService.saveFile(vendName, contNum, billFilePart, billFileName, basePath, - invoiceDate); String invoiceFilePath = fileService.saveFile(vendName, contNum, invoiceFilePart, invoiceFileName, basePath, invoiceDate); try { invoiceId = insertBillDet.insert(contNum, newITTaxAmt, invoiceBillingPeriod, invoiceStartDate, invoiceEndDate, invoiceAmt, contAmt, amtDue, amtExclTax, newCGSTAmt, newSGSTAmt, newIGSTAmt, totAmt, - billFilePath, invoiceFilePath, usrId, invoiceBilledDate, newPercent, snaRetAmt); + invoiceFilePath, usrId, invoiceBilledDate, newPercent, snaRetAmt); } catch (SQLException | ClassNotFoundException e) { try { - fileService.deleteFileIfExists(billFilePath); fileService.deleteFileIfExists(invoiceFilePath); } catch (IOException ioe) { throw ioe; diff --git a/src/main/java/com/cont_mgmt/service/UpdBillDetService.java b/src/main/java/com/cont_mgmt/service/UpdBillDetService.java new file mode 100644 index 0000000..bf1173b --- /dev/null +++ b/src/main/java/com/cont_mgmt/service/UpdBillDetService.java @@ -0,0 +1,56 @@ +package com.cont_mgmt.service; + +import java.io.IOException; +import java.sql.SQLException; + +import com.cont_mgmt.repository.UpdateBillDet; + +import jakarta.servlet.http.Part; + +public class UpdBillDetService { + + // Call the FileService to create directory + private FileService fileService = new FileService(); + + // Call the UpdateBillDet to upload payment file + private UpdateBillDet updateBillDet = new UpdateBillDet(); + + // Call the ExistInvoiceBillDateService to fetch invoice bill date based on + // contNum and invoice billing period + private ExistInvoiceBillDateService existInvoiceBillDateService = new ExistInvoiceBillDateService(); + + public boolean updateBillDet(String contNum, String invoiceBillPeriod, Part billFilePart, Integer usrId, + String vendName, String basePath) + throws ClassNotFoundException, SQLException, NullPointerException, IOException { + // TODO Auto-generated method stub + boolean flag = false; + String billFilePath = null; + + try { + String invoiceDate = existInvoiceBillDateService.getInvoiceBillDate(contNum, invoiceBillPeriod); + + fileService.createDirectory("Bill", fileService.getContractorDirectory(vendName, contNum, basePath)); + String billFileName = "Bill-" + invoiceBillPeriod; + + // Handle file upload + billFilePath = fileService.saveFile(vendName, contNum, billFilePart, billFileName, basePath, invoiceDate); + + flag = updateBillDet.update(contNum, invoiceBillPeriod, billFilePath, usrId); + } catch (IOException e) { + // TODO Auto-generated catch block + try { + fileService.deleteFileIfExists(billFilePath); + } catch (IOException ioe) { + throw ioe; + } + throw e; + } + + if (flag) { + return flag; + } else { + return flag; + } + } + +} diff --git a/src/main/java/com/cont_mgmt/service/UpdExtBillDetService.java b/src/main/java/com/cont_mgmt/service/UpdExtBillDetService.java new file mode 100644 index 0000000..295d986 --- /dev/null +++ b/src/main/java/com/cont_mgmt/service/UpdExtBillDetService.java @@ -0,0 +1,60 @@ +package com.cont_mgmt.service; + +import java.io.IOException; +import java.sql.SQLException; + +import com.cont_mgmt.repository.UpdateExtBillDet; + +import jakarta.servlet.http.Part; + +public class UpdExtBillDetService { + + // Call the FileService to create directory + private FileService fileService = new FileService(); + + // Call the UpdateExtBillDet to upload payment file + private UpdateExtBillDet updateExtBillDet = new UpdateExtBillDet(); + + // Call the ExistExtInvoiceBillDateService to fetch invoice bill date based on + // contNum and invoice billing period + private ExistExtInvoiceBillDateService existExtInvoiceBillDateService = new ExistExtInvoiceBillDateService(); + + public boolean updateExtBillDet(String extContNum, String extInvoiceBillPeriod, Part extBillFilePart, + Integer extUsrId, String extVendName, String extBsePath) + throws ClassNotFoundException, SQLException, NullPointerException, IOException { + // TODO Auto-generated method stub + boolean flag = false; + String extBillFilePath = null; + + try { + String extInvoiceDate = existExtInvoiceBillDateService.getExtInvoiceBillDate(extContNum, + extInvoiceBillPeriod); + + fileService.createDirectory("Bill-Ext", + fileService.getContractorDirectory(extVendName, extContNum, extBsePath)); + String extBillFileName = "Bill-Ext-" + extInvoiceBillPeriod; + + // Handle file upload + extBillFilePath = fileService.saveFile(extVendName, extContNum, extBillFilePart, extBillFileName, + extBsePath, extInvoiceDate); + + flag = updateExtBillDet.update(extContNum, extInvoiceBillPeriod, extBillFilePath, extUsrId); + + } catch (IOException e) { + // TODO Auto-generated catch block + try { + fileService.deleteFileIfExists(extBillFilePath); + } catch (IOException ioe) { + throw ioe; + } + throw e; + } + + if (flag) { + return flag; + } else { + return flag; + } + } + +} diff --git a/src/main/java/com/cont_mgmt/servlet/ExtBillDetServlet.java b/src/main/java/com/cont_mgmt/servlet/ExtBillDetServlet.java index 7d9f9e2..b1f5e57 100644 --- a/src/main/java/com/cont_mgmt/servlet/ExtBillDetServlet.java +++ b/src/main/java/com/cont_mgmt/servlet/ExtBillDetServlet.java @@ -68,7 +68,6 @@ public class ExtBillDetServlet extends HttpServlet { String extIGSTAmt = stringUtils.safeParam(request, "ext_igst_amt"); String extITTaxAmt = stringUtils.safeParam(request, "ext_it_tax_amt"); Integer extUsrId = Integer.parseInt(request.getParameter("hid_ext_usr_id")); - Part extBillFilePart = request.getPart("ext_bill_file"); Part extInvoiceFilePart = request.getPart("ext_invoice_file"); String extUsrIPAddr = networkUtils.getClientIpAddr(request).trim(); String extBasePath = request.getServletContext().getRealPath("/").trim(); @@ -109,8 +108,8 @@ public class ExtBillDetServlet extends HttpServlet { try { extInvoiceId = extBillDetService.addExtBillDet(extContNum, extInvoiceBillingPeriod, extInvoiceStartDate, extInvoiceEndDate, extInvoiceAmt, extContAmt, extCGSTAmt, extSGSTAmt, extIGSTAmt, extITTaxAmt, - extBillFilePart, extInvoiceFilePart, extVendName, extUsrId, extBasePath, extInvoiceBilledDate, - extPercent, extSNARetAmt); + extInvoiceFilePart, extVendName, extUsrId, extBasePath, extInvoiceBilledDate, extPercent, + extSNARetAmt); if (extInvoiceId >= 1) { handleBillSuccess(extInvoiceId, extUsrId, extUsrIPAddr, request, response); } else if (extInvoiceId == -1) { diff --git a/src/main/java/com/cont_mgmt/servlet/NewBillDetServlet.java b/src/main/java/com/cont_mgmt/servlet/NewBillDetServlet.java index 1357f18..f11ab2f 100644 --- a/src/main/java/com/cont_mgmt/servlet/NewBillDetServlet.java +++ b/src/main/java/com/cont_mgmt/servlet/NewBillDetServlet.java @@ -68,7 +68,6 @@ public class NewBillDetServlet extends HttpServlet { String igstAmt = stringUtils.safeParam(request, "igst_amt"); String itTaxAmt = stringUtils.safeParam(request, "it_tax_amt"); Integer usrId = Integer.parseInt(request.getParameter("hid_usr_id")); - Part billFilePart = request.getPart("bill_file"); Part invoiceFilePart = request.getPart("invoice_file"); String usrIPAddr = networkUtils.getClientIpAddr(request).trim(); String basePath = request.getServletContext().getRealPath("/").trim(); @@ -107,8 +106,8 @@ public class NewBillDetServlet extends HttpServlet { try { invoiceId = newBillDetService.addBillDet(contNum, invoiceBillingPeriod, invoiceStartDate, invoiceEndDate, - invoiceAmt, contAmt, cgstAmt, sgstAmt, igstAmt, itTaxAmt, billFilePart, invoiceFilePart, vendName, - usrId, basePath, invoiceBilledDate, percent, snaRetAmt); + invoiceAmt, contAmt, cgstAmt, sgstAmt, igstAmt, itTaxAmt, invoiceFilePart, vendName, usrId, + basePath, invoiceBilledDate, percent, snaRetAmt); if (invoiceId >= 1) { handleBillSuccess(invoiceId, usrId, usrIPAddr, request, response); } else if (invoiceId == -1) { diff --git a/src/main/java/com/cont_mgmt/servlet/UpdBillDetServlet.java b/src/main/java/com/cont_mgmt/servlet/UpdBillDetServlet.java new file mode 100644 index 0000000..2f7d4f3 --- /dev/null +++ b/src/main/java/com/cont_mgmt/servlet/UpdBillDetServlet.java @@ -0,0 +1,111 @@ +package com.cont_mgmt.servlet; + +import java.io.IOException; +import java.sql.SQLException; + +import com.cont_mgmt.service.LogDetService; +import com.cont_mgmt.service.UpdBillDetService; +import com.cont_mgmt.util.NetworkUtils; +import com.cont_mgmt.util.StringUtils; + +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.MultipartConfig; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.Part; + +/** + * Servlet implementation class UpdBillDetServlet + */ +@MultipartConfig +@WebServlet("/UpdBillDetServlet") +public class UpdBillDetServlet extends HttpServlet { + private static final long serialVersionUID = 1L; + + // Call the NetworkUtils + private NetworkUtils networkUtils = new NetworkUtils(); + + // Call the LogDetService to insert log details + private LogDetService logDetService = new LogDetService(); + + // Call the StringUtils + private StringUtils stringUtils = new StringUtils(); + + // Call the ModifyBillStatService + private UpdBillDetService updBillDetService = new UpdBillDetService(); + + /** + * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse + * response) + */ + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + // TODO Auto-generated method stub + } + + /** + * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse + * response) + */ + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + // TODO Auto-generated method stub + // Get form values + String contNum = stringUtils.safeParam(request, "hid_cont_num"); + String invoiceBillPeriodParam = stringUtils.safeParam(request, "invoice_bill_period"); + Part billFilePart = request.getPart("bill_file"); + String vendName = stringUtils.safeParam(request, "hid_vend_name"); + String invoiceBillPeriod = null; + Integer usrId = Integer.parseInt(request.getParameter("hid_usr_id")); + String basePath = request.getServletContext().getRealPath("/").trim(); + String usrIPAddr = networkUtils.getClientIpAddr(request).trim(); + + String alertMessage = ""; + boolean flag = false; + + if (invoiceBillPeriodParam != null && !invoiceBillPeriodParam.equals("0")) { + // Proceed with processing the invoice bill period value + invoiceBillPeriod = invoiceBillPeriodParam.trim(); // Now safe to + // use + // Continue with logic + } else { + // Handle the error if the invoice bill period is not selected or is + // invalid + logDetService.addLogDet(usrId, usrIPAddr, "INVALID BILL PERIOD CHOSEN"); + response.getWriter().write(stringUtils.buildFailureResponse("Please select a valid invoice bill period.")); + } + + if (billFilePart == null || billFilePart.getSize() <= 0) { + // Handle the error if the invoice bill period is not selected or is + // invalid + logDetService.addLogDet(usrId, usrIPAddr, "INVOICE BILL STATUS NOT UPDATED"); + response.getWriter().write(stringUtils.buildFailureResponse("Please Upload Payment File.")); + } + + try { + flag = updBillDetService.updateBillDet(contNum, invoiceBillPeriod, billFilePart, usrId, vendName, + basePath); + if (flag) { + alertMessage = "Invoice Bill Status for ITC No " + contNum + " and bill period " + invoiceBillPeriod + + " updated successfully."; + logDetService.addLogDet(usrId, usrIPAddr, alertMessage.toUpperCase()); + response.getWriter().write(stringUtils.buildSuccessResponse(alertMessage)); + } else { + alertMessage = "Failed to update invoice bill status for ITC No " + contNum + " and bill period " + + invoiceBillPeriod; + logDetService.addLogDet(usrId, usrIPAddr, alertMessage.toUpperCase()); + response.getWriter().write(stringUtils.buildFailureResponse(alertMessage)); + } + } catch (SQLException | ClassNotFoundException | NullPointerException | IOException e) { + String errorMessage = e.getMessage(); + logDetService.addLogDet(usrId, usrIPAddr, errorMessage.toUpperCase()); + response.getWriter() + .write(stringUtils.buildFailureResponse("Failed to update invoice bill status for ITC No " + contNum + + " and bill period " + invoiceBillPeriod + ".\\nError: " + errorMessage)); + } + + } + +} diff --git a/src/main/java/com/cont_mgmt/servlet/UpdExtBillDetServlet.java b/src/main/java/com/cont_mgmt/servlet/UpdExtBillDetServlet.java new file mode 100644 index 0000000..ff2ce33 --- /dev/null +++ b/src/main/java/com/cont_mgmt/servlet/UpdExtBillDetServlet.java @@ -0,0 +1,110 @@ +package com.cont_mgmt.servlet; + +import java.io.IOException; +import java.sql.SQLException; + +import com.cont_mgmt.service.LogDetService; +import com.cont_mgmt.service.UpdExtBillDetService; +import com.cont_mgmt.util.NetworkUtils; +import com.cont_mgmt.util.StringUtils; + +import jakarta.servlet.ServletException; +import jakarta.servlet.annotation.MultipartConfig; +import jakarta.servlet.annotation.WebServlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.Part; + +/** + * Servlet implementation class UpdExtBillDetServlet + */ +@WebServlet("/UpdExtBillDetServlet") +@MultipartConfig +public class UpdExtBillDetServlet extends HttpServlet { + private static final long serialVersionUID = 1L; + + // Call the NetworkUtils + private NetworkUtils networkUtils = new NetworkUtils(); + + // Call the LogDetService to insert log details + private LogDetService logDetService = new LogDetService(); + + // Call the StringUtils + private StringUtils stringUtils = new StringUtils(); + + // Call the UpdExtBillDetService + private UpdExtBillDetService updExtBillDetService = new UpdExtBillDetService(); + + /** + * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse + * response) + */ + protected void doGet(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + // TODO Auto-generated method stub + } + + /** + * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse + * response) + */ + protected void doPost(HttpServletRequest request, HttpServletResponse response) + throws ServletException, IOException { + // TODO Auto-generated method stub + // Get form values + String extContNum = stringUtils.safeParam(request, "hid_ext_cont_num"); + String extInvoiceBillPeriodParam = stringUtils.safeParam(request, "ext_invoice_bill_period"); + Part extBillFilePart = request.getPart("ext_bill_file"); + String extVendName = stringUtils.safeParam(request, "hid_ext_vend_name"); + String extInvoiceBillPeriod = null; + Integer extUsrId = Integer.parseInt(request.getParameter("hid_ext_usr_id")); + String extBsePath = request.getServletContext().getRealPath("/").trim(); + String extUsrIPAddr = networkUtils.getClientIpAddr(request).trim(); + + String alertMessage = ""; + boolean flag = false; + + if (extInvoiceBillPeriodParam != null && !extInvoiceBillPeriodParam.equals("0")) { + // Proceed with processing the invoice bill period value + extInvoiceBillPeriod = extInvoiceBillPeriodParam.trim(); // Now safe to + // use + // Continue with logic + } else { + // Handle the error if the invoice bill period is not selected or is + // invalid + logDetService.addLogDet(extUsrId, extUsrIPAddr, "INVALID EXTENSION BILL PERIOD CHOSEN"); + response.getWriter() + .write(stringUtils.buildFailureResponse("Please select a valid extension invoice bill period.")); + } + + if (extBillFilePart == null || extBillFilePart.getSize() <= 0) { + // Handle the error if the invoice bill period is not selected or is + // invalid + logDetService.addLogDet(extUsrId, extUsrIPAddr, "EXTENSION INVOICE BILL STATUS NOT UPDATED"); + response.getWriter().write(stringUtils.buildFailureResponse("Please Upload Extension Payment File.")); + } + + try { + flag = updExtBillDetService.updateExtBillDet(extContNum, extInvoiceBillPeriod, extBillFilePart, extUsrId, + extVendName, extBsePath); + if (flag) { + alertMessage = "Extension Invoice Bill Status for ITC No " + extContNum + " and bill period " + + extInvoiceBillPeriod + " updated successfully."; + logDetService.addLogDet(extUsrId, extUsrIPAddr, alertMessage.toUpperCase()); + response.getWriter().write(stringUtils.buildSuccessResponse(alertMessage)); + } else { + alertMessage = "Failed to update extension invoice bill status for ITC No " + extContNum + + " and bill period " + extInvoiceBillPeriod; + logDetService.addLogDet(extUsrId, extUsrIPAddr, alertMessage.toUpperCase()); + response.getWriter().write(stringUtils.buildFailureResponse(alertMessage)); + } + } catch (SQLException | ClassNotFoundException | NullPointerException | IOException e) { + String errorMessage = e.getMessage(); + logDetService.addLogDet(extUsrId, extUsrIPAddr, errorMessage.toUpperCase()); + response.getWriter().write( + stringUtils.buildFailureResponse("Failed to update extension " + "invoice bill status for ITC No " + + extContNum + " and bill period " + extInvoiceBillPeriod + ".\\nError: " + errorMessage)); + } + } +} diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 1be1948..92d4dd7 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -1,5 +1,5 @@ - + ContractManagementSystem index.html @@ -10,7 +10,6 @@ default.htm login.jsp - Oracle DB Connection Details for Contract Management System jdbc/ContractDB diff --git a/src/main/webapp/exist_bill_det_display.jsp b/src/main/webapp/exist_bill_det_display.jsp index 90602b1..50d4a06 100644 --- a/src/main/webapp/exist_bill_det_display.jsp +++ b/src/main/webapp/exist_bill_det_display.jsp @@ -2,56 +2,58 @@ pageEncoding="UTF-8"%> <%@ page language="java" import="com.cont_mgmt.dto.User, java.util.*"%> <%@ page language="java" import="com.cont_mgmt.dto.Bill,java.net.*"%> -<%@ page language="java" import="com.cont_mgmt.util.TimeUtils, java.text.*"%> +<%@ page language="java" + import="com.cont_mgmt.util.TimeUtils, java.text.*"%> <%@ page language="java" import="com.cont_mgmt.wrapper.BillDetListWrapper"%> <%@ page language="java" import="com.cont_mgmt.wrapper.ContDetListWrapper"%> <%@ page language="java" import="com.cont_mgmt.dto.Contract"%> -<%@ page language="java" import="com.cont_mgmt.service.ExistExtContDetService"%> +<%@ page language="java" + import="com.cont_mgmt.service.ExistExtContDetService"%> <% // Check if the user is logged in by checking if the user object is not null - User user = (User) session.getAttribute("user"); - if (user == null || user.getUserName().equals("")) { - // If not logged in, redirect to logout.jsp - response.sendRedirect("logout.jsp"); - return; // Stop further execution of the page - } - - String errorMessage = (String) request.getAttribute("errorMessage"); - String reqSrc = (String) request.getAttribute("reqSrc"); - String vendName = (String) request.getAttribute("vendName"); - - Integer lockPercent = 0; - Integer lockAmount = 0; - - // Call the TimeUtils - TimeUtils timeUtils = new TimeUtils(); - - SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); - Date currentDate = sdf.parse(sdf.format(new Date())); - - // Call the ExistExtContDetService - ExistExtContDetService existExtContDetService = new ExistExtContDetService(); - - // Retrieve the BillDetListWrapper and ContractDetListWrapper attribute set by the servlet - BillDetListWrapper billDetListWrapper = (BillDetListWrapper) request.getAttribute("billListWrapper"); - ContDetListWrapper contDetListWrapper = (ContDetListWrapper) request.getAttribute("contListWrapper"); - - if (billDetListWrapper != null && !billDetListWrapper.getBillDetList().isEmpty()) { - for (Bill bill : billDetListWrapper.getBillDetList()) { - lockPercent += (int) Math.round(bill.getPercentApplied()); - lockAmount += (int) Math.round(bill.getTotAmt()); - } - } - - Integer thresholdAmt = (int) Math.round(contDetListWrapper.getContList().get(0).getContAmt()); - String contNum = contDetListWrapper.getContList().get(0).getContNum(); - Integer isExtendedFlag = (int) Math.round(contDetListWrapper.getContList().get(0).getIsExtended()); - List extContList = new ArrayList(); - if (isExtendedFlag == 1) { - extContList = existExtContDetService.getExtContDet(null, contNum); - } +User user = (User) session.getAttribute("user"); +if (user == null || user.getUserName().equals("")) { + // If not logged in, redirect to logout.jsp + response.sendRedirect("logout.jsp"); + return; // Stop further execution of the page +} + +String errorMessage = (String) request.getAttribute("errorMessage"); +String reqSrc = (String) request.getAttribute("reqSrc"); +String vendName = (String) request.getAttribute("vendName"); + +Integer lockPercent = 0; +Integer lockAmount = 0; + +// Call the TimeUtils +TimeUtils timeUtils = new TimeUtils(); + +SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); +Date currentDate = sdf.parse(sdf.format(new Date())); + +// Call the ExistExtContDetService +ExistExtContDetService existExtContDetService = new ExistExtContDetService(); + +// Retrieve the BillDetListWrapper and ContractDetListWrapper attribute set by the servlet +BillDetListWrapper billDetListWrapper = (BillDetListWrapper) request.getAttribute("billListWrapper"); +ContDetListWrapper contDetListWrapper = (ContDetListWrapper) request.getAttribute("contListWrapper"); + +if (billDetListWrapper != null && !billDetListWrapper.getBillDetList().isEmpty()) { + for (Bill bill : billDetListWrapper.getBillDetList()) { + lockPercent += (int) Math.round(bill.getPercentApplied()); + lockAmount += (int) Math.round(bill.getTotAmt()); + } +} + +Integer thresholdAmt = (int) Math.round(contDetListWrapper.getContList().get(0).getContAmt()); +String contNum = contDetListWrapper.getContList().get(0).getContNum(); +Integer isExtendedFlag = (int) Math.round(contDetListWrapper.getContList().get(0).getIsExtended()); +List extContList = new ArrayList(); +if (isExtendedFlag == 1) { + extContList = existExtContDetService.getExtContDet(null, contNum); +} %> @@ -61,14 +63,15 @@ Contract Management System - + <%@include file="includes/header.jsp"%> - <% - if (reqSrc.equalsIgnoreCase("exist_cont_det_display_page")) { - %> + <% + if (reqSrc.equalsIgnoreCase("exist_cont_det_display_page")) { + %> <%@include file="includes/exist_navbar.jsp"%> <% } else if (reqSrc.equalsIgnoreCase("exp_cont_det_display_page")) { @@ -83,12 +86,12 @@ %>
-
- -
- <% - if (reqSrc.equalsIgnoreCase("exist_cont_det_display_page")) { - %> +
+ +
+ <% + if (reqSrc.equalsIgnoreCase("exist_cont_det_display_page")) { + %>

Contract Details

<% } else if (reqSrc.equalsIgnoreCase("exp_cont_det_display_page")) { @@ -97,11 +100,11 @@ <% } else if (reqSrc.equalsIgnoreCase("cust_rep_det_display_page")) { %> -

Custom Reports Contract Details

+

Custom Reports Contract Details

<% - } - if (contDetListWrapper != null && !contDetListWrapper.getContList().isEmpty()) { - %> + } + if (contDetListWrapper != null && !contDetListWrapper.getContList().isEmpty()) { + %>

@@ -110,9 +113,8 @@ - + value="<%=vendName%>">

@@ -125,19 +127,21 @@
-
-

Work Order Amount : - ₹ <%=String.format("%,.2f", contDetListWrapper.getContList().get(0).getContAmt())%> -

+
+

+ Work Order Amount : ₹ + <%=String.format("%,.2f", contDetListWrapper.getContList().get(0).getContAmt())%> +

-
-
+
+

AS File :

@@ -146,23 +150,23 @@ if (!contDetListWrapper.getContList().get(0).getContLOAFilePath().trim().equals("-")) { %>
-

+

LOA File :

-

+

Agreement File :

@@ -171,12 +175,12 @@ } else { %>
-

+

Agreement File :

@@ -189,70 +193,73 @@ WO File :

-
- <% - if (!contDetListWrapper.getContList().get(0).getContEMDFilePath().trim().equals("-")) { - %> -
+
+ <% + if (!contDetListWrapper.getContList().get(0).getContEMDFilePath().trim().equals("-")) { + %> +

EMD File :

- <% - } if (!contDetListWrapper.getContList().get(0).getContSDFilePath().trim().equals("-")) { - %> -
+ <% + } + if (!contDetListWrapper.getContList().get(0).getContSDFilePath().trim().equals("-")) { + %> +

SD File :

- <% - } if (!contDetListWrapper.getContList().get(0).getContASDFilePath().trim().equals("-")) { - %> -
+ <% + } + if (!contDetListWrapper.getContList().get(0).getContASDFilePath().trim().equals("-")) { + %> +

ASD File :

- <% - } - %> + <% + } + %>
<% } %>
-
-

+

+

Remarks : <%=contDetListWrapper.getContList().get(0).getContRmrk()%>

-
+

Bill Details

<% @@ -262,8 +269,7 @@
-
+
<% if (reqSrc.equalsIgnoreCase("exist_cont_det_display_page")) { %> @@ -279,15 +285,14 @@

<%=errorMessage%>

<% - } else if ((billDetListWrapper == null) && (contDetListWrapper != null || - !contDetListWrapper.getContList().isEmpty())) { + } else if ((billDetListWrapper == null) + && (contDetListWrapper != null || !contDetListWrapper.getContList().isEmpty())) { %>
-
+
<% if (reqSrc.equalsIgnoreCase("exist_cont_det_display_page")) { %> @@ -305,23 +310,25 @@

No results found for the given criteria.

<% - } if (billDetListWrapper != null && !billDetListWrapper.getBillDetList().isEmpty()) { - Integer pos = billDetListWrapper.getBillDetList().size() - 1; - String rtgsFile = billDetListWrapper.getBillDetList().get(pos).getRtgsFilePath(); - String sdFile = contDetListWrapper.getContList().get(0).getContSDFilePath(); - Integer amtDueFlag = (int) Math.round(billDetListWrapper.getBillDetList().get(pos).getAmtDue()); - Integer diffInDaysFlag = Integer.parseInt(timeUtils.getExpiryDays(sdf, currentDate, - contDetListWrapper.getContList().get(0).getContEndDate())); - boolean rtgsFileFlag = rtgsFile.trim().equals("-") ? true : false; - boolean sdFileFlag = sdFile.trim().equals("-") ? true : false; + } + if (billDetListWrapper != null && !billDetListWrapper.getBillDetList().isEmpty()) { + Integer pos = billDetListWrapper.getBillDetList().size() - 1; + String rtgsFile = billDetListWrapper.getBillDetList().get(pos).getRtgsFilePath(); + String billFile = billDetListWrapper.getBillDetList().get(pos).getBillFilePath(); + String sdFile = contDetListWrapper.getContList().get(0).getContSDFilePath(); + Integer amtDueFlag = (int) Math.round(billDetListWrapper.getBillDetList().get(pos).getAmtDue()); + Integer diffInDaysFlag = Integer + .parseInt(timeUtils.getExpiryDays(sdf, currentDate, contDetListWrapper.getContList().get(0).getContEndDate())); + boolean rtgsFileFlag = rtgsFile.trim().equals("-") ? true : false; + boolean billFileFlag = billFile.trim().equals("-") ? true : false; + boolean sdFileFlag = sdFile.trim().equals("-") ? true : false; %>
-
+
<% - if (reqSrc.equalsIgnoreCase("exist_cont_det_display_page")) { - if (lockPercent < 100 && lockAmount < thresholdAmt) { + if (reqSrc.equalsIgnoreCase("exist_cont_det_display_page")) { + if (lockPercent < 100 && lockAmount < thresholdAmt) { %> + <% - } else if (lockAmount < thresholdAmt) { + } else if (lockAmount < thresholdAmt) { %> + + + <% + } else if (rtgsFileFlag && billFileFlag) { + %> + <% } else if (rtgsFileFlag) { %> <% - } if ((amtDueFlag <= 0 || diffInDaysFlag < 0) && (sdFileFlag)) { + } + if ((amtDueFlag <= 0 || diffInDaysFlag < 0) && (sdFileFlag)) { %> <% } - } + } %>
<% if (isExtendedFlag == 1) { %> -
-
- @@ -417,111 +444,158 @@ SNA Ret.Amount Total Amount <% - if (contDetListWrapper.getContList().get(0) - .getInvoiceBillTypeName() - .equalsIgnoreCase("PERCENTAGE BASED PAYMENT")) { + if (contDetListWrapper.getContList().get(0).getInvoiceBillTypeName().equalsIgnoreCase("PERCENTAGE BASED PAYMENT")) { %> Percent Applied <% } %> Balance To Be Claimed + Days Passed after Invoice Upload + Days Passed after Payment Upload View Files - <% - double lastClaimedAmountDue = 0.0; - boolean isFirstRow = true; - - for (Bill bill : billDetListWrapper.getBillDetList()) { - boolean isClaimed = bill.getBillStatName().equalsIgnoreCase("CLAIMED"); - double amtDue; - if (isFirstRow) { - // First row logic - lastClaimedAmountDue = isClaimed ? bill.getAmtDue() : bill.getContAmt(); - amtDue = lastClaimedAmountDue; - isFirstRow = false; - } else { - if (isClaimed) { - // For claimed rows, deduct amount paid - lastClaimedAmountDue -= bill.getAmtPaid(); - } - // For unclaimed rows, retain the lastClaimedAmountDue - amtDue = lastClaimedAmountDue; - } - %> - - - <%= bill.getInvoiceBillingPeriod() %> - <%= bill.getInvoiceStartDate() %> - <%= bill.getInvoiceEndDate() %> - <%= bill.getInvoiceBillDate() %> - <%= bill.getBillStatName() %> - ₹ - <% - double currentAmt = bill.getTotAmt() + bill.getAmtDue(); - if (bill.getBillStatName().equals("CLAIMED")) { - out.print(String.format("%,.2f", currentAmt)); - } else { - out.print(String.format("%,.2f", lastClaimedAmountDue)); - } - %> - - ₹ <%= String.format("%,.2f", bill.getAmtExclTax()) %> - ₹ <%= String.format("%,.2f", bill.getCgstAmt()) %> - ₹ <%= String.format("%,.2f", bill.getSgstAmt()) %> - ₹ <%= String.format("%,.2f", bill.getIgstAmt()) %> - ₹ <%= String.format("%,.2f", bill.getItTaxAmt())%> - ₹ <%= String.format("%,.2f", bill.getSnaRetAmt())%> - ₹ <%= String.format("%,.2f", bill.getTotAmt()) %> - <% if (contDetListWrapper.getContList().get(0) - .getInvoiceBillTypeName() - .equalsIgnoreCase("PERCENTAGE BASED PAYMENT")) { %> - <%= bill.getPercentApplied()%> % - <% } %> - ₹ <%= String.format("%,.2f", amtDue) %> - -
- - - <% if (!bill.getRtgsFilePath().equals("-")) { %> - - <% } %> -
- - - <% } %> - + <% + double lastClaimedAmountDue = 0.0; + boolean isFirstRow = true; + + for (Bill bill : billDetListWrapper.getBillDetList()) { + boolean isClaimed = bill.getBillStatName().equalsIgnoreCase("CLAIMED"); + double amtDue; + long diffMillis = 0L; + long diffDays = 0L; + if (isFirstRow) { + // First row logic + lastClaimedAmountDue = isClaimed ? bill.getAmtDue() : bill.getContAmt(); + amtDue = lastClaimedAmountDue; + isFirstRow = false; + } else { + if (isClaimed) { + // For claimed rows, deduct amount paid + lastClaimedAmountDue -= bill.getAmtPaid(); + } + // For unclaimed rows, retain the lastClaimedAmountDue + amtDue = lastClaimedAmountDue; + } + %> + + + <%=bill.getInvoiceBillingPeriod()%> + <%=bill.getInvoiceStartDate()%> + <%=bill.getInvoiceEndDate()%> + <%=bill.getInvoiceBillDate()%> + <%=bill.getBillStatName()%> + ₹ <% + double currentAmt = bill.getTotAmt() + bill.getAmtDue(); + if (bill.getBillStatName().equals("CLAIMED")) { + out.print(String.format("%,.2f", currentAmt)); + } else { + out.print(String.format("%,.2f", lastClaimedAmountDue)); + } + %> + + ₹ <%=String.format("%,.2f", bill.getAmtExclTax())%> + ₹ <%=String.format("%,.2f", bill.getCgstAmt())%> + ₹ <%=String.format("%,.2f", bill.getSgstAmt())%> + ₹ <%=String.format("%,.2f", bill.getIgstAmt())%> + ₹ <%=String.format("%,.2f", bill.getItTaxAmt())%> + ₹ <%=String.format("%,.2f", bill.getSnaRetAmt())%> + ₹ <%=String.format("%,.2f", bill.getTotAmt())%> + <% + if (contDetListWrapper.getContList().get(0).getInvoiceBillTypeName().equalsIgnoreCase("PERCENTAGE BASED PAYMENT")) { + %> + <%=bill.getPercentApplied()%> % + <% + } + %> + ₹ <%=String.format("%,.2f", amtDue)%> + <% + if (bill.getBillFilePath().equals("-") && !bill.getInvoiceFilePath().equals("-")) { + Date createdDate = sdf.parse(bill.getCreatedDate()); // e.g. 15-05-2026 + diffMillis = currentDate.getTime() - createdDate.getTime(); + diffDays = diffMillis / (1000 * 60 * 60 * 24); + //out.println(diffDays); + out.println("" + diffDays + " Days"); + } else if (!bill.getBillFilePath().equals("-") && !bill.getInvoiceFilePath().equals("-")) { + out.println("Invoice and Payment Files are uploaded"); + } + diffMillis = 0L; + diffDays = 0l; + %> + <% + if (!bill.getInvoiceFilePath().equals("-") && !bill.getBillFilePath().equals("-") + && bill.getRtgsFilePath().equals("-")) { + Date updatedDate = sdf.parse(bill.getUpdatedDate()); // e.g. 17-05-2026 + diffMillis = currentDate.getTime() - updatedDate.getTime(); + diffDays = diffMillis / (1000 * 60 * 60 * 24); + //out.println(diffDays); + out.println("" + diffDays + " Days"); + } else if (!bill.getInvoiceFilePath().equals("-") && !bill.getBillFilePath().equals("-") + && !bill.getRtgsFilePath().equals("-")) { + out.println("Invoice, Payment and RTGS Files are uploaded"); + } else if (!bill.getInvoiceFilePath().equals("-") && bill.getBillFilePath().equals("-") + && bill.getRtgsFilePath().equals("-")) { + out.println("Only Invoice File Uploaded"); + } + diffMillis = 0L; + diffDays = 0l; + %> + + +
+ <% if (!bill.getBillFilePath().equals("-")) { %> + + <% } %> + + <% + if (!bill.getRtgsFilePath().equals("-")) { + %> + + <% + } + %> +
+ + + <% + } + %> +
<%@include file="export_pdf.html"%> - <% } %> + <% + } + %>  
- - - - "> + + + ">
- <%@include file="pdf_modal.html" %> + <%@include file="pdf_modal.html"%> <%@include file="includes/footer.jsp"%> diff --git a/src/main/webapp/exist_ext_bill_det_display.jsp b/src/main/webapp/exist_ext_bill_det_display.jsp index 3ff2366..7bf3c5a 100644 --- a/src/main/webapp/exist_ext_bill_det_display.jsp +++ b/src/main/webapp/exist_ext_bill_det_display.jsp @@ -278,11 +278,13 @@ if (reqSrc.equalsIgnoreCase("exist_cont_det_display_page")) { } if (billDetListWrapper != null && !billDetListWrapper.getBillDetList().isEmpty()) { Integer pos = billDetListWrapper.getBillDetList().size() - 1; String rtgsFile = billDetListWrapper.getBillDetList().get(pos).getRtgsFilePath(); + String billFile = billDetListWrapper.getBillDetList().get(pos).getBillFilePath(); String sdFile = contDetListWrapper.getContList().get(0).getContSDFilePath(); Integer amtDueFlag = (int) Math.round(billDetListWrapper.getBillDetList().get(pos).getAmtDue()); Integer diffInDaysFlag = Integer.parseInt(timeUtils.getExpiryDays(sdf, currentDate, contDetListWrapper.getContList().get(0).getContEndDate())); boolean rtgsFileFlag = rtgsFile.trim().equals("-") ? true : false; + boolean billFileFlag = billFile.trim().equals("-") ? true : false; boolean sdFileFlag = sdFile.trim().equals("-") ? true : false; %> @@ -308,9 +310,13 @@ if (reqSrc.equalsIgnoreCase("exist_cont_det_display_page")) { name="new_ext_bill_det_btn" onclick="redirectToAddNewExtBillPage()"> Add Ext.Bill + <% } else if (lockAmount < thresholdAmt) { @@ -319,16 +325,31 @@ if (reqSrc.equalsIgnoreCase("exist_cont_det_display_page")) { name="new_bill_det_btn" onclick="redirectToAddNewExtBillPage()"> Add Ext.Bill + + + <% + } else if (rtgsFileFlag && billFileFlag) { + %> + <% } else if (rtgsFileFlag) { %> - <% } if ((amtDueFlag <= 0 || diffInDaysFlag < 0) && (sdFileFlag)) { @@ -382,6 +403,8 @@ if (reqSrc.equalsIgnoreCase("exist_cont_det_display_page")) { } %> Balance To Be Claimed + Days Passed after Invoice Upload + Days Passed after Payment Upload View Files @@ -393,6 +416,8 @@ if (reqSrc.equalsIgnoreCase("exist_cont_det_display_page")) { for (Bill bill : billDetListWrapper.getBillDetList()) { boolean isClaimed = bill.getBillStatName().equalsIgnoreCase("CLAIMED"); double amtDue; + long diffMillis = 0L; + long diffDays = 0L; if (isFirstRow) { // First row logic lastClaimedAmountDue = isClaimed ? bill.getAmtDue() : bill.getContAmt(); @@ -436,13 +461,47 @@ if (reqSrc.equalsIgnoreCase("exist_cont_det_display_page")) { .equalsIgnoreCase("PERCENTAGE BASED PAYMENT")) { %> <%= bill.getPercentApplied()%> % <% } %> - ₹ <%= String.format("%,.2f", amtDue) %> + ₹ <%= String.format("%,.2f", amtDue) %> + <% + if (bill.getBillFilePath().equals("-") && !bill.getInvoiceFilePath().equals("-")) { + Date createdDate = sdf.parse(bill.getCreatedDate()); // e.g. 15-05-2026 + diffMillis = currentDate.getTime() - createdDate.getTime(); + diffDays = diffMillis / (1000 * 60 * 60 * 24); + //out.println(diffDays); + out.println("" + diffDays + " Days"); + } else if (!bill.getBillFilePath().equals("-") && !bill.getInvoiceFilePath().equals("-")) { + out.println("Invoice and Payment Files are uploaded"); + } + diffMillis = 0L; + diffDays = 0l; + %> + <% + if (!bill.getInvoiceFilePath().equals("-") && !bill.getBillFilePath().equals("-") + && bill.getRtgsFilePath().equals("-")) { + Date updatedDate = sdf.parse(bill.getUpdatedDate()); // e.g. 17-05-2026 + diffMillis = currentDate.getTime() - updatedDate.getTime(); + diffDays = diffMillis / (1000 * 60 * 60 * 24); + //out.println(diffDays); + out.println("" + diffDays + " Days"); + } else if (!bill.getInvoiceFilePath().equals("-") && !bill.getBillFilePath().equals("-") + && !bill.getRtgsFilePath().equals("-")) { + out.println("Invoice, Payment and RTGS Files are uploaded"); + } else if (!bill.getInvoiceFilePath().equals("-") && bill.getBillFilePath().equals("-") + && bill.getRtgsFilePath().equals("-")) { + out.println("Only Invoice File Uploaded"); + } + diffMillis = 0L; + diffDays = 0l; + %> +
+ <% if (!bill.getBillFilePath().equals("-")) { %> + <% } %>
-
-
- - -
-
<% } else { %>
@@ -322,11 +315,6 @@ for (BillStat billStat : billStatDetList) {
-
- - -
<% } %>
diff --git a/src/main/webapp/js/exist-bill-det-funcs-display.js b/src/main/webapp/js/exist-bill-det-funcs-display.js index 6f3e265..9e9e35d 100644 --- a/src/main/webapp/js/exist-bill-det-funcs-display.js +++ b/src/main/webapp/js/exist-bill-det-funcs-display.js @@ -31,6 +31,46 @@ function redirectToAddNewBillPage() { form.submit(); } +function redirectToUpdateBillPage() { + // Retrieve the cont_num and vend_id from the data attribute + var vendId = document.getElementById("hid_vend_id").value; + var contNum = document.getElementById("hid_cont_num").value; + var vendName = document.getElementById("hid_vend_name").value; + + // Create a form element + var form = document.createElement("form"); + form.method = "POST"; + form.action = "upd_bill_det_entry.jsp"; + + // Set the form's display style to none + form.style.display = "none"; + + // Create an input element for cont_num and vend_id + var input = document.createElement("input"); + input.type = "hidden"; + input.name = "vend_id"; + input.value = vendId; + + var input2 = document.createElement("input"); + input2.type = "hidden"; + input2.name = "cont_num"; + input2.value = contNum; + + var input3 = document.createElement("input"); + input3.type = "hidden"; + input3.name = "vend_name"; + input3.value = vendName; + + // Append the input to the form + form.appendChild(input); + form.appendChild(input2); + form.appendChild(input3); + + // Append the form to the body and submit it + document.body.appendChild(form); + form.submit(); +} + function redirectToModifyBillPage() { // Retrieve the cont_num and vend_id from the data attribute var vendId = document.getElementById("hid_vend_id").value; diff --git a/src/main/webapp/js/exist-ext-bill-det-funcs-display.js b/src/main/webapp/js/exist-ext-bill-det-funcs-display.js index 8d69017..980c36e 100644 --- a/src/main/webapp/js/exist-ext-bill-det-funcs-display.js +++ b/src/main/webapp/js/exist-ext-bill-det-funcs-display.js @@ -38,6 +38,46 @@ function redirectToAddNewExtBillPage() { form.submit(); } +function redirectToUpdateExtBillPage() { + // Retrieve the cont_num and vend_id from the data attribute + var vendId = document.getElementById("hid_ext_vend_id").value; + var contNum = document.getElementById('hid_cont_num').value; + var vendName = document.getElementById("hid_ext_vend_name").value; + + // Create a form element + var form = document.createElement("form"); + form.method = "POST"; + form.action = "upd_ext_bill_det_entry.jsp"; + + // Set the form's display style to none + form.style.display = "none"; + + // Create an input element for cont_num and vend_id + var input = document.createElement("input"); + input.type = "hidden"; + input.name = "vend_id"; + input.value = vendId; + + var input2 = document.createElement("input"); + input2.type = "hidden"; + input2.name = "cont_num"; + input2.value = contNum; + + var input3 = document.createElement("input"); + input3.type = "hidden"; + input3.name = "vend_name"; + input3.value = vendName; + + // Append the input to the form + form.appendChild(input); + form.appendChild(input2); + form.appendChild(input3); + + // Append the form to the body and submit it + document.body.appendChild(form); + form.submit(); +} + function redirectToModifyExtBillPage() { // Retrieve the cont_num and vend_id from the data attribute var vendId = document.getElementById("hid_ext_vend_id").value; diff --git a/src/main/webapp/new_bill_det_entry.jsp b/src/main/webapp/new_bill_det_entry.jsp index 2229d2c..498dcef 100644 --- a/src/main/webapp/new_bill_det_entry.jsp +++ b/src/main/webapp/new_bill_det_entry.jsp @@ -296,12 +296,6 @@ required>
-
-
- - -
-
<% } else { %>
@@ -326,12 +320,6 @@ class="form-control" name="invoice_file" accept=".pdf" required>
-
- - -
<% } %>
diff --git a/src/main/webapp/upd_bill_det_entry.jsp b/src/main/webapp/upd_bill_det_entry.jsp new file mode 100644 index 0000000..82ba1a7 --- /dev/null +++ b/src/main/webapp/upd_bill_det_entry.jsp @@ -0,0 +1,161 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> +<%@ page language="java" import="com.cont_mgmt.dto.User, java.util.*"%> +<%@ page language="java" import="com.cont_mgmt.dto.Bill"%> +<%@ page language="java" + import="com.cont_mgmt.wrapper.ContDetListWrapper"%> +<%@ page language="java" + import="com.cont_mgmt.wrapper.BillStatDetListWrapper"%> +<%@ page language="java" import="com.cont_mgmt.dto.Contract"%> +<%@ page language="java" + import="com.cont_mgmt.service.ExistContDetService"%> +<%@ page language="java" + import="com.cont_mgmt.service.ExistBillDetService"%> +<%@page language ="java" + import="com.cont_mgmt.wrapper.BillDetListWrapper"%> +<% +// Check if the user is logged in by checking if the user object is not null +User user = (User) session.getAttribute("user"); +if (user == null || user.getUserName().equals("")) { + // If not logged in, redirect to logout.jsp + response.sendRedirect("logout.jsp"); + return; // Stop further execution of the page +} + +// Retrieve values passed via POST method +String reqContNum = request.getParameter("cont_num"); +String reqVendId = request.getParameter("vend_id"); +String vendName = request.getParameter("vend_name"); + +// Call the ExistContDetService and ExistBillDetService +ExistContDetService existContDetService = new ExistContDetService(); +ExistBillDetService existBillDetService = new ExistBillDetService(); + +// Fetch ContDetList +ContDetListWrapper contDetListWrapper = new ContDetListWrapper(existContDetService.getContDet(reqVendId, reqContNum)); +List contDetList = contDetListWrapper != null ? contDetListWrapper.getContList() : new ArrayList(); + +// Fetch BillDetList +BillDetListWrapper billDetListWrapper = new BillDetListWrapper(existBillDetService.getBillDet(reqContNum)); +List billDetList = billDetListWrapper != null ? billDetListWrapper.getBillDetList() : new ArrayList(); + +//Populate the Invoice Billing Period based on invoice bill type name +String invoiceBillingPeriodOptions = ""; +String invoiceBillingPeriod = ""; + +if (contDetList.isEmpty()) { + throw new IllegalArgumentException("No contract details found."); +} + +String invoiceBillTypeName = contDetList.get(0).getInvoiceBillTypeName(); + +//Determine prefix +if ("QUARTERLY".equals(invoiceBillTypeName)) { + invoiceBillingPeriod = "Q"; +} else if ("MONTHLY".equals(invoiceBillTypeName)) { + invoiceBillingPeriod = "M"; +} else if ("HALF YEARLY".equals(invoiceBillTypeName)) { + invoiceBillingPeriod = "H"; +} else if ("PERCENTAGE BASED PAYMENT".equals(invoiceBillTypeName)) { + invoiceBillingPeriod = "P"; +} else if ("YEARLY".equals(invoiceBillTypeName)) { + invoiceBillingPeriod = "Y"; +} else if ("ONE SHOT PAYMENT".equals(invoiceBillTypeName)) { + invoiceBillingPeriod = "S"; +} else if ("OTHERS".equals(invoiceBillTypeName)) { + invoiceBillingPeriod = "O"; +} else { + throw new IllegalArgumentException("Unsupported invoice bill type: " + invoiceBillTypeName); +} + +//Use TreeMap to sort by the *starting* number of the suffix +Map sortedPeriods = new TreeMap(); + +for (Bill bill : billDetList) { + String period = bill.getInvoiceBillingPeriod(); // e.g., Q1, Q1-Q4 + + if (period.startsWith(invoiceBillingPeriod)) { + String suffix = period.substring(invoiceBillingPeriod.length()); + try { + int sortKey; + if (suffix.contains("-")) { + String startPart = suffix.split("-")[0]; + sortKey = Integer.parseInt(startPart); + } else { + sortKey = Integer.parseInt(suffix); + } + sortedPeriods.put(sortKey, period); + } catch (NumberFormatException e) { + // Skip invalid suffix + } + } +} + +//Build "; +} +%> + + + + + +Contract Management System + +<%@include file="includes/header.jsp"%> + + + <%@include file="includes/exist_navbar.jsp"%> +
+
+
+ +
+

Upload Payment File

+
+
+
+ + + + +
+
+
+
+ + +
+
+ + + +
+
+
+ +
+
+
+
+ <%@include file="includes/footer.jsp"%> + + + \ No newline at end of file diff --git a/src/main/webapp/upd_ext_bill_det_entry.jsp b/src/main/webapp/upd_ext_bill_det_entry.jsp new file mode 100644 index 0000000..e979630 --- /dev/null +++ b/src/main/webapp/upd_ext_bill_det_entry.jsp @@ -0,0 +1,161 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> +<%@ page language="java" import="com.cont_mgmt.dto.User, java.util.*"%> +<%@ page language="java" import="com.cont_mgmt.dto.Bill"%> +<%@ page language="java" + import="com.cont_mgmt.wrapper.ContDetListWrapper"%> +<%@ page language="java" + import="com.cont_mgmt.wrapper.BillStatDetListWrapper"%> +<%@ page language="java" import="com.cont_mgmt.dto.Contract"%> +<%@ page language="java" + import="com.cont_mgmt.service.ExistExtContDetService"%> +<%@ page language="java" + import="com.cont_mgmt.service.ExistExtBillDetService"%> +<%@page language ="java" + import="com.cont_mgmt.wrapper.BillDetListWrapper"%> +<% +//Check if the user is logged in by checking if the user object is not null +User user = (User) session.getAttribute("user"); +if (user == null || user.getUserName().equals("")) { + // If not logged in, redirect to logout.jsp + response.sendRedirect("logout.jsp"); + return; // Stop further execution of the page +} + +//Retrieve values passed via POST method +String reqContNum = request.getParameter("cont_num"); +String reqVendId = request.getParameter("vend_id"); +String vendName = request.getParameter("vend_name"); + +//Call the ExistExtContDetService and ExistExtBillDetService +ExistExtContDetService existExtContDetService = new ExistExtContDetService(); +ExistExtBillDetService existExtBillDetService = new ExistExtBillDetService(); + +//Fetch ContDetList +ContDetListWrapper contDetListWrapper = new ContDetListWrapper(existExtContDetService.getExtContDet(reqVendId, reqContNum)); +List contDetList = contDetListWrapper != null ? contDetListWrapper.getContList() : new ArrayList(); + +//Fetch BillDetList +BillDetListWrapper billDetListWrapper = new BillDetListWrapper(existExtBillDetService.getExtBillDet(reqContNum)); +List billDetList = billDetListWrapper != null ? billDetListWrapper.getBillDetList() : new ArrayList(); + +//Populate the Invoice Billing Period based on invoice bill type name +String invoiceBillingPeriodOptions = ""; +String invoiceBillingPeriod = ""; + +if (contDetList.isEmpty()) { +throw new IllegalArgumentException("No contract details found."); +} + +String invoiceBillTypeName = contDetList.get(0).getInvoiceBillTypeName(); + +//Determine prefix +if ("QUARTERLY".equals(invoiceBillTypeName)) { +invoiceBillingPeriod = "Q"; +} else if ("MONTHLY".equals(invoiceBillTypeName)) { +invoiceBillingPeriod = "M"; +} else if ("HALF YEARLY".equals(invoiceBillTypeName)) { +invoiceBillingPeriod = "H"; +} else if ("PERCENTAGE BASED PAYMENT".equals(invoiceBillTypeName)) { +invoiceBillingPeriod = "P"; +} else if ("YEARLY".equals(invoiceBillTypeName)) { +invoiceBillingPeriod = "Y"; +} else if ("ONE SHOT PAYMENT".equals(invoiceBillTypeName)) { +invoiceBillingPeriod = "S"; +} else if ("OTHERS".equals(invoiceBillTypeName)) { +invoiceBillingPeriod = "O"; +} else { +throw new IllegalArgumentException("Unsupported invoice bill type: " + invoiceBillTypeName); +} + +//Use TreeMap to sort by the *starting* number of the suffix +Map sortedPeriods = new TreeMap(); + +for (Bill bill : billDetList) { +String period = bill.getInvoiceBillingPeriod(); // e.g., Q1, Q1-Q4 + +if (period.startsWith(invoiceBillingPeriod)) { + String suffix = period.substring(invoiceBillingPeriod.length()); + try { + int sortKey; + if (suffix.contains("-")) { + String startPart = suffix.split("-")[0]; + sortKey = Integer.parseInt(startPart); + } else { + sortKey = Integer.parseInt(suffix); + } + sortedPeriods.put(sortKey, period); + } catch (NumberFormatException e) { + // Skip invalid suffix + } +} +} + +//Build "; +} +%> + + + + + +Contract Management System + +<%@include file="includes/header.jsp"%> + + + <%@include file="includes/exist_navbar.jsp"%> +
+
+
+ +
+

Modify Extension Bill Status

+
+
+
+ + + + +
+
+
+
+ + +
+
+ + + +
+
+
+ +
+
+
+
+ <%@include file="includes/footer.jsp"%> + + + \ No newline at end of file