14 Commits

250 changed files with 9536 additions and 8816 deletions

4
.gitignore vendored
View File

@@ -1,5 +1,4 @@
/target/ /target/
/config/
!.mvn/wrapper/maven-wrapper.jar !.mvn/wrapper/maven-wrapper.jar
### STS ### ### STS ###
@@ -30,7 +29,8 @@
/.nb-gradle/ /.nb-gradle/
/cygnus-onprem-app/target /cygnus-onprem-app/target
/cygnus-cloud-client/target /cygnus-cloud-client/target
/cygnus-installer/src/test
/cygnus-cloud-service/target /cygnus-cloud-service/target
/cygnus-installer/src/target /cygnus-installer/src/target
/cygnus-installer/target /cygnus-installer/target
/cygnus-onprem-db/target
/cygnus-lib/target

3
.vscode/launch.json vendored
View File

@@ -61,6 +61,7 @@
"REDIS_PASSWORD": "M@triXR3d1s@6202", "REDIS_PASSWORD": "M@triXR3d1s@6202",
"REDIS_DATABASE": "1", "REDIS_DATABASE": "1",
"REDIS_SSL": "false", "REDIS_SSL": "false",
"CYGNUS_QUERY_CACHE_ENABLED": "false",
"CYGNUS_CLOUD_BASE_URL": "http://localhost:8090", "CYGNUS_CLOUD_BASE_URL": "http://localhost:8090",
"CYGNUS_TOKEN_URL": "http://localhost:8090/oauth2/token", "CYGNUS_TOKEN_URL": "http://localhost:8090/oauth2/token",
"CYGNUS_CLIENT_ID": "matrix", "CYGNUS_CLIENT_ID": "matrix",
@@ -68,6 +69,8 @@
"CYGNUS_CLIENT_ASSERTION": "file:${workspaceFolder}/config/clients/matrix/matrix-matrix-delhi-cygnus-01-assertion.jwt", "CYGNUS_CLIENT_ASSERTION": "file:${workspaceFolder}/config/clients/matrix/matrix-matrix-delhi-cygnus-01-assertion.jwt",
"CYGNUS_LOGIN_KEY_ID": "cygnus-login-2026-01", "CYGNUS_LOGIN_KEY_ID": "cygnus-login-2026-01",
"CYGNUS_LOGIN_PUBLIC_KEY": "file:${workspaceFolder}/config/keys/login-public.pem", "CYGNUS_LOGIN_PUBLIC_KEY": "file:${workspaceFolder}/config/keys/login-public.pem",
"CYGNUS_PAYLOAD_PRIVATE_KEY": "file:${workspaceFolder}/config/keys/case-save-private.pem",
"CYGNUS_PAYLOAD_PUBLIC_KEY": "file:${workspaceFolder}/config/keys/case-save-public.pem",
"CYGNUS_CLOUD_REQUEST_TIMEOUT": "PT10S", "CYGNUS_CLOUD_REQUEST_TIMEOUT": "PT10S",
"CYGNUS_TOKEN_REFRESH_SKEW": "PT30S" "CYGNUS_TOKEN_REFRESH_SKEW": "PT30S"
}, },

View File

@@ -0,0 +1 @@
eyJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiUlNBLU9BRVAtMjU2In0.rf8bViJPb5bRJHFamVoCftE0TLA1Gz7JyGnfcjtKEx3KiUL4SSbgYSUQlsKhCt8VJMWE--UpgbkM0Bv3pFVsMF_uh693MhFstEy_A6S3MODjoUV_bMLa_Zr1yH2Jwzud4LSyw-ctJ7G-vO8S_I6YML0HV5kNbobdFmMfXFLGKssVmM_Km0m57ZgSjj3zRii0cKpmdwwSbWoJC2y519TpKhIja0OZAoN1oB3IVKvERlFYCQYUpQmcRkzULGrlSoLIm9iqbRX4qMGhGISwVS6JdVtn9WjpSjF3xkUxN_QsVuYKYFL_kEKWSNepIcfoip7Ag9Qw_S1RZA_KO908MgrzGRbs2UIpxY9sAM8yZ-k1NTk0swV836s5pdDIP3PHovcd6iR8mqWBPt7mq7ES98vNeCZxqPLB_b1JuNfKsbLPdRIvEk2DTjZHeEi-yA1yl5uMi_1f4la6mgy65u_jLL_Ow28uZtj-8yQ3dR4lF3K7tkxQaB4LQiH5nl6lXEndpoPe.Cpu6VoHf2ptCue_L.uH-Pq1WZN-x_c71Iyx8X1QJa1JZRp9sYta9iUOmQ4W8x4Qh2wYm-_tpr8FEw56MLvIb8IH_gHVVLAJgXTmCZhyo26vJlPCtnMMPYFDrPRzTJv9Ewg7RMpsAh_kXFFK4UJ6Tgt_r7Tg_bnVOTKXodUjl3wVdMowZRX_ua-gKwLU-2LDWdqIRmuFDSOkMb1sFBZLPyjWHg_rThs-RwVa4YJdDi74s-L0WX0xRPXzeovu1-xvOgZ0xYf0ScbsFQgvK-JwAxOWsB1WKeHRqnnx5-apK6qtzhpiJ30c7ukPlrg2nieuJvkXOVuKBKXLVRLSViOH4HU76DD96btDUA0Cg2kEURpepucX0VWPyB7K3xb9v1AT42TUkW9wZzdmIs9saRo-ItuWzlCezvapLIsbqmYCs_rW2J3KgqXrUyy2mptn32sqaqQZnlNVu4wwboPCCrbl2MG5CYlYKrwaOHNg611j8sCDkIptm_UmPFnOnzvQYwURuDSgzswTIV5bTd_58yxag2yWwiMdGLMDbxxSUPQ6a4EbuDkqwmGBTSLiG7SaSFchSg6o9EflqK6k-u_rlixCxmfg1A6sa7nloW17dOxDzGKtmn9lBoaskL97nNrhP6ptftak7j4TIZulz1FUOSVoR8kXK8RNQMj-b6rg_MdSO9Ecq5hZsza1SzjkzKZvV-tpP6Wl6-rszCH6g3DIQAWN5aWdUkwuya1HqDDyVPbUOVQPsp4nhVC24QmnlbcqFwQdoCrikYKyX3Snc0H6_K4z9c6nURAdj6THwHmA9BfHtJniI_rEIvkmBk3yndi-H5eAjtxIoYSFQrSTWEFhgvk6bAKoR_xb_cHgzKOxYLBiO_FifkjkFDOlkVBuYnZEp3oRePDKgMDfL5Oxjuie4u-8yrH52Cd32yQzbvGplaXLLeEDf3i71dcz4LkO5DknScWG3G_SbKBpjlse-GKe3XYqRXeRIYLpyiX1MXph0b-Q.dvHU75ZR8wJFxoSacfkthw

View File

@@ -0,0 +1,40 @@
-----BEGIN PRIVATE KEY-----
MIIG/QIBADANBgkqhkiG9w0BAQEFAASCBucwggbjAgEAAoIBgQCWgm0Yw4txM1Z7
UiB2tPy5i5wjVWzTZaPJQ9ns+jnWILrtCYZ0bQifOUElh2Ri1PPx51r6oCtkw0YH
QKEWz/vEo8oBKQy9Vyubghhu2HQMQiRdYAvthexZ3yp1L4qyfG4LpOq+4D1er89f
hGa0CrhuXT/VPYdmMmznf9vveXk16Fyx5lTXb3D7mUGoPBbnGH7VWdc1tz3rNrsE
V9BKd+D1bBpZKmjxjntcBOdXuzjrJPyA0ozb0g0clezhoitD21wudNsPP2eEZx42
B5zcCE7NzhPII+6BSIb1YPh6GxCv7sKnfRGpPmX1k++gFOkB0ctnWv+MH6pjr5aR
joSw4lbbGD1tRigdeMyIV2Lw4tcLg1MA9Sq4U5ogx+PEZphBzw2gMwWKrep1NaLa
d0I6jFfIXFhE/mliz+gDjpQAdmwIdqymO+X2N9H9psIAsG2wUvCksD2qoHCzmiNc
Uf/9ShcTt1ecnOIIVA3Ik6Fe0iFtCG1vfAlzpZIu0OtGkW1om50CAwEAAQKCAYAJ
9mQmSXtHaPCGhS8k7GH2HimdpR/o9kdbISShrQZ7B/uXiRPfTQBPGckYJNgeOp5T
Gs9I26VDrDFMdZi0G9w8beMHJKJ1Pfni9z+KxsUXsqEZlSv08vJsGHuE+jqiCd52
4tmu/MTTKav+VJM/w53loEKDaOk3eIsA39O9DDtbuB+6ntZq1DOUU9amviN99H8g
vCukoJZ2pU7HwNBGvZykYh10XXxI0PeVZbWydvATkIUuOcGdI1A+3iWp4cQfX7um
ScbTrQT2NULTJmotFVm0x+uVp5mnO+Hs7PaRhnfTI7sN/b5jm3FGXzGACW2dRsYh
0I9ogMHlvJi8BJIqaDyhuq2R9QKJLSP1R7mAOlaLSob7rfh3C0VRFBgCYWszDFCH
BFCtHnMIhNhIMpZdNmmD6a++YjBLL7KrenTCCjWatiNix9r13y1ZviRT2Q4sczYI
JBSJ0cOwW+8/d7Xad+RBsEiSpo+VfBJR5Pe3np/fSwvzWYTHnX1pN3kdQR7hpjkC
gcEAzvm+m1G4YbKdP+azVPlz76osGdi52QZuYLWP20CCIzCq7vIoxwKNg1mgO7ZW
WKSWCSDjI55TdJQzfm6Ax8gqFC5Q+nBTNvuFoCSZK7T8+jcEcAtdc8tR3Hg4KD0L
EsFup2MTJXQm579CosUCs1zLVGNf2u8My1Z8qi23RIiViWcwXIwBOnYPcKorD68a
ENkJBQ7YQ9h+mniwN7UTR7cAr3/nGaOsU6VjqHjzit1qakkS/lBZ2il0iz2B+Cbm
D/hPAoHBALoox9wntzT8cGnW8v/Ty4Q51h60DeUv+DGXumJc5Y8C5AqkYYucsYIi
PX9Xv3gsLl6ogwdcBP6KEXtiN6qkcOFkegsOOCZcZgqQGenG4w86d/sy+EmfgyQ+
I2EQjfuBE4D3JlxOpUfVdUhnn0Jyx+tYPPvTt9z+FwI1S+LSH2HsTssW0/1fIrAw
R/ttjk+59wFZmINTXUJYHo2ZqPONu8WOhx4cmp2v+XD+nI+3Xve3fXj94ki9FoQC
sOfWR3LGUwKBwDTgewClPQzAnAniP3h7DlJxUDj+NGSsjvBoEit6bITe/xxyg1Zs
YYjoEdaPe7nDuoz0ePL1lO6Ymhs30fC4Q3/KYWfJ4IiQc4/5KaSP5X1rJtgVHzfg
/rXrhLVK+xQ8lK9w0UhlRzc3lqeM22bFUzDo/mkpX0RngQvdCBAbMNDcqu9J2Vp9
JO6smrm0C124hORk6X1Txuxh3usseJN+vk8Xxwu20+S+wRoeZGHatUAYESEll/7z
TlHwUc766RW1YwKBwQCOy79a+cAHzefw1+f4Ix9GoxLC5HyQJDau2+MllnqkM6R3
IVaNwDlNSDSCHO4LIWDETWCM4aIXGhOE4Hcw1wiba/ZNyq95hYDkc1rdPylmwgPM
1XEtEEWJJH0A9LDkjkNGts5fGhigPHXFf27jiqYduca1qNatlt5RXE6Eg4d9FsXt
9OnRvgseuTpN++Cg+VYmW/KoMeckf/GXzpmRkVPKm6S7jVdww86ERVoUx6T6QW7m
w2CzSRAfXO0UOQL/YG8CgcAJzA4TQAOUiGDW3Qb6qU9v1pMBp7yC/yMkk0cjIhGP
V4cL7NgGqX/m4fX95fl8sFRM1u5c4F1ll/tbKZxDzfclGTf9RxkrJahgGSJW5hko
RjcZrzfo9Al3qcSMcWE4+7kN3Gr9O0iZ89r97vB76N0GjVsn3CZSJm+mnxbOSwru
MouM1CVc2/nGs8mUSDj8SnGpv778ONQVypx8tRubIRGsvkNFtiJ+Q2hjjfsMDfwm
M/D4ZjXsfrW//BMF6+w2Bh4=
-----END PRIVATE KEY-----

View File

@@ -0,0 +1,11 @@
-----BEGIN PUBLIC KEY-----
MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAloJtGMOLcTNWe1IgdrT8
uYucI1Vs02WjyUPZ7Po51iC67QmGdG0InzlBJYdkYtTz8eda+qArZMNGB0ChFs/7
xKPKASkMvVcrm4IYbth0DEIkXWAL7YXsWd8qdS+KsnxuC6TqvuA9Xq/PX4RmtAq4
bl0/1T2HZjJs53/b73l5NehcseZU129w+5lBqDwW5xh+1VnXNbc96za7BFfQSnfg
9WwaWSpo8Y57XATnV7s46yT8gNKM29INHJXs4aIrQ9tcLnTbDz9nhGceNgec3AhO
zc4TyCPugUiG9WD4ehsQr+7Cp30RqT5l9ZPvoBTpAdHLZ1r/jB+qY6+WkY6EsOJW
2xg9bUYoHXjMiFdi8OLXC4NTAPUquFOaIMfjxGaYQc8NoDMFiq3qdTWi2ndCOoxX
yFxYRP5pYs/oA46UAHZsCHaspjvl9jfR/abCALBtsFLwpLA9qqBws5ojXFH//UoX
E7dXnJziCFQNyJOhXtIhbQhtb3wJc6WSLtDrRpFtaJudAgMBAAE=
-----END PUBLIC KEY-----

View File

@@ -0,0 +1,40 @@
-----BEGIN PRIVATE KEY-----
MIIG/QIBADANBgkqhkiG9w0BAQEFAASCBucwggbjAgEAAoIBgQC/J+4zrtDESicS
8LZV/bU/5/GjjTpngL7M3PEf/y0I+Ewf3hKSW3XRZepJ9AV9luEk9VihkvybQ0Mj
ujMjuUgw8CEBV9wU7M7pWqkUavMyAyqadYuvFGwvfLWuMHcucTzhb4BNxL+aWTqv
BsJ+tKhFGVjeLv2iXyHfqOGFodPb+IYY7e6+oBArffiVAQ6Wqv5gvgqSv8Yw6bzp
sTg9xlImAJMCeUJALtNS7qMZa6hyYjWc3Atc+NC9eBz4cq0kSoUZ/5rR+3L18uBp
HbIjOUz2LfWveSN4rOpV7YN4tNu213xtVZTj8qYaDysRyG3ALzBHiKe4NSPAncXC
Z0Gu8OkZrUAzzKh91uzvcu/YSCS9Eu+WBpaJfY/op2UoYd5oOP2/RhYluIUzitz3
LmEPeUba6eGm8//j04VdUFPb+mbzoubFKXCy6fcbYso05cjrjqOF1UdCQhVwGIdM
dhA573/EurHdmIQzvCK1vO4mfEiRuP/w4WAf5YNSZNBVe1vPu90CAwEAAQKCAYAY
tKo4c05npDbXH5XNWOBRXWKxcvoasPzYAPFII6SYLXE3SC4pzNjWIsAsZTXFdNft
/SjCnzr3PTMC/diItDR0oMB/SjH3YWDfr5g9O5JpgxfBRVJzoyXVYF6h4AEzVy7Z
ax4Pzw89fW1UfEDse+Bop91AwB2HXBjGba8SJKd7XWxFchECgbD9UgdsCKowRnLg
oYc/zrnojfkc0gsVDtoEr9vQPMhXf8XPyOh7C1tGx1MrDhSI5F6kMk86PCYNE/VV
Oiw2GdyvZjZnQ3IVFbCL9aT2xPVQfbHQ4DZrf003GtuuqwKi/jumNOTpzZUd8dy4
ruZRik1pyeYklTyxt/FeSof/qJqyG/pLttjWtiWfonRk3Uy+FuHUZ+LcTiTUcN+i
Hl35oUq56a9o71avs78QTnQOMiK8Wi7AGUetL7qdPrbnBEyP5gGkLzi0DKUBDnKI
jBeEcdOBudum1Dso3vh7zss6T5hGnRIfcNxsFqUIk36niX368oML/YRKBMl6U7EC
gcEA5tv5wnrrfFEQDs2+jQoweolchQfTABAMtFpsiQQp50fbrTRccIy4/0EreahD
u97JQ1U33vG8p+MnS2uPNqMrt9E0/lCdOp/h0wJqRSso1mgnia22ySvY++FpL1Ey
HXbMs3jOHW1x0/D8qKLSzNQAjXoBkM+Gath6jtVdn4c+4s/Qb/orh88WB8twKpXB
qQozjt79xaBtgwUlzXhIKPLFE7dkGxIOwsXeNX2NC/vomVz6aHozEzQduGE2nk7d
uk4NAoHBANP5FX7fiROdscCV3OsM/hqa2JPAP3MHWUXn8rMZxHgRzoILhqdfC8p2
QZTFXii0Jloda0lpRipY7ICRUUHzQ2iWWOw4R6haO+Dbdz1LUk0jJTeotqp00k5h
h1W80lNduBeYuFHwj5P3QcBGpILXmox3q2rrxRWbxG4sJVzvcPcluo9UFHcEQXnX
WmzM3VdnN1Vt3TXWev1klGyoJM3J/v7cLa6dBJaWVM5gKSdnpBB99J8x0tOxGjWO
mNxS2oyBEQKBwDo20j5WXLdWgaQaAajzHtJnfOsW1AA6C9oWyzOp1x85IY4FnCHN
eoDzYBEnex0OytWt0Y7oilgTkb8U+mIet1F88c4Haf50fq+E9mNGxN98GCxBn8wO
wIKTjsCdyvNfF7NSDTeid4eoRy4HEP0RoKoMUATCL/UVbaJC737gzdzH5pm2DfAL
KlUA2eIDLXiA2At486k4ESVu0N+FKz0YKtYT8qxY21wGJUh7xmt1NGwn5AUge2ym
QbBS40D8RjFKqQKBwQCcE3hHXdIxllguRGpQy9VBw6gaSmCtksih12J1i1CFVB8o
09HG5Q3qel5Za2WkNNlUWvsHJ7OZNLaXB+i71aFZnfJFpD7m7+HM8+t9PzuPPoSF
0f0Fz1SWj+s1Lv3ykjwda76z3pvpSBKqv5kcGiJasTaPWKBaA8KDmI++OTOFVsti
A3e6FnEbhHy5RbLoS0CL74QEwzL15pv+0WOf/s5526brPgQF2RUCi/1hXUeJOSTo
HqhsZKe2rZNSDtOKxvECgcBo5nK1nORHJgXoX84kwNxRaC99RvVEdJck537zCRlv
wDBim0HUAvqeTjCBIf9pacxZyuCXys8Qt9Vn5oz9n2i6vGzHvdingwR2+35aDMBY
j6Y35PNw13mtg+usASprVsRAwERxBMnv0ALB1a2l7O/+VEZIdJKkEgQyJVnny4bG
gABiqI8wvCbCXU+5rgItXctfWkrxAWed0AopQHu5SM2EPQ0wMyP0q0KFoAPMJVqN
m/lDtrY4EpMy9FSQD1zb+qE=
-----END PRIVATE KEY-----

View File

@@ -0,0 +1,11 @@
-----BEGIN PUBLIC KEY-----
MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAvyfuM67QxEonEvC2Vf21
P+fxo406Z4C+zNzxH/8tCPhMH94Sklt10WXqSfQFfZbhJPVYoZL8m0NDI7ozI7lI
MPAhAVfcFOzO6VqpFGrzMgMqmnWLrxRsL3y1rjB3LnE84W+ATcS/mlk6rwbCfrSo
RRlY3i79ol8h36jhhaHT2/iGGO3uvqAQK334lQEOlqr+YL4Kkr/GMOm86bE4PcZS
JgCTAnlCQC7TUu6jGWuocmI1nNwLXPjQvXgc+HKtJEqFGf+a0fty9fLgaR2yIzlM
9i31r3kjeKzqVe2DeLTbttd8bVWU4/KmGg8rEchtwC8wR4inuDUjwJ3FwmdBrvDp
Ga1AM8yofdbs73Lv2EgkvRLvlgaWiX2P6KdlKGHeaDj9v0YWJbiFM4rc9y5hD3lG
2unhpvP/49OFXVBT2/pm86LmxSlwsun3G2LKNOXI646jhdVHQkIVcBiHTHYQOe9/
xLqx3ZiEM7witbzuJnxIkbj/8OFgH+WDUmTQVXtbz7vdAgMBAAE=
-----END PUBLIC KEY-----

View File

@@ -0,0 +1,40 @@
-----BEGIN PRIVATE KEY-----
MIIG/gIBADANBgkqhkiG9w0BAQEFAASCBugwggbkAgEAAoIBgQC1lzvnT5zHANwb
+W+kQebd/EWCnlfl1/3SznVHhKEqlXp2YNFhedWKX0aZesl/9oYCqux/plS9lYms
AnY47Zda3y1ypqOdpZ0zfcGsf9DO1MmSgYdkzXEtjkSlFpajUtobaA0axrEbQ431
PV6YqLtcMRwj0uZz+aE/pK65Se8bCrVnjfe+oah2iuRT5PaMJ9+WHB96e8Fw6TgY
lmgkWViyPL0O2WFrvQwml1UVZ9/GzhQGGGSNyRvsZsNNXFrfG/PU0RuRjb6iH+0m
a4i66kDsDpOd9g/Vg9c8xFAW1I9oow54pbknkiiu+BAqvgLvgdH2IGiMk3agnr8G
N8BrPs/yTLAuPa6j2Al6Y6bXDPwdnJmzPjzYYdrTCqlRwV84ivShMyIm28uf8VJh
VvnG82DfFaIY8yO7fZnj1dNftXFMOwiMbHnC0N3gbwgtLfJSUrDTK58dpybLwWf4
+WT5e3MFvPqurh+tX3f/eZ9Uw8aAEPHyYuNUmi88GdcoFJf5J1sCAwEAAQKCAYAK
nLn9fKOW5a/3Wo5xtQA+/N07EvHkFslYpoQoF9IrYOz1OhdCcRJPsd24XnqkJc4T
HdYQZ7IQGksfaE1sakYsI1rOlnp9Xg5f0fudjyKu07SsATHebDsvBF9ynm1TQiZI
773EUNRM2ZfUOy/qEAJTEvOoDE03feE0jPVBEtcMZ4XOdXeDBoOH2foaBQl7i2D/
rskQKWdWp+qFVVTkuuv6Dp6l3YJZ/4RURQfN5nIndiepa4eE2bnuCNtlC/6rh0CR
fPSI+i7eg9X8lCiqC4WHbyXp4zrqBbw60RkoYedyhWZE+pAsTnh1jxRQoFXUs03Z
XV3aD3gJLwUlIOf65kvLTTo1o/V2uyNZJSzFDNvVJrFIg0AqwzAgaY5kjbVXlf4G
GmjacP56TADbs/fZSRMjibGP+KsbiVbc1Mnio4co+9lyRMtwXe4TUUa3GOoaMN8a
LzT+5geVlZ1koQuofwfXFCKPaAe/SVFLNHsp/eyO6HCT9dUGXOxgoT1pL+/k6dEC
gcEA22uySiIOJelq1cN7s+CRxsn8mdx4eZHoc067heutxocYp/pFdJKmY5Qk/h5e
uC+/hsiWOS1KC2JVSi/fo7L3f1wttCQ5GLdhnp7umTGmDmFtEyn6b1EOai+nvjow
cqZDMY1jNpiLXnSRSplXUwE04RQ/4+z29GlIRGvaXkI/ovcBJ2RlJF2hydFbBOlK
vH12EtURrTgU9y5UJR6j8evmmSOv5ufKOX3FUKFNyau2kwYZD3BPuFGLlDrIN4Ic
NRK/AoHBANPdDfqjtlIOXv7Va2SaOOhDkGV6MHlx+5VeUkt1Qh9yIcVihMCXL61o
35BOd10TmyV4OZDwIIIMiHim4ofDAnOsXWOhNKlu2qN0HY6gDmfTrQM8L0sHyErM
YY1fOAtRiTEOOIgikj/8E1KTJ2HWVnZDWUXaQVnU7Vmn0b3Yq/IN/impL627ZKTl
dg45nNEfVhXfoXv+4O3Cmkt4WGM4XaDesmoGSkTjZaXFCzH9SgWSs7JClgDzCJ14
QSzn96G+ZQKBwFwugaetaP46cvy9dKHcTcITJ8FII4EHcH3I7PVVTxthtFUVysov
tiGNooD0J10AClnIuXvp7/qaZDSXqj/utxXVlwngUfB1Uli+coT/m8Dc42Mytpi/
l+u6e6FqduIjwYT23mCYc6zKEiQiCdLAZgPNaw4JhrKl7It6ODJzaKLBXMW84tUF
VSwhfTix/gj0OH+u7g80yXITD5zMo5nGPonFuWerp4TBtvyp17FLJ5fa7vpSd9t6
vsYWb/kJ+2m8pwKBwQDTVvyd3Hd/7UQH0x9Y8Jr53oQJJlV6oCBGBRv0l9jJA5H6
k2c3stjlk+sHya46U9d9DivmkBLth9EPAfKRWQ92EifqvaGJrsI9MRRW9QTJv5cj
1gKbRv0e2DgrzSNb7w76t2PfMRVQ7ITd51rutt/zAwXnr2tnUAcgW07XoW8Me7bh
Ghsso/UmpJsaX5A175txIG63AS6hHnHJ/Re2ikCju+Kf7vxhMbFxJlkfmbogSxIk
LVXzRnx+kLn7ML6OQx0CgcEAxcsIByq8JDtAUbvWtObfET86QPcw5otZ9eadetVU
UGtbVc2zVIsstMkHGzvLuG8k61vkTimJnwJ+SVy8CEmV+7ZLY3T/wFBI3XdCYpAp
bJi6Fn0LsUdu/dRD8KNyaQZVcMGoqPQNVCaHC6YB4tWuWR/unaxPDYiP8u/PwWCz
+Cwpeby5XxlYR79YlIZFTeFbRogZZ+sfbWX9q314MxoVf/ZPETOA9063z4kAXcL5
RqsZZ1cLu0TCOoNBkcSr79a6
-----END PRIVATE KEY-----

View File

@@ -0,0 +1,11 @@
-----BEGIN PUBLIC KEY-----
MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAtZc750+cxwDcG/lvpEHm
3fxFgp5X5df90s51R4ShKpV6dmDRYXnVil9GmXrJf/aGAqrsf6ZUvZWJrAJ2OO2X
Wt8tcqajnaWdM33BrH/QztTJkoGHZM1xLY5EpRaWo1LaG2gNGsaxG0ON9T1emKi7
XDEcI9Lmc/mhP6SuuUnvGwq1Z433vqGodorkU+T2jCfflhwfenvBcOk4GJZoJFlY
sjy9Dtlha70MJpdVFWffxs4UBhhkjckb7GbDTVxa3xvz1NEbkY2+oh/tJmuIuupA
7A6TnfYP1YPXPMRQFtSPaKMOeKW5J5IorvgQKr4C74HR9iBojJN2oJ6/BjfAaz7P
8kywLj2uo9gJemOm1wz8HZyZsz482GHa0wqpUcFfOIr0oTMiJtvLn/FSYVb5xvNg
3xWiGPMju32Z49XTX7VxTDsIjGx5wtDd4G8ILS3yUlKw0yufHacmy8Fn+Plk+Xtz
Bbz6rq4frV93/3mfVMPGgBDx8mLjVJovPBnXKBSX+SdbAgMBAAE=
-----END PUBLIC KEY-----

View File

@@ -0,0 +1,40 @@
-----BEGIN PRIVATE KEY-----
MIIG/gIBADANBgkqhkiG9w0BAQEFAASCBugwggbkAgEAAoIBgQDOk7AQIpVbQp1n
CVUm1bu2SqprXBjUn4eG4V/+RuOYm/x/AVwaP67LLazlxfOByQ0fPcK/gqLxWdBq
RufzcpFM0i4y9iDCdo1jfkq9UpTlHwo8nvBXzIRTKFHKO1q5pj1NpVQfQxK0PeLN
xns996Ncm/FG0uND1Jf8r6OgezeaRbJYM1ib27p5wsGg/FboGkBeJQ5adKlzQg7a
eMZu+dgjvOzm1h0WNW0NN/hM5IgNd4Jdzuc1SF//JBUAQq8aavrhKKFlz7XVPkBc
nLV5USMXCPuFapxnGGC6Rpw6hTyhQ5E7Q7QfUchLwgJccGAovXsmr5+6sQieVTg9
+nW2QDt1iH2ddD3X6GZG1NJcDUGnNZ0jMLd9CqfBOwPpzIgOw91EH2JIlPLAU9sb
LAwhuHjAilQ5LezzcMG2nGPaofDvNzlD30E/gN3fySX16N91i4VhGZvOur4FlHuJ
zn8szv7yITFganPewUKvqokCUIMri2HpMKXZmPOClM4XemcLUjsCAwEAAQKCAYAn
FrkdBH5Ai4VfRtvPAmiHoO9Ia1/jc+BgPGs+oUlVykZn/ejgqqY3mgf6Xo+qQlHy
VGxycpTEmJsgURR483fdEnRdfkdKpMYySmZ4FpVIGayFNgoCgxeS6LE5VCvhrzww
YhVd6QI0CvXMvD77xc0qq/Nm1Gbeoe60iMOsjURDM+cAW47rxxMtERY0kSsctkLx
zY8+vI6H2bsXyfy6aRpmAMzPDTrpxehBtRKN8jxwV+naOFl1sqE/lSNILlYV6KID
HDRgnwVMJCtaYCF88MWuaQQ7O2pX/Ba1x42iZtLCX1ABw3N6/PsB/90KtSNp5Duu
naM50NpsFDqAnFXrB7rUM7OK3nnBGVDK4KpD+36HdhNSCvhO+Tz+GQnWh46dMx76
0yOlSLoIHdDozP4aQXiHnIKdm8gInTOyoQftm3+11ba9WL7n8xOFH5sAl0em44d2
NcYx49myiIk/1VI+SZzPRUxwU4pwXL4rMRXzkRuQLQ6KorKqL2d1iH+crpFVCWEC
gcEA9Wy8nqS/2Nq7A+ph2B+Kf1o4Dc8njRrIJRwUBeik8zIfbaH5TdGUrjAyFOdO
GaL0bLz02hkOh+vq4NpxqcvLZ4L+phPgeDvb8DFFkdYE2jtbAFFOidGIfplja0aL
FBiusu3myGD37/7dSQo7VM/TihO6BANbye+SOFBHmTRNjFy7z6JPZOfQKp+yWFHN
3DOemAsG4XdVnWfkLqW7aBzsePae7ivMidHffgr9kdxbMPBemovN5ppFXMMLG6VQ
xmrxAoHBANd6bE5f3zEvaBAQElUzHGB3sbAi7YZv/Oms2I0J+qQN9/a5N47VWys6
WKN6VB4ZHFU4wWPX56eARDONalmrNTOaMkOSOf/jAAstbMd0WjKs8/T0n80QCtD3
ti3HTR9Ls7gFcKzDwVMscnbpFtv8wa2tvIkNodrD9faiQ8ubZfcAyuL1suXEMFKb
dor8B/R7DNYztgZ31IeWuVPhhb4iSceWtWyRdaUXDaYG0jZcmWi5zFcFLjiFTckB
0RRaZwOX6wKBwHmMsxY3LjTuj7TuvirV5DgSrLRaJpKB8yI998S9ZgR0jJA1qk1a
QTLL9+HWdR3JURkRtIrX4hR7SUa3qZeYsVLA0/HY4lFqBBG/tV73CkwzHWzY1/b1
6Y4Z1d1pgLQhTVSc8rHHJMSeC2aDRMNKctBt2LDoIOuwVVDCodNEzit4OiQplPy6
uqSBl0iaq0Ql5KQUwgGkoqhkreRUfK6htJRsQGZhFtojMXcxZkh5REjGo3QTTZSq
TzQT/Uph49GBYQKBwQDELaZ7uJeIvUN+FFPMlAsK3Q6+cR5V3pGh4gcKaYJzaHBQ
hZLKjP9DHQzkUZRSDsSX5mNT1pcHDiWJ1f90ggae441Nrcz2ZqJ8iq/V693O813s
r+bpmOhwFocbqK9TheWq7fEGqfbSFc5k6pQwVy+yQ1I6aVnpxa2jDVqx/dpYhrUw
60ckH3lrTDUiFpHbiUhHoK7htqmdhKFYeCP+1lLbzx+AJ/K3CoUXmnA6pBXbngUn
WQUa2mrWTbwgTqopQF8CgcEA72nxgVESZclZQPxkAjnYQCPdhwioYFU2s1C2upNR
KQ4SQO7f1wjSrjj33THm6gzCpg3Wi9TCUYZoO/UFYHVtg3mUybwYowQTG1i35Xzy
TxaJLz3gL+0WrLqnifxSuxsp1AVMHYxbxyXdAawKtTexVJ0Z/L+e771Kyi8yjJtr
511v9Nr9GX4wIQb1OpXKynTqcE0P7OLKnr1ATNReM1jEMlaot2TP8sY7uj6CUgsL
5PO2cnRk24OsUqAswTBT2qjd
-----END PRIVATE KEY-----

View File

@@ -0,0 +1,11 @@
-----BEGIN PUBLIC KEY-----
MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAzpOwECKVW0KdZwlVJtW7
tkqqa1wY1J+HhuFf/kbjmJv8fwFcGj+uyy2s5cXzgckNHz3Cv4Ki8VnQakbn83KR
TNIuMvYgwnaNY35KvVKU5R8KPJ7wV8yEUyhRyjtauaY9TaVUH0MStD3izcZ7Pfej
XJvxRtLjQ9SX/K+joHs3mkWyWDNYm9u6ecLBoPxW6BpAXiUOWnSpc0IO2njGbvnY
I7zs5tYdFjVtDTf4TOSIDXeCXc7nNUhf/yQVAEKvGmr64SihZc+11T5AXJy1eVEj
Fwj7hWqcZxhgukacOoU8oUORO0O0H1HIS8ICXHBgKL17Jq+furEInlU4Pfp1tkA7
dYh9nXQ91+hmRtTSXA1BpzWdIzC3fQqnwTsD6cyIDsPdRB9iSJTywFPbGywMIbh4
wIpUOS3s83DBtpxj2qHw7zc5Q99BP4Dd38kl9ejfdYuFYRmbzrq+BZR7ic5/LM7+
8iExYGpz3sFCr6qJAlCDK4th6TCl2ZjzgpTOF3pnC1I7AgMBAAE=
-----END PUBLIC KEY-----

View File

@@ -0,0 +1,40 @@
-----BEGIN PRIVATE KEY-----
MIIG/gIBADANBgkqhkiG9w0BAQEFAASCBugwggbkAgEAAoIBgQDaDQhs3Gw0hnp8
poZMdNClQV+AlWrfHRJnjnzEBAMvSXU9n6Wcy29Lf9lmlsX31su6rLNS4fCL7UEn
82V53rWgrxF0kp9Q+JBSyFd+9ZPj+wuxg7of6/arDaMG/qTHeH614OK4cxvDqKRQ
QKvm7WSqSNv6WzdqKO1amWY3bkdGHAUH+Xr/TECERA0DfoSg1v65+wNH/ZpFBgZD
qp6DKenxtS3skN/eFbXLvpQIqUq14V8g6SnjPBjRhir817CAqXN7TwsGtf7PLnGv
lWfycTRm1Zjy9s0LfdJ/qDkPVmUD4e+q6mUBZL+s/KaP4g3v0V5c16CbILEX9lp+
yd5pQGcalKBdhvIBKkD46SpSolwER5Mjit9Fk+LLHfO1qJuD6uA4Qz8NRXmV7ZbK
6OexDvkgbhKtW79dOYXTww3z+EPX7J0FWeFVrtsThZy2qADVP/kE/uK8AHTdrUEk
ekoVGH9D+k7k40gryU0YbpoiYs+a0mKMS84vRWxR2n6g7ztWdMUCAwEAAQKCAYAj
B6H5XyXxAEOwP85mfQPB8LEnhpmPM2vwAAeSM/TRBXOUzU99U39TOTxTS1iNes/q
8vCyGYMb76cehG8id4FlSYq72AxJJU2GRxIrXsd+Aig8QeXGWBGeJEgzCPiu5PAy
RukVacSll7OiAum65RtdcewJGdtari2HdwphUFGZ9UlnoRA98GGS/h27GHm1HyT3
+tfpmlfMy+14tHHXr4WaY5l3nkSguIsmqry8cXoDoyu1rU+h5lc0XeINEZeU6+PK
GKfu0uL9s/ejBNG2q7sHnKW6YWZMcaGipbYay922VvJv/DNrNZmosmfbNAMk5HBP
mEgQDc6aaQ0ASPw/hfSxNBV/ihnooepWMAnYz4X6LUtyLHt1GTQVP7AGQA5jqkyz
O30cCrP96IORD2F+ntKdSgQb83WB7C96Z1RLuVynLhR476w4oBEl7mhYVnTxgvVL
j6wxu5xJArpXU6DeoD6DH+Yk5Ahw+yJwYWqgjGWwLa6veG9Ps50l+h2/c1zIIuEC
gcEA8Dai7Vdoeu8hlan+nfSdb9SwGJ/DbNFevo3Jvh8Z6UDvHvxwucPr4mgXpjTI
rGFwmRK7ENj0Ompi+RHRxfkpv2uDwS/4RzxVnNTYcKgI2EKdKTyasyLIkPI3R38R
GhBg8v2aBH2NPubReG5c9Bz/eE3FEx5e6ZY77qGOhXClSz+rubl7FgmsYdxKxIxQ
mX7g+A6mhvU5LAPTxBmf2t+x8VvGZbkgF5dLrPf+qZytIB382S8Q4/dyUWXR+IaL
NIexAoHBAOhhiHyzUTMSERCoGhy1o86WeYnRYtXPO5eW1g9V2EvD/A/oYFNSwVQ8
468qhUZdex5v9e60Q4Qvf8/IWgtURGpsdZN8l4yJohJoeRs+Id5WsU0KAzlAKgh6
Bgh/3haIocju1PuO5EPBt4inV0aC8oq56lNJfJMoUXRviz9d+Iam5YbOPc47uMdW
OqucnJNW0Wco61aEpkN0N7MrtuCOxr+si1KHv7gA2tTiYhbehE8GqHb9mOdMi67A
Rr12h5yXVQKBwQDexDx6UMpC34tMyXaoM5bhg+O/IkJQoyXzH3jNSPh1mVNocAF2
NRyHPbNY3rCPNFoAix9SM3Diz5BznTPmHfi6XVG1ke/02B4pMDZ820hAjh5DhMGO
iR5pVUcwlcVdX30ZO1he+7RGdjYiMm8fr9i3T6AI5+xrQXjZB5gtZdbUnvp5ZWqh
eF0V7/6ioeGJR+IICUYj+DyJ9g6oWH8nsrXJuCuYYINDfXqfsOjJkNP46fZ3zy8h
ynOIyx1bFiL4lzECgcBvSr7OUibyWZW4r3mKBGgGOcTNf21hTtWQfRnZ0Fg9uQgQ
Kk9vuHOEv4Cf1LJth7m+UwqqnsSzGviQb7jIMjxt57HLx+Dg2s23GTffFzurO0PA
zKnMknFPC/m1ul+H1Tn+fHueWsnxtWYL2XEQAQjd7bpO1yQFakrQg9dhqsSq4GWO
0VmCWtHdDewdYm0Ol4bEbDGBhxgFuDQw6B+2nkqLY7x58y+blTU4vY8SutEM8/hc
vImtRNilAcsfVBQQp90CgcEAyou+tZBMjUzlA3QP8xEOQuJnikM05tsOZBnC+/O/
H85cwdlUOCAPSrbyhA3ON7fXR3MtL4R/Vxnf1WQPVB8tVdEUlhOZhg12L6D1LsiO
F3izbMcAyxsvVvnMoSWm4tbP4eYSmD6ASneikLGuFIS+/YnqP6cbvirKd7WSFxoO
gR7BwY4YEAqISlzZuFj+/KmF/Lby62LyRIt7HXySMzSrVsVEpozrsfME+H5yxYJn
VkpSw8QqBfhHSViEh12BQZa2
-----END PRIVATE KEY-----

View File

@@ -0,0 +1,11 @@
-----BEGIN PUBLIC KEY-----
MIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA2g0IbNxsNIZ6fKaGTHTQ
pUFfgJVq3x0SZ458xAQDL0l1PZ+lnMtvS3/ZZpbF99bLuqyzUuHwi+1BJ/Nled61
oK8RdJKfUPiQUshXfvWT4/sLsYO6H+v2qw2jBv6kx3h+teDiuHMbw6ikUECr5u1k
qkjb+ls3aijtWplmN25HRhwFB/l6/0xAhEQNA36EoNb+ufsDR/2aRQYGQ6qegynp
8bUt7JDf3hW1y76UCKlKteFfIOkp4zwY0YYq/NewgKlze08LBrX+zy5xr5Vn8nE0
ZtWY8vbNC33Sf6g5D1ZlA+HvquplAWS/rPymj+IN79FeXNegmyCxF/ZafsneaUBn
GpSgXYbyASpA+OkqUqJcBEeTI4rfRZPiyx3ztaibg+rgOEM/DUV5le2WyujnsQ75
IG4SrVu/XTmF08MN8/hD1+ydBVnhVa7bE4WctqgA1T/5BP7ivAB03a1BJHpKFRh/
Q/pO5ONIK8lNGG6aImLPmtJijEvOL0VsUdp+oO87VnTFAgMBAAE=
-----END PUBLIC KEY-----

View File

@@ -1,11 +1,15 @@
package com.cygnus.client; package com.cygnus.client;
import com.cygnus.client.model.CloudIdentitySession; import com.cygnus.client.model.CloudIdentitySession;
import com.cygnus.client.model.CloudDataItem;
import com.cygnus.client.model.CloudDataRequest;
import com.cygnus.client.model.CloudQueryResponse; import com.cygnus.client.model.CloudQueryResponse;
import com.cygnus.client.model.LoginPayload; import com.cygnus.client.model.LoginPayload;
import com.cygnus.client.security.LoginEnvelopeEncryptor; import com.cygnus.client.security.LoginEnvelopeEncryptor;
import com.cygnus.client.security.MachineTokenProvider; import com.cygnus.client.security.MachineTokenProvider;
import java.time.Clock; import java.time.Clock;
import java.util.List;
import java.util.Map;
import java.util.UUID; import java.util.UUID;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
@@ -62,4 +66,29 @@ public class CloudIdentityClient {
.bodyToMono(CloudQueryResponse.class)) .bodyToMono(CloudQueryResponse.class))
.timeout(properties.requestTimeout()); .timeout(properties.requestTimeout());
} }
public Mono<CloudQueryResponse> fetchQuery(String queryKey) {
return tokenProvider.accessToken()
.flatMap(token -> webClient.get()
.uri(properties.baseUri().resolve("/api/v1/queries/key/" + queryKey))
.header(HttpHeaders.AUTHORIZATION, "Bearer " + token)
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(CloudQueryResponse.class))
.timeout(properties.requestTimeout());
}
public Mono<List<CloudDataItem>> fetchData(String scope, Map<String, Object> data) {
return tokenProvider.accessToken()
.flatMap(token -> webClient.post()
.uri(properties.baseUri().resolve("/api/v1/platform/data"))
.header(HttpHeaders.AUTHORIZATION, "Bearer " + token)
.contentType(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.bodyValue(new CloudDataRequest(scope, Map.copyOf(data)))
.retrieve()
.bodyToFlux(CloudDataItem.class)
.collectList())
.timeout(properties.requestTimeout());
}
} }

View File

@@ -0,0 +1,4 @@
package com.cygnus.client.model;
public record CloudDataItem(Object value, String label, String group) {
}

View File

@@ -0,0 +1,6 @@
package com.cygnus.client.model;
import java.util.Map;
public record CloudDataRequest(String scope, Map<String, Object> data) {
}

View File

@@ -0,0 +1,49 @@
package com.cygnus.cloud.platform.api;
import com.cygnus.cloud.platform.service.ScopedDataException;
import com.cygnus.cloud.platform.service.ScopedDataService;
import jakarta.validation.Valid;
import java.util.Map;
import java.util.UUID;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.oauth2.jwt.Jwt;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;
@RestController
@RequestMapping("/api/v1/platform/data")
public class ScopedDataController {
private static final Logger LOGGER = LoggerFactory.getLogger(ScopedDataController.class);
private final ScopedDataService service;
public ScopedDataController(ScopedDataService service) {
this.service = service;
}
@PostMapping
public Flux<ScopedDataItem> data(
@AuthenticationPrincipal Jwt machineJwt,
@Valid @RequestBody ScopedDataRequest request) {
if (machineJwt == null) throw new ScopedDataException("Machine authentication required");
try {
return service.fetch(UUID.fromString(machineJwt.getClaimAsString("tenant_id")), request);
} catch (IllegalArgumentException exception) {
throw new ScopedDataException("Machine tenant is invalid");
}
}
@ExceptionHandler(ScopedDataException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
Map<String, String> invalidRequest(ScopedDataException exception) {
LOGGER.warn("Scoped platform-data request rejected: {}", exception.getMessage());
return Map.of("code", "PLATFORM_DATA_INVALID", "message", exception.getMessage());
}
}

View File

@@ -0,0 +1,7 @@
package com.cygnus.cloud.platform.api;
public record ScopedDataItem(
Object value,
String label,
String group) {
}

View File

@@ -0,0 +1,10 @@
package com.cygnus.cloud.platform.api;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.util.Map;
public record ScopedDataRequest(
@NotBlank String scope,
@NotNull Map<String, Object> data) {
}

View File

@@ -0,0 +1,79 @@
package com.cygnus.cloud.platform.repository;
import com.cygnus.cloud.database.ReactiveDatabaseClient;
import com.cygnus.cloud.platform.api.ScopedDataItem;
import io.vertx.sqlclient.Row;
import io.vertx.sqlclient.Tuple;
import java.util.List;
import java.util.UUID;
import org.springframework.stereotype.Repository;
import reactor.core.publisher.Flux;
@Repository
public class ScopedDataRepository {
private static final String COMPANY_OPTIONS = """
SELECT ov.opt_value AS value,
ov.val_description AS label,
lower(o.description) || '.' AS group_name
FROM platform.company_options_mapping m
JOIN platform.options o ON o.option_id = m.option_id
JOIN platform.options_values ov ON ov.opt_value_id = m.opt_value_id
JOIN identity.company c ON c.company_id = m.company_id
WHERE c.tenant_id = $1
AND m.company_id = $2
AND o.isactive = 1
AND ov.isactive = 1
AND o.description = ANY($3::text[])
ORDER BY o.description, ov.val_description
""";
private static final String PORTFOLIO_OPTIONS = """
SELECT ov.opt_value AS value,
ov.val_description AS label,
lower(o.description) || '.' AS group_name
FROM platform.options_mapping m
JOIN platform.options o ON o.option_id = m.option_id
JOIN platform.options_values ov ON ov.opt_value_id = m.opt_value_id
JOIN identity.company c ON c.company_id = m.company_id
JOIN platform.company_branch_portfolios cbp
ON cbp.company_id = m.company_id
AND cbp.portfolio_reference = m.portfolio_reference
WHERE c.tenant_id = $1
AND m.company_id = $2
AND cbp.company_branch_id = $3
AND m.portfolio_reference = $4
AND o.isactive = 1
AND ov.isactive = 1
AND o.description = ANY($5::text[])
ORDER BY o.description, ov.val_description
""";
private final ReactiveDatabaseClient database;
public ScopedDataRepository(ReactiveDatabaseClient database) {
this.database = database;
}
public Flux<ScopedDataItem> companyOptions(
UUID tenantId, short companyId, List<String> descriptions) {
return rows(COMPANY_OPTIONS, Tuple.of(tenantId, companyId, descriptions.toArray(String[]::new)));
}
public Flux<ScopedDataItem> portfolioOptions(
UUID tenantId, short companyId, short branchId, UUID portfolioReference,
List<String> descriptions) {
return rows(PORTFOLIO_OPTIONS,
Tuple.of(tenantId, companyId, branchId, portfolioReference,
descriptions.toArray(String[]::new)));
}
private Flux<ScopedDataItem> rows(String sql, Tuple parameters) {
return database.preparedQuery(sql, parameters)
.flatMapMany(result -> Flux.fromIterable(result))
.map(this::item);
}
private ScopedDataItem item(Row row) {
return new ScopedDataItem(
row.getValue("value"), row.getString("label"), row.getString("group_name"));
}
}

View File

@@ -0,0 +1,7 @@
package com.cygnus.cloud.platform.service;
public class ScopedDataException extends RuntimeException {
public ScopedDataException(String message) {
super(message);
}
}

View File

@@ -0,0 +1,74 @@
package com.cygnus.cloud.platform.service;
import com.cygnus.cloud.platform.api.ScopedDataItem;
import com.cygnus.cloud.platform.api.ScopedDataRequest;
import com.cygnus.cloud.platform.repository.ScopedDataRepository;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.UUID;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
@Service
public class ScopedDataService {
public static final String COMPANY_OPTIONS = "company-options";
public static final String PORTFOLIO_OPTIONS = "portfolio-options";
private final ScopedDataRepository repository;
public ScopedDataService(ScopedDataRepository repository) {
this.repository = repository;
}
public Flux<ScopedDataItem> fetch(UUID tenantId, ScopedDataRequest request) {
Map<String, Object> data = request.data();
short companyId = shortValue(data, "companyId");
List<String> descriptions = descriptions(data);
return switch (request.scope().trim().toLowerCase(Locale.ROOT)) {
case COMPANY_OPTIONS -> repository.companyOptions(tenantId, companyId, descriptions);
case PORTFOLIO_OPTIONS -> repository.portfolioOptions(
tenantId, companyId, shortValue(data, "branchId"),
uuidValue(data, "portfolioReference"), descriptions);
default -> Flux.error(new ScopedDataException("Unsupported data scope"));
};
}
private UUID uuidValue(Map<String, Object> data, String name) {
try {
return UUID.fromString(String.valueOf(data.get(name)));
} catch (RuntimeException exception) {
throw new ScopedDataException(name + " must be a valid UUID");
}
}
private short shortValue(Map<String, Object> data, String name) {
Object value = data.get(name);
try {
short result = value instanceof Number number
? number.shortValue() : Short.parseShort(String.valueOf(value));
if (result <= 0) throw new NumberFormatException();
return result;
} catch (RuntimeException exception) {
throw new ScopedDataException(name + " must be a positive number");
}
}
private List<String> descriptions(Map<String, Object> data) {
Object value = data.get("descriptions");
if (!(value instanceof List<?> values)) {
throw new ScopedDataException("descriptions must be a non-empty list");
}
List<String> result = values.stream()
.map(String::valueOf)
.map(String::trim)
.filter(text -> !text.isEmpty())
.map(text -> text.toUpperCase(Locale.ROOT))
.distinct()
.toList();
if (result.isEmpty() || result.size() > 20) {
throw new ScopedDataException("descriptions must contain between 1 and 20 values");
}
return result;
}
}

View File

@@ -25,4 +25,10 @@ public class CloudQueryController {
return repository.findEnabled(queryId) return repository.findEnabled(queryId)
.switchIfEmpty(Mono.error(new QueryNotFoundException(queryId))); .switchIfEmpty(Mono.error(new QueryNotFoundException(queryId)));
} }
@GetMapping("/key/{queryKey}")
public Mono<CloudQuery> queryByKey(@PathVariable String queryKey) {
return repository.findEnabled(queryKey)
.switchIfEmpty(Mono.error(new QueryNotFoundException(queryKey)));
}
} }

View File

@@ -10,8 +10,10 @@ public class QueryCatalogRepository {
private static final String INITIALIZE = """ private static final String INITIALIZE = """
CREATE SCHEMA IF NOT EXISTS platform; CREATE SCHEMA IF NOT EXISTS platform;
CREATE SEQUENCE IF NOT EXISTS platform.application_query_id_seq;
CREATE TABLE IF NOT EXISTS platform.application_query ( CREATE TABLE IF NOT EXISTS platform.application_query (
query_id integer PRIMARY KEY, query_id integer PRIMARY KEY DEFAULT nextval('platform.application_query_id_seq'),
query_key varchar(100),
query_text text NOT NULL, query_text text NOT NULL,
enabled boolean NOT NULL DEFAULT true, enabled boolean NOT NULL DEFAULT true,
created_at timestamptz NOT NULL DEFAULT current_timestamp, created_at timestamptz NOT NULL DEFAULT current_timestamp,
@@ -20,7 +22,15 @@ public class QueryCatalogRepository {
CHECK (query_id > 0), CHECK (query_id > 0),
CONSTRAINT ck_platform_application_query_text CONSTRAINT ck_platform_application_query_text
CHECK (length(btrim(query_text)) > 0) CHECK (length(btrim(query_text)) > 0)
) );
ALTER TABLE platform.application_query
ADD COLUMN IF NOT EXISTS query_key varchar(100);
ALTER TABLE platform.application_query ALTER COLUMN query_id
SET DEFAULT nextval('platform.application_query_id_seq');
CREATE UNIQUE INDEX IF NOT EXISTS ux_platform_application_query_key
ON platform.application_query (query_key) WHERE query_key IS NOT NULL;
SELECT setval('platform.application_query_id_seq',
greatest(coalesce((SELECT max(query_id) FROM platform.application_query), 0) + 1, 1), false)
"""; """;
private static final String FIND = """ private static final String FIND = """
SELECT query_id, query_text SELECT query_id, query_text
@@ -28,6 +38,12 @@ public class QueryCatalogRepository {
WHERE query_id = $1 WHERE query_id = $1
AND enabled = true AND enabled = true
"""; """;
private static final String FIND_BY_KEY = """
SELECT query_id, query_text
FROM platform.application_query
WHERE query_key = $1
AND enabled = true
""";
private final ReactiveDatabaseClient database; private final ReactiveDatabaseClient database;
public QueryCatalogRepository(ReactiveDatabaseClient database) { public QueryCatalogRepository(ReactiveDatabaseClient database) {
@@ -45,4 +61,11 @@ public class QueryCatalogRepository {
.map(row -> new CloudQuery( .map(row -> new CloudQuery(
row.getInteger("query_id"), row.getString("query_text"))); row.getInteger("query_id"), row.getString("query_text")));
} }
public Mono<CloudQuery> findEnabled(String queryKey) {
return database.preparedQuery(FIND_BY_KEY, Tuple.of(queryKey))
.flatMapMany(rows -> reactor.core.publisher.Flux.fromIterable(rows))
.next()
.map(row -> new CloudQuery(row.getInteger("query_id"), row.getString("query_text")));
}
} }

View File

@@ -9,4 +9,8 @@ public class QueryNotFoundException extends RuntimeException {
public QueryNotFoundException(int queryId) { public QueryNotFoundException(int queryId) {
super("Query was not found: " + queryId); super("Query was not found: " + queryId);
} }
public QueryNotFoundException(String queryKey) {
super("Query was not found: " + queryKey);
}
} }

View File

@@ -38,6 +38,8 @@ public class CloudSecurityConfiguration {
.hasAuthority("SCOPE_identity.login") .hasAuthority("SCOPE_identity.login")
.pathMatchers("/api/v1/queries/**") .pathMatchers("/api/v1/queries/**")
.hasAuthority("SCOPE_identity.login") .hasAuthority("SCOPE_identity.login")
.pathMatchers("/api/v1/platform/data")
.hasAuthority("SCOPE_identity.login")
.pathMatchers("/api/v1/admin/**") .pathMatchers("/api/v1/admin/**")
.hasAuthority("SCOPE_cygnus.admin") .hasAuthority("SCOPE_cygnus.admin")
.anyExchange().authenticated()) .anyExchange().authenticated())

View File

@@ -1,7 +1,9 @@
CREATE SCHEMA IF NOT EXISTS platform; CREATE SCHEMA IF NOT EXISTS platform;
CREATE SEQUENCE IF NOT EXISTS platform.application_query_id_seq;
CREATE TABLE IF NOT EXISTS platform.application_query ( CREATE TABLE IF NOT EXISTS platform.application_query (
query_id integer PRIMARY KEY, query_id integer PRIMARY KEY DEFAULT nextval('platform.application_query_id_seq'),
query_key varchar(100),
query_text text NOT NULL, query_text text NOT NULL,
enabled boolean NOT NULL DEFAULT true, enabled boolean NOT NULL DEFAULT true,
created_at timestamptz NOT NULL DEFAULT current_timestamp, created_at timestamptz NOT NULL DEFAULT current_timestamp,
@@ -11,3 +13,11 @@ CREATE TABLE IF NOT EXISTS platform.application_query (
CONSTRAINT ck_platform_application_query_text CONSTRAINT ck_platform_application_query_text
CHECK (length(btrim(query_text)) > 0) CHECK (length(btrim(query_text)) > 0)
); );
ALTER TABLE platform.application_query
ADD COLUMN IF NOT EXISTS query_key varchar(100);
CREATE UNIQUE INDEX IF NOT EXISTS ux_platform_application_query_key
ON platform.application_query (query_key) WHERE query_key IS NOT NULL;
ALTER TABLE platform.application_query ALTER COLUMN query_id
SET DEFAULT nextval('platform.application_query_id_seq');
SELECT setval('platform.application_query_id_seq',
greatest(coalesce((SELECT max(query_id) FROM platform.application_query), 0) + 1, 1), false);

View File

@@ -0,0 +1,11 @@
-- Stable query key; query_id is generated by PostgreSQL.
BEGIN;
INSERT INTO platform.application_query(query_key, query_text, enabled, created_at, updated_at, ismigrated)
VALUES ('APPLICATION_SAVE',
'procedure!C0L!select * from public.save_application_details(?::jsonb,?::smallint,?::smallint,?::smallint)',
true, clock_timestamp(), clock_timestamp(), true)
ON CONFLICT (query_key) WHERE query_key IS NOT NULL DO UPDATE SET
query_text=excluded.query_text, enabled=true, updated_at=clock_timestamp(), ismigrated=true;
COMMIT;

Binary file not shown.

View File

@@ -42,8 +42,9 @@ import org.springframework.stereotype.Service;
public class SwingInstallationWizard { public class SwingInstallationWizard {
private static final String WELCOME = "welcome"; private static final String WELCOME = "welcome";
private static final String DATABASE = "database";
private static final String DEPLOYMENT = "deployment";
private static final String DETAILS = "details"; private static final String DETAILS = "details";
private static final String RUNTIME = "runtime";
private static final String INSTALLING = "installing"; private static final String INSTALLING = "installing";
private static final Color ACCENT = new Color(35, 97, 146); private static final Color ACCENT = new Color(35, 97, 146);
private static final Color BACKGROUND = new Color(236, 243, 247); private static final Color BACKGROUND = new Color(236, 243, 247);
@@ -68,7 +69,9 @@ public class SwingInstallationWizard {
private JPasswordField dockerPassword; private JPasswordField dockerPassword;
private JTextField outputDirectory; private JTextField outputDirectory;
private JTextField containerCloudServiceUrl; private JTextField containerCloudServiceUrl;
private JTextField databaseUrl; private JTextField databaseHost;
private JTextField databasePort;
private JTextField databaseName;
private JTextField databaseUsername; private JTextField databaseUsername;
private JPasswordField databasePassword; private JPasswordField databasePassword;
private JTextField redisHost; private JTextField redisHost;
@@ -139,8 +142,9 @@ public class SwingInstallationWizard {
cardPanel = new JPanel(cards); cardPanel = new JPanel(cards);
cardPanel.setBackground(BACKGROUND); cardPanel.setBackground(BACKGROUND);
cardPanel.add(welcomePanel(), WELCOME); cardPanel.add(welcomePanel(), WELCOME);
cardPanel.add(databasePanel(), DATABASE);
cardPanel.add(deploymentPanel(), DEPLOYMENT);
cardPanel.add(detailsPanel(), DETAILS); cardPanel.add(detailsPanel(), DETAILS);
cardPanel.add(runtimePanel(), RUNTIME);
cardPanel.add(installingPanel(), INSTALLING); cardPanel.add(installingPanel(), INSTALLING);
root.add(cardPanel, BorderLayout.CENTER); root.add(cardPanel, BorderLayout.CENTER);
return root; return root;
@@ -197,7 +201,8 @@ public class SwingInstallationWizard {
JPanel top = new JPanel(new BorderLayout()); JPanel top = new JPanel(new BorderLayout());
top.setOpaque(false); top.setOpaque(false);
top.add(heading("Installation details"), BorderLayout.NORTH); top.add(heading("Installation details"), BorderLayout.NORTH);
top.add(text("Enter the activation details supplied by Technobee."), BorderLayout.SOUTH); top.add(text("Review and enter the activation details supplied by Technobee."),
BorderLayout.SOUTH);
panel.add(top, BorderLayout.NORTH); panel.add(top, BorderLayout.NORTH);
JPanel form = new JPanel(new GridBagLayout()); JPanel form = new JPanel(new GridBagLayout());
@@ -209,6 +214,32 @@ public class SwingInstallationWizard {
licenseKey = new JPasswordField(); licenseKey = new JPasswordField();
installationCode = new JTextField(); installationCode = new JTextField();
installationName = new JTextField(); installationName = new JTextField();
int row = 0;
row = addField(form, row, "Client code", clientCode, null);
row = addField(form, row, "License key", licenseKey, null);
row = addField(form, row, "Installation code", installationCode, null);
addField(form, row, "Installation name", installationName, null);
panel.add(form, BorderLayout.CENTER);
JButton back = secondaryButton("Back");
back.addActionListener(event -> cards.show(cardPanel, DEPLOYMENT));
JButton install = primaryButton("Install");
install.addActionListener(event -> startInstallation());
panel.add(actions(back, install), BorderLayout.SOUTH);
return panel;
}
private JPanel deploymentPanel() {
JPanel panel = contentPanel();
panel.setLayout(new BorderLayout(0, 12));
JPanel top = new JPanel(new BorderLayout());
top.setOpaque(false);
top.add(heading("Docker and deployment"), BorderLayout.NORTH);
top.add(text("Configure the container image, registry and deployment location."),
BorderLayout.SOUTH);
panel.add(top, BorderLayout.NORTH);
JPanel form = formPanel();
containerCloudServiceUrl = containerCloudServiceUrl =
new JTextField(settings.containerCloudServiceUrl().toString()); new JTextField(settings.containerCloudServiceUrl().toString());
containerCloudServiceUrl.setEditable(true); containerCloudServiceUrl.setEditable(true);
@@ -220,10 +251,6 @@ public class SwingInstallationWizard {
outputDirectory = new JTextField( outputDirectory = new JTextField(
settings.defaultOutputDirectory().toAbsolutePath().normalize().toString()); settings.defaultOutputDirectory().toAbsolutePath().normalize().toString());
int row = 0; int row = 0;
row = addField(form, row, "Client code", clientCode, null);
row = addField(form, row, "License key", licenseKey, null);
row = addField(form, row, "Installation code", installationCode, null);
row = addField(form, row, "Installation name", installationName, null);
row = addField( row = addField(
form, form,
row, row,
@@ -237,8 +264,11 @@ public class SwingInstallationWizard {
dockerImage, dockerImage,
null); null);
row = addField(form, row, "Docker registry", dockerRegistry, null); row = addField(form, row, "Docker registry", dockerRegistry, null);
row = addField(form, row, "Docker username", dockerUsername, null); row = addComponentField(
row = addField(form, row, "Docker password", dockerPassword, null); form,
row,
"Docker credentials",
credentialFields(dockerUsername, dockerPassword));
for (String field : profile.optionalInstallationFields()) { for (String field : profile.optionalInstallationFields()) {
JTextField input = new JTextField(); JTextField input = new JTextField();
optionalFields.put(field, input); optionalFields.put(field, input);
@@ -254,31 +284,28 @@ public class SwingInstallationWizard {
panel.add(scroll, BorderLayout.CENTER); panel.add(scroll, BorderLayout.CENTER);
JButton back = secondaryButton("Back"); JButton back = secondaryButton("Back");
back.addActionListener(event -> cards.show(cardPanel, WELCOME)); back.addActionListener(event -> cards.show(cardPanel, DATABASE));
JButton next = primaryButton("Next"); JButton next = primaryButton("Next");
next.addActionListener(event -> cards.show(cardPanel, RUNTIME)); next.addActionListener(event -> cards.show(cardPanel, DETAILS));
panel.add(actions(back, next), BorderLayout.SOUTH); panel.add(actions(back, next), BorderLayout.SOUTH);
return panel; return panel;
} }
private JPanel runtimePanel() { private JPanel databasePanel() {
JPanel panel = contentPanel(); JPanel panel = contentPanel();
panel.setLayout(new BorderLayout(0, 12)); panel.setLayout(new BorderLayout(0, 12));
JPanel top = new JPanel(new BorderLayout()); JPanel top = new JPanel(new BorderLayout());
top.setOpaque(false); top.setOpaque(false);
top.add(heading("Runtime configuration"), BorderLayout.NORTH); top.add(heading("Database and Redis"), BorderLayout.NORTH);
top.add(text("Configure the database and Redis services used by the " top.add(text("Configure the database and Redis services used by the "
+ profile.displayName() + " on-premises container."), BorderLayout.SOUTH); + profile.displayName() + " on-premises container."), BorderLayout.SOUTH);
panel.add(top, BorderLayout.NORTH); panel.add(top, BorderLayout.NORTH);
JPanel form = new JPanel(new GridBagLayout()); JPanel form = formPanel();
form.setBackground(PANEL); databaseHost = new JTextField("localhost");
form.setBorder(BorderFactory.createCompoundBorder( databasePort = new JTextField("5432");
BorderFactory.createLineBorder(new Color(205, 217, 225)), databaseName = new JTextField("matrix");
BorderFactory.createEmptyBorder(14, 16, 14, 16)));
databaseUrl = new JTextField("jdbc:postgresql://localhost:5432/matrix");
databaseUsername = new JTextField("postgres"); databaseUsername = new JTextField("postgres");
databasePassword = new JPasswordField(); databasePassword = new JPasswordField();
redisHost = new JTextField("localhost"); redisHost = new JTextField("localhost");
@@ -287,9 +314,16 @@ public class SwingInstallationWizard {
cloudRequestTimeout = new JTextField("PT10S"); cloudRequestTimeout = new JTextField("PT10S");
tokenRefreshSkew = new JTextField("PT30S"); tokenRefreshSkew = new JTextField("PT30S");
int row = 0; int row = 0;
row = addField(form, row, "Database URL", databaseUrl, null); row = addComponentField(
row = addField(form, row, "Database username", databaseUsername, null); form,
row = addField(form, row, "Database password", databasePassword, null); row,
"Database",
databaseConnectionFields());
row = addComponentField(
form,
row,
"Database credentials",
credentialFields(databaseUsername, databasePassword));
row = addField(form, row, "Redis host", redisHost, null); row = addField(form, row, "Redis host", redisHost, null);
row = addField(form, row, "Redis port", redisPort, null); row = addField(form, row, "Redis port", redisPort, null);
row = addField(form, row, "Redis password", redisPassword, null); row = addField(form, row, "Redis password", redisPassword, null);
@@ -304,10 +338,10 @@ public class SwingInstallationWizard {
panel.add(form, BorderLayout.CENTER); panel.add(form, BorderLayout.CENTER);
JButton back = secondaryButton("Back"); JButton back = secondaryButton("Back");
back.addActionListener(event -> cards.show(cardPanel, DETAILS)); back.addActionListener(event -> cards.show(cardPanel, WELCOME));
JButton install = primaryButton("Install"); JButton next = primaryButton("Next");
install.addActionListener(event -> startInstallation()); next.addActionListener(event -> cards.show(cardPanel, DEPLOYMENT));
panel.add(actions(back, install), BorderLayout.SOUTH); panel.add(actions(back, next), BorderLayout.SOUTH);
return panel; return panel;
} }
@@ -373,7 +407,7 @@ public class SwingInstallationWizard {
progressBar.setValue(0); progressBar.setValue(0);
progressPercentage.setText("0%"); progressPercentage.setText("0%");
progressMessage.setText("Preparing installation"); progressMessage.setText("Preparing installation");
cards.show(cardPanel, RUNTIME); cards.show(cardPanel, DEPLOYMENT);
containerCloudServiceUrl.requestFocusInWindow(); containerCloudServiceUrl.requestFocusInWindow();
}); });
@@ -415,8 +449,8 @@ public class SwingInstallationWizard {
button.setText("Check Docker and continue"); button.setText("Check Docker and continue");
try { try {
get(); get();
cards.show(cardPanel, DETAILS); cards.show(cardPanel, DATABASE);
clientCode.requestFocusInWindow(); databaseHost.requestFocusInWindow();
} catch (Exception exception) { } catch (Exception exception) {
showError(message(exception)); showError(message(exception));
} }
@@ -445,7 +479,12 @@ public class SwingInstallationWizard {
optionalValues(), optionalValues(),
new RuntimeConfiguration( new RuntimeConfiguration(
containerCloudServiceUrl.getText(), containerCloudServiceUrl.getText(),
databaseUrl.getText(), "jdbc:postgresql://"
+ databaseHost.getText().trim()
+ ":"
+ databasePort.getText().trim()
+ "/"
+ databaseName.getText().trim(),
databaseUsername.getText(), databaseUsername.getText(),
new String(databaseSecret), new String(databaseSecret),
redisHost.getText(), redisHost.getText(),
@@ -559,7 +598,9 @@ public class SwingInstallationWizard {
validateAbsoluteHttpUrl( validateAbsoluteHttpUrl(
runtime.containerCloudServiceUrl(), runtime.containerCloudServiceUrl(),
"Container cloud service URL"); "Container cloud service URL");
if (runtime.databaseUrl().isBlank() if (databaseHost.getText().isBlank()
|| databasePort.getText().isBlank()
|| databaseName.getText().isBlank()
|| runtime.databaseUsername().isBlank() || runtime.databaseUsername().isBlank()
|| runtime.databasePassword().isBlank()) { || runtime.databasePassword().isBlank()) {
throw new IllegalArgumentException( throw new IllegalArgumentException(
@@ -632,6 +673,95 @@ public class SwingInstallationWizard {
return row + 1; return row + 1;
} }
private int addComponentField(
JPanel form,
int row,
String label,
Component input) {
GridBagConstraints labelConstraints = constraints(0, row);
labelConstraints.weightx = 0;
labelConstraints.fill = GridBagConstraints.NONE;
labelConstraints.anchor = GridBagConstraints.LINE_START;
JLabel fieldLabel = new JLabel(label);
fieldLabel.setFont(fieldLabel.getFont().deriveFont(Font.BOLD, 12f));
form.add(fieldLabel, labelConstraints);
GridBagConstraints inputConstraints = constraints(1, row);
inputConstraints.weightx = 1;
inputConstraints.fill = GridBagConstraints.HORIZONTAL;
form.add(input, inputConstraints);
return row + 1;
}
private JPanel formPanel() {
JPanel form = new JPanel(new GridBagLayout());
form.setBackground(PANEL);
form.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createLineBorder(new Color(205, 217, 225)),
BorderFactory.createEmptyBorder(14, 16, 14, 16)));
return form;
}
private JPanel databaseConnectionFields() {
JPanel fields = inlineFieldsPanel();
addInlineField(fields, databaseHost, 0, 0.50);
addInlineSeparator(fields, ":", 1);
addInlineField(fields, databasePort, 2, 0.15);
addInlineSeparator(fields, "/", 3);
addInlineField(fields, databaseName, 4, 0.35);
databaseHost.setToolTipText("Database host");
databasePort.setToolTipText("Database port");
databaseName.setToolTipText("Database name");
return fields;
}
private JPanel credentialFields(JTextField username, JTextField password) {
JPanel fields = inlineFieldsPanel();
addInlineLabel(fields, "Username", 0);
addInlineField(fields, username, 1, 0.5);
addInlineLabel(fields, "Password", 2);
addInlineField(fields, password, 3, 0.5);
return fields;
}
private JPanel inlineFieldsPanel() {
JPanel fields = new JPanel(new GridBagLayout());
fields.setOpaque(false);
return fields;
}
private void addInlineField(
JPanel panel,
JTextField field,
int column,
double weight) {
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = column;
constraints.weightx = weight;
constraints.fill = GridBagConstraints.HORIZONTAL;
constraints.insets = new Insets(0, column == 0 ? 0 : 5, 0, 0);
field.setPreferredSize(new Dimension(120, 29));
panel.add(field, constraints);
}
private void addInlineLabel(JPanel panel, String text, int column) {
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = column;
constraints.weightx = 0;
constraints.insets = new Insets(0, column == 0 ? 0 : 12, 0, 5);
JLabel label = new JLabel(text);
label.setForeground(new Color(75, 88, 99));
panel.add(label, constraints);
}
private void addInlineSeparator(JPanel panel, String text, int column) {
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = column;
constraints.weightx = 0;
constraints.insets = new Insets(0, 5, 0, 0);
panel.add(new JLabel(text), constraints);
}
private GridBagConstraints constraints(int column, int row) { private GridBagConstraints constraints(int column, int row) {
GridBagConstraints constraints = new GridBagConstraints(); GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = column; constraints.gridx = column;
@@ -664,6 +794,7 @@ public class SwingInstallationWizard {
JLabel label = new JLabel(value); JLabel label = new JLabel(value);
label.setFont(label.getFont().deriveFont(Font.BOLD, 19f)); label.setFont(label.getFont().deriveFont(Font.BOLD, 19f));
label.setForeground(new Color(35, 48, 58)); label.setForeground(new Color(35, 48, 58));
label.setAlignmentX(Component.LEFT_ALIGNMENT);
return label; return label;
} }
@@ -677,6 +808,7 @@ public class SwingInstallationWizard {
private JPanel summaryRow(String label, String value) { private JPanel summaryRow(String label, String value) {
JPanel row = new JPanel(new BorderLayout(18, 0)); JPanel row = new JPanel(new BorderLayout(18, 0));
row.setOpaque(false); row.setOpaque(false);
row.setAlignmentX(Component.LEFT_ALIGNMENT);
row.setBorder(BorderFactory.createEmptyBorder(7, 0, 7, 0)); row.setBorder(BorderFactory.createEmptyBorder(7, 0, 7, 0));
JLabel name = new JLabel(label); JLabel name = new JLabel(label);
name.setPreferredSize(new Dimension(130, 20)); name.setPreferredSize(new Dimension(130, 20));
@@ -691,7 +823,8 @@ public class SwingInstallationWizard {
JPanel row = new JPanel(new BorderLayout(18, 0)); JPanel row = new JPanel(new BorderLayout(18, 0));
row.setOpaque(false); row.setOpaque(false);
row.setAlignmentX(Component.LEFT_ALIGNMENT); row.setAlignmentX(Component.LEFT_ALIGNMENT);
row.setMaximumSize(new Dimension(Integer.MAX_VALUE, 34)); row.setBorder(BorderFactory.createEmptyBorder(7, 0, 7, 0));
row.setMaximumSize(new Dimension(Integer.MAX_VALUE, 42));
JLabel name = new JLabel(label); JLabel name = new JLabel(label);
name.setFont(name.getFont().deriveFont(Font.BOLD)); name.setFont(name.getFont().deriveFont(Font.BOLD));
name.setPreferredSize(new Dimension(130, 28)); name.setPreferredSize(new Dimension(130, 28));

View File

@@ -23,6 +23,7 @@ public class TechnobeeServiceInstallerApplication implements CommandLineRunner {
} }
public static void main(String[] args) { public static void main(String[] args) {
disableAccidentalSpringDebug(args);
SpringApplication application = SpringApplication application =
new SpringApplication(TechnobeeServiceInstallerApplication.class); new SpringApplication(TechnobeeServiceInstallerApplication.class);
application.setWebApplicationType(WebApplicationType.NONE); application.setWebApplicationType(WebApplicationType.NONE);
@@ -39,6 +40,18 @@ public class TechnobeeServiceInstallerApplication implements CommandLineRunner {
} }
} }
static void disableAccidentalSpringDebug(String[] args) {
boolean debugRequested = Arrays.stream(args)
.anyMatch(argument -> "--debug".equals(argument)
|| "--debug=true".equalsIgnoreCase(argument));
if (!debugRequested && System.getProperty("debug") == null) {
// DEBUG is commonly exported by developer tools with non-boolean
// values. Spring maps it to its own debug switch unless a more
// specific system property is present.
System.setProperty("debug", "false");
}
}
@Override @Override
public void run(String... args) { public void run(String... args) {
boolean cli = Arrays.asList(args).contains("--cli"); boolean cli = Arrays.asList(args).contains("--cli");

View File

@@ -0,0 +1,29 @@
package com.cygnus.installer;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
class TechnobeeServiceInstallerApplicationTest {
@AfterEach
void clearDebugProperty() {
System.clearProperty("debug");
}
@Test
void disablesDebugUnlessExplicitlyRequested() {
TechnobeeServiceInstallerApplication.disableAccidentalSpringDebug(new String[0]);
assertThat(System.getProperty("debug")).isEqualTo("false");
}
@Test
void preservesExplicitDebugRequest() {
TechnobeeServiceInstallerApplication.disableAccidentalSpringDebug(
new String[] {"--debug"});
assertThat(System.getProperty("debug")).isNull();
}
}

View File

@@ -1,9 +1,7 @@
package lib.constants; package lib.constants;
import java.util.Arrays; /** Canonical user-facing messages shared by Cygnus applications. */
public enum ApplicationMessage {
/** Canonical user-facing errors shared by Cygnus applications. */
public enum ApplicationError {
BAD_REQUEST(400, "HTTP-400", "Invalid request", BAD_REQUEST(400, "HTTP-400", "Invalid request",
"Cygnus could not process the submitted request.", "Cygnus could not process the submitted request.",
"Review the supplied information and try again."), "Review the supplied information and try again."),
@@ -28,6 +26,37 @@ public enum ApplicationError {
TOO_MANY_REQUESTS(429, "HTTP-429", "Too many requests", TOO_MANY_REQUESTS(429, "HTTP-429", "Too many requests",
"Cygnus has received too many requests in a short period.", "Cygnus has received too many requests in a short period.",
"Wait briefly before trying again."), "Wait briefly before trying again."),
PAYLOAD_INVALID(400, "REQ-4001", "Invalid request details",
"The encrypted request could not be verified.",
"Refresh the page and submit the form again."),
APPLICATION_VALIDATION_FAILED(422, "APP-4221", "Application validation failed",
"One or more application fields contain invalid information.",
"Correct the highlighted fields and submit the application again."),
APPLICATION_ACCESS_DENIED(403, "APP-4031", "Application access denied",
"The selected portfolio or application is not available to your account.",
"Select an authorized portfolio or contact your administrator."),
APPLICATION_SAVE_CONFLICT(409, "APP-4091", "Application save conflict",
"This request was already processed or the application changed.",
"Refresh the application before submitting it again."),
APPLICATION_SAVED(200, "APP-2001", "Application saved",
"The application details were saved successfully.", ""),
APPLICATIONS_LOADED(200, "APP-2002", "Applications loaded",
"The application records were loaded successfully.", ""),
DEDUPE_CHECK_COMPLETED(200, "DDP-2001", "Dedupe check completed",
"The dedupe check completed successfully.", ""),
DEDUPE_CHECK_FAILED(500, "DDP-5001", "Dedupe check failed",
"Cygnus could not complete the dedupe check.",
"Try again. If the issue continues, contact support."),
DEDUPE_DETAILS_LOADED(200, "DDP-2002", "Dedupe details loaded",
"Matching records were loaded successfully.", ""),
DEDUPE_DETAILS_SAVED(200, "DDP-2003", "Dedupe details saved",
"Dedupe remarks were saved successfully.", ""),
APPLICATION_LOAD_FAILED(500, "APP-5002", "Applications could not be loaded",
"Cygnus could not load the application details.",
"Try again. If the issue continues, share the reference ID with support."),
APPLICATION_SAVE_FAILED(500, "APP-5001", "Application could not be saved",
"Cygnus could not save the application details.",
"Try again. If the issue continues, share the reference ID with support."),
INTERNAL_SERVER_ERROR(500, "HTTP-500", "Something went wrong", INTERNAL_SERVER_ERROR(500, "HTTP-500", "Something went wrong",
"Cygnus could not complete your request.", "Cygnus could not complete your request.",
"Try again. If the issue continues, share the reference ID with support."), "Try again. If the issue continues, share the reference ID with support."),
@@ -47,7 +76,7 @@ public enum ApplicationError {
private final String message; private final String message;
private final String description; private final String description;
ApplicationError( ApplicationMessage(
int httpStatus, String code, String title, String message, String description) { int httpStatus, String code, String title, String message, String description) {
this.httpStatus = httpStatus; this.httpStatus = httpStatus;
this.code = code; this.code = code;
@@ -56,11 +85,21 @@ public enum ApplicationError {
this.description = description; this.description = description;
} }
public static ApplicationError fromHttpStatus(int status) { public static ApplicationMessage fromHttpStatus(int status) {
return Arrays.stream(values()) return switch (status) {
.filter(error -> error.httpStatus == status) case 400 -> BAD_REQUEST;
.findFirst() case 401 -> SESSION_REQUIRED;
.orElse(INTERNAL_SERVER_ERROR); case 403 -> ACCESS_DENIED;
case 404 -> PAGE_NOT_FOUND;
case 405 -> METHOD_NOT_ALLOWED;
case 409 -> CONFLICT;
case 413 -> PAYLOAD_TOO_LARGE;
case 429 -> TOO_MANY_REQUESTS;
case 502 -> BAD_GATEWAY;
case 503 -> SERVICE_UNAVAILABLE;
case 504 -> GATEWAY_TIMEOUT;
default -> INTERNAL_SERVER_ERROR;
};
} }
public int getHttpStatus() { return httpStatus; } public int getHttpStatus() { return httpStatus; }

View File

@@ -0,0 +1,20 @@
package lib.exceptions;
import lib.constants.ApplicationMessage;
/** Single typed application exception carrying a safe user-facing message. */
public class ApplicationException extends RuntimeException {
private final ApplicationMessage applicationMessage;
public ApplicationException(ApplicationMessage message, String technicalMessage) {
super(technicalMessage);
this.applicationMessage = message;
}
public ApplicationException(ApplicationMessage message, String technicalMessage, Throwable cause) {
super(technicalMessage, cause);
this.applicationMessage = message;
}
public ApplicationMessage getApplicationMessage() { return applicationMessage; }
}

View File

@@ -0,0 +1,16 @@
package lib.models;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
@Data
public class Allocation {
private List<CutOffRecord> allocationlist = new ArrayList<>();
private String allocTime;
private String errMsg;
private String errDesc;
private String errCode;
private String sessUUID;
private boolean processFlag;
}

View File

@@ -0,0 +1,12 @@
package lib.models;
/** Consistent API response contract for every migrated workflow. */
public record ApiResponse<T>(boolean success, T data, MessageDetails message) {
public static <T> ApiResponse<T> success(T data, MessageDetails message) {
return new ApiResponse<>(true, data, message);
}
public static <T> ApiResponse<T> failure(MessageDetails message) {
return new ApiResponse<>(false, null, message);
}
}

View File

@@ -0,0 +1,87 @@
package lib.models;
import java.io.Serial;
import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Map;
import lombok.Getter;
import lombok.Setter;
/** User-editable case initiation data. Identity and audit fields come from UserSession. */
@Getter
@Setter
public class ApplicationDetails implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
private Integer applicationId;
private Short portfolioId;
private Short bankBranchId;
private String applicationNumber;
private String bankCode;
private String product;
private String loanAmount;
private String customerName;
private String fatherName;
private String applicationType;
private String category;
private String dateOfBirth;
private String contactPerson;
private String mobileNumber;
private String specialInstruction;
private Boolean residenceVerification;
private Boolean residenceTelephoneVerification;
private Boolean officeVerification;
private Boolean officeTelephoneVerification;
private Boolean propertyVerification;
private Boolean referenceVerification;
private Boolean documentVerification;
private Boolean residenceCoApplicant;
private Boolean residenceCoProprietor;
private Boolean officeCoProprietor;
private Boolean sameResidenceAddress;
private Boolean sameOfficeAddress;
private Boolean samePropertyAddress;
private String residenceAddress1;
private String residenceAddress2;
private String residenceAddress3;
private String residenceLandmark;
private Integer residenceColonyId;
private String residenceCity;
private String residencePincode;
private String residencePhone;
private String companyName;
private String officeAddress1;
private String officeAddress2;
private String officeAddress3;
private String officeLandmark;
private Integer officeColonyId;
private String officeCity;
private String officePincode;
private String department;
private String designation;
private String officePhone;
private String extension;
private String propertyAddress1;
private String propertyAddress2;
private String propertyAddress3;
private String propertyLandmark;
private Integer propertyColonyId;
private String propertyCity;
private String propertyPincode;
private String referenceName1;
private String referenceAddress1;
private String referenceContactNumber1;
private String referenceName2;
private String referenceAddress2;
private String referenceContactNumber2;
private Map<String, String> dynamicFields = new LinkedHashMap<>();
private Boolean autoCutOff;
private Integer formMode;
}

View File

@@ -0,0 +1,4 @@
package lib.models;
/** Data returned after saving a loan-verification application. */
public record ApplicationSaveData(String operation, Integer applicationId, String mvCode) {}

View File

@@ -0,0 +1,16 @@
package lib.models;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
/** Result row returned by the application-save database operation. */
@Getter
@Setter
@NoArgsConstructor
public class ApplicationSaveResult {
private String operation;
private Integer applicationId;
private String mvCode;
private String internalUuid;
}

View File

@@ -0,0 +1,13 @@
package lib.models;
import lombok.Data;
@Data
public class CaseGrid {
private String errMsg;
private String errDesc;
private String errCode;
private boolean processFlag;
private String portfolioId;
private String caseID;
}

View File

@@ -9,11 +9,11 @@ import lombok.Setter;
@Getter @Getter
@Setter @Setter
public class CasePunching { public class CasePunching {
private ErrorDetails errorDetails; private MessageDetails messageDetails;
private Map<String, String> optionsl; private Map<String, String> optionsl;
private Map<String, List<Option>> options; private Map<String, List<Option>> options;
private List<String> visibleSections; private List<String> visibleSections;
private Integer portfolioId; private Short portfolioId;
private Integer formMode; private Integer formMode;
private String userId; private String userId;
private String dynamicFields; private String dynamicFields;

View File

@@ -0,0 +1,11 @@
package lib.models;
/** Hybrid RSA-OAEP/AES-GCM envelope submitted by the initiation page. */
public record CaseSaveRequest(
String keyId,
String encryptedKey,
String initializationVector,
String encryptedPayload,
String requestId,
String timestamp) {
}

View File

@@ -0,0 +1,17 @@
package lib.models;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
@Data
public class CutOffList {
private List<CutOffRecord> cofflist = new ArrayList<>();
private String cutoffTime;
private String batch;
private String errMsg;
private String errDesc;
private String errCode;
private String sessUUID;
private boolean processFlag;
}

View File

@@ -0,0 +1,41 @@
package lib.models;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
@Data
public class CutOffRecord {
private List<CutOffRecord> sublist = new ArrayList<>();
private String portfolioid;
private String portname;
private String customername;
private String apptype;
private String mvcode;
private String applno;
private boolean allocation;
private boolean sms;
private boolean telesheet;
private boolean earlier;
private boolean negative;
private int islocked;
private String lockedby;
private boolean docut;
private int ischanged;
private int totrv;
private int totov;
private int totpv;
private int totrtv;
private int tototv;
private int totref;
private boolean tv;
private boolean oprsend;
private String resiloc;
private String offloc;
private String proploc;
private String uuid;
private String repformat;
private String repfunction;
private String message;
private String portgroup;
}

View File

@@ -0,0 +1,21 @@
package lib.models;
import java.util.ArrayList;
import java.util.List;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
public class DedupeBatch {
private List<DedupeCase> cases = new ArrayList<>();
private String cutoffKey;
private String cutoffon;
private int totalAddresses;
private int totalCases;
private int islocked;
private String lockedby;
private Integer lockOwnerId;
}

View File

@@ -0,0 +1,22 @@
package lib.models;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
public class DedupeCase {
private String mvcode;
private String applno;
private String customername;
private String apptype;
private String uuid;
private int totrv;
private int totov;
private int totpv;
private String earlier;
private String negative;
private String lockedby;
}

View File

@@ -0,0 +1,20 @@
package lib.models;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Getter
@NoArgsConstructor
public class DedupeCaseSummary {
private String documentCaseId;
private Integer portfolioId;
private String mvCode;
private String fileNumber;
private String customerName;
private String applicationType;
private int residenceVisits;
private int officeVisits;
private int propertyVisits;
private String receivedOn;
private String done;
}

View File

@@ -0,0 +1,3 @@
package lib.models;
public record DedupeCheckData(String documentCaseId, int operation) { }

View File

@@ -0,0 +1,3 @@
package lib.models;
public record DedupeCheckRequest(String documentCaseId, int operation) { }

View File

@@ -0,0 +1,20 @@
package lib.models;
import lombok.Data;
@Data
public class DedupeDetails {
private String sessuuid;
private String uuid;
private String mvcode;
private String customername;
private String dob;
private String mobile;
private String resiaddress;
private String offaddress;
private String resiphone;
private String offphone;
private String earremarks;
private String negremarks;
private String category;
}

View File

@@ -0,0 +1,17 @@
package lib.models;
import lombok.Data;
@Data
public class DedupeMatchRecord {
private String dedupeType;
private String foundOn;
private String remarks;
private String customerName;
private String dob;
private String residenceAddress;
private String officeAddress;
private String residencePhone;
private String officePhone;
private String mobile;
}

View File

@@ -0,0 +1,17 @@
package lib.models;
import java.util.ArrayList;
import java.util.List;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
public class DedupeRun {
private List<DedupeBatch> batches = new ArrayList<>();
private String dedcutTime;
private String errMsg;
private String csrfToken;
}

View File

@@ -0,0 +1,21 @@
package lib.models;
import lombok.Data;
@Data
public class DedupeSendCase {
private String uuid;
private String mvcode;
private String applno;
private String customername;
private String apptype;
private String product;
private String earlier;
private String negative;
private String deduperunon;
private String bkbranchname;
private String fid;
private int dqid;
private String portname;
private String supervisor;
}

View File

@@ -0,0 +1,16 @@
package lib.models;
import java.util.ArrayList;
import java.util.List;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@NoArgsConstructor
public class DedupeWorkspace {
private Integer portfolioId;
private List<Option> portfolios = new ArrayList<>();
private List<DedupeCaseSummary> cases = new ArrayList<>();
}

View File

@@ -0,0 +1,15 @@
package lib.models;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/** Existing application details used by the case-initiation duplicate checks. */
public record DuplicateDetailsData(List<Map<String, Object>> records) {
public DuplicateDetailsData {
records = records == null ? List.of() : records.stream()
.map(record -> Collections.unmodifiableMap(new LinkedHashMap<>(record)))
.toList();
}
}

View File

@@ -0,0 +1,19 @@
package lib.models;
import lombok.Getter;
import lombok.NoArgsConstructor;
@Getter
@NoArgsConstructor
public class EditCaseSummary {
private String documentCaseId;
private String mvCode;
private String fileNumber;
private String customerName;
private String applicationType;
private String product;
private String receivedOn;
private String punchedBy;
private String branchCode;
private Short portfolioId;
}

View File

@@ -0,0 +1,10 @@
package lib.models;
import java.util.List;
/** Localities returned to the case-initiation autocomplete. */
public record LocalityData(List<LocalityOption> localities) {
public LocalityData {
localities = localities == null ? List.of() : List.copyOf(localities);
}
}

View File

@@ -0,0 +1,4 @@
package lib.models;
/** One company-authorized locality autocomplete result. */
public record LocalityOption(Integer id, String location, String pincode, String city) {}

View File

@@ -1,6 +1,6 @@
package lib.models; package lib.models;
import lib.constants.ApplicationError; import lib.constants.ApplicationMessage;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.time.Instant; import java.time.Instant;
@@ -10,37 +10,37 @@ import lombok.Getter;
/** Dependency-free error information shared across Cygnus modules. */ /** Dependency-free error information shared across Cygnus modules. */
@Getter @Getter
public final class ErrorDetails implements Serializable { public final class MessageDetails implements Serializable {
@Serial @Serial
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private final int httpStatus; private final int httpStatus;
private final String errorCode; private final String code;
private final String title; private final String title;
private final String message; private final String message;
private final String description; private final String description;
private final String referenceId; private final String referenceId;
private final Instant timestamp; private final Instant timestamp;
public ErrorDetails(ApplicationError error) { public MessageDetails(ApplicationMessage message) {
this(error.getHttpStatus(), error.getCode(), error.getTitle(), this(message.getHttpStatus(), message.getCode(), message.getTitle(),
error.getMessage(), error.getDescription(), message.getMessage(), message.getDescription(),
UUID.randomUUID().toString(), Instant.now()); UUID.randomUUID().toString(), Instant.now());
} }
private ErrorDetails( private MessageDetails(
int httpStatus, int httpStatus,
String errorCode, String code,
String title, String title,
String message, String message,
String description, String description,
String referenceId, String referenceId,
Instant timestamp) { Instant timestamp) {
if (httpStatus < 400 || httpStatus > 599) { if (httpStatus < 100 || httpStatus > 599) {
throw new IllegalArgumentException("HTTP error status must be between 400 and 599"); throw new IllegalArgumentException("HTTP status must be between 100 and 599");
} }
this.httpStatus = httpStatus; this.httpStatus = httpStatus;
this.errorCode = required(errorCode, "errorCode"); this.code = required(code, "code");
this.title = required(title, "title"); this.title = required(title, "title");
this.message = required(message, "message"); this.message = required(message, "message");
this.description = description == null ? "" : description.trim(); this.description = description == null ? "" : description.trim();

View File

@@ -8,5 +8,6 @@ import lombok.Setter;
public class Option { public class Option {
private Object value; private Object value;
private String label; private String label;
private String description;
private String group; private String group;
} }

View File

@@ -0,0 +1,12 @@
package lib.models;
import lombok.Data;
@Data
public class PhotoCases {
private String errMsg;
private String errDesc;
private String errCode;
private String sessUUID;
private boolean processFlag;
}

View File

@@ -0,0 +1,15 @@
package lib.models;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Collections;
/** Form-shaped punched applications returned to the case-initiation workspace. */
public record PunchedRecordsData(List<Map<String, Object>> records) {
public PunchedRecordsData {
records = records == null ? List.of() : records.stream()
.map(record -> Collections.unmodifiableMap(new LinkedHashMap<>(record)))
.toList();
}
}

View File

@@ -0,0 +1,17 @@
package lib.models;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
@Data
public class ReferenceSheet {
private List<CutOffRecord> tvrlist = new ArrayList<>();
private String teleSheetTime;
private String errMsg;
private String errDesc;
private String errCode;
private String sessUUID;
private boolean processFlag;
private String telePDFLink;
}

View File

@@ -0,0 +1,17 @@
package lib.models;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
@Data
public class SendDedupe {
private Integer portfolioid;
private String portname;
private String supervisor;
private int dqid;
private String fid;
private List<DedupeSendCase> caselist = new ArrayList<>();
private String suuid;
private String uuids;
}

View File

@@ -0,0 +1,16 @@
package lib.models;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
@Data
public class SendToOperation {
private List<CutOffRecord> caselist = new ArrayList<>();
private String sendTime;
private String errMsg;
private String errDesc;
private String errCode;
private String sessUUID;
private boolean processFlag;
}

View File

@@ -0,0 +1,17 @@
package lib.models;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
@Data
public class Telesheet {
private List<CutOffRecord> tvrlist = new ArrayList<>();
private String teleSheetTime;
private String errMsg;
private String errDesc;
private String errCode;
private String sessUUID;
private boolean processFlag;
private String telePDFLink;
}

View File

@@ -0,0 +1,29 @@
package lib.models;
import java.io.Serial;
import java.io.Serializable;
import lombok.Builder;
import lombok.Value;
/** Immutable, type-safe representation of an authenticated Cygnus user. */
@Value
@Builder
public class UserSession implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
Short companyId;
String companyName;
String companyCode;
Short branchId;
String branchName;
String branchCode;
String branchLocation;
Short userId;
String username;
String userDisplayName;
Short userGroupId;
String userGroupName;
String loginTime;
String menuHtml;
}

View File

@@ -1,22 +0,0 @@
package lib.models;
import lib.constants.ApplicationError;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
class ErrorDetailsTest {
@Test
void createsAReusableErrorContract() {
ErrorDetails details = new ErrorDetails(ApplicationError.ACCESS_DENIED);
assertEquals(403, details.getHttpStatus());
assertEquals("AUTH-403", details.getErrorCode());
}
@Test
void mapsHttpStatusToCanonicalError() {
assertEquals(ApplicationError.PAGE_NOT_FOUND, ApplicationError.fromHttpStatus(404));
assertEquals(ApplicationError.INTERNAL_SERVER_ERROR,
ApplicationError.fromHttpStatus(599));
}
}

View File

@@ -0,0 +1,22 @@
package lib.models;
import lib.constants.ApplicationMessage;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
class MessageDetailsTest {
@Test
void createsAReusableErrorContract() {
MessageDetails details = new MessageDetails(ApplicationMessage.ACCESS_DENIED);
assertEquals(403, details.getHttpStatus());
assertEquals("AUTH-403", details.getCode());
}
@Test
void mapsHttpStatusToCanonicalError() {
assertEquals(ApplicationMessage.PAGE_NOT_FOUND, ApplicationMessage.fromHttpStatus(404));
assertEquals(ApplicationMessage.INTERNAL_SERVER_ERROR,
ApplicationMessage.fromHttpStatus(599));
}
}

View File

@@ -1,3 +0,0 @@
artifactId=cygnus-lib
groupId=com.cygnus
version=1.0.0-SNAPSHOT

View File

@@ -1,3 +0,0 @@
lib/models/ErrorDetails.class
lib/models/CasePunching.class
lib/constants/ApplicationError.class

View File

@@ -1,4 +0,0 @@
/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/constants/ApplicationError.java
/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/CasePunching.java
/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/ErrorDetails.java
/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/main/java/lib/models/Option.java

View File

@@ -1 +0,0 @@
/Users/maddy/Projects/cygnus/matrix/cygnus-lib/src/test/java/lib/models/ErrorDetailsTest.java

View File

@@ -1,64 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<testsuite xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report.xsd" version="3.0.2" name="lib.models.ErrorDetailsTest" time="0.024" tests="2" errors="0" skipped="0" failures="0">
<properties>
<property name="java.specification.version" value="25"/>
<property name="sun.jnu.encoding" value="UTF-8"/>
<property name="java.class.path" value="/Users/maddy/Projects/cygnus/matrix/cygnus-lib/target/test-classes:/Users/maddy/Projects/cygnus/matrix/cygnus-lib/target/classes:/Users/maddy/.m2/repository/org/projectlombok/lombok/1.18.46/lombok-1.18.46.jar:/Users/maddy/.m2/repository/org/junit/jupiter/junit-jupiter/5.12.2/junit-jupiter-5.12.2.jar:/Users/maddy/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.12.2/junit-jupiter-api-5.12.2.jar:/Users/maddy/.m2/repository/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.jar:/Users/maddy/.m2/repository/org/junit/platform/junit-platform-commons/1.12.2/junit-platform-commons-1.12.2.jar:/Users/maddy/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/maddy/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.12.2/junit-jupiter-params-5.12.2.jar:/Users/maddy/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.12.2/junit-jupiter-engine-5.12.2.jar:/Users/maddy/.m2/repository/org/junit/platform/junit-platform-engine/1.12.2/junit-platform-engine-1.12.2.jar:"/>
<property name="java.vm.vendor" value="Homebrew"/>
<property name="sun.arch.data.model" value="64"/>
<property name="java.vendor.url" value="https://github.com/Homebrew/homebrew-core/issues"/>
<property name="os.name" value="Mac OS X"/>
<property name="java.vm.specification.version" value="25"/>
<property name="sun.java.launcher" value="SUN_STANDARD"/>
<property name="user.country" value="US"/>
<property name="sun.boot.library.path" value="/opt/homebrew/Cellar/openjdk/25.0.2/libexec/openjdk.jdk/Contents/Home/lib"/>
<property name="sun.java.command" value="/Users/maddy/Projects/cygnus/matrix/cygnus-lib/target/surefire/surefirebooter-20260801204253825_3.jar /Users/maddy/Projects/cygnus/matrix/cygnus-lib/target/surefire 2026-08-01T20-42-53_787-jvmRun1 surefire-20260801204253825_1tmp surefire_0-20260801204253825_2tmp"/>
<property name="http.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
<property name="jdk.debug" value="release"/>
<property name="surefire.test.class.path" value="/Users/maddy/Projects/cygnus/matrix/cygnus-lib/target/test-classes:/Users/maddy/Projects/cygnus/matrix/cygnus-lib/target/classes:/Users/maddy/.m2/repository/org/projectlombok/lombok/1.18.46/lombok-1.18.46.jar:/Users/maddy/.m2/repository/org/junit/jupiter/junit-jupiter/5.12.2/junit-jupiter-5.12.2.jar:/Users/maddy/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.12.2/junit-jupiter-api-5.12.2.jar:/Users/maddy/.m2/repository/org/opentest4j/opentest4j/1.3.0/opentest4j-1.3.0.jar:/Users/maddy/.m2/repository/org/junit/platform/junit-platform-commons/1.12.2/junit-platform-commons-1.12.2.jar:/Users/maddy/.m2/repository/org/apiguardian/apiguardian-api/1.1.2/apiguardian-api-1.1.2.jar:/Users/maddy/.m2/repository/org/junit/jupiter/junit-jupiter-params/5.12.2/junit-jupiter-params-5.12.2.jar:/Users/maddy/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.12.2/junit-jupiter-engine-5.12.2.jar:/Users/maddy/.m2/repository/org/junit/platform/junit-platform-engine/1.12.2/junit-platform-engine-1.12.2.jar:"/>
<property name="sun.cpu.endian" value="little"/>
<property name="user.home" value="/Users/maddy"/>
<property name="user.language" value="en"/>
<property name="java.specification.vendor" value="Oracle Corporation"/>
<property name="java.version.date" value="2026-01-20"/>
<property name="java.home" value="/opt/homebrew/Cellar/openjdk/25.0.2/libexec/openjdk.jdk/Contents/Home"/>
<property name="file.separator" value="/"/>
<property name="basedir" value="/Users/maddy/Projects/cygnus/matrix/cygnus-lib"/>
<property name="java.vm.compressedOopsMode" value="Zero based"/>
<property name="line.separator" value="&#10;"/>
<property name="java.vm.specification.vendor" value="Oracle Corporation"/>
<property name="java.specification.name" value="Java Platform API Specification"/>
<property name="apple.awt.application.name" value="ForkedBooter"/>
<property name="surefire.real.class.path" value="/Users/maddy/Projects/cygnus/matrix/cygnus-lib/target/surefire/surefirebooter-20260801204253825_3.jar"/>
<property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers"/>
<property name="ftp.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
<property name="java.runtime.version" value="25.0.2"/>
<property name="user.name" value="maddy"/>
<property name="stdout.encoding" value="UTF-8"/>
<property name="path.separator" value=":"/>
<property name="os.version" value="26.5.2"/>
<property name="java.runtime.name" value="OpenJDK Runtime Environment"/>
<property name="file.encoding" value="UTF-8"/>
<property name="java.vm.name" value="OpenJDK 64-Bit Server VM"/>
<property name="java.vendor.version" value="Homebrew"/>
<property name="localRepository" value="/Users/maddy/.m2/repository"/>
<property name="java.vendor.url.bug" value="https://github.com/Homebrew/homebrew-core/issues"/>
<property name="java.io.tmpdir" value="/var/folders/1l/36214rdn79755j30lcnmgsqh0000gn/T/"/>
<property name="java.version" value="25.0.2"/>
<property name="user.dir" value="/Users/maddy/Projects/cygnus/matrix/cygnus-lib"/>
<property name="os.arch" value="aarch64"/>
<property name="java.vm.specification.name" value="Java Virtual Machine Specification"/>
<property name="native.encoding" value="UTF-8"/>
<property name="java.library.path" value="/Users/maddy/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:."/>
<property name="java.vm.info" value="mixed mode, sharing"/>
<property name="stderr.encoding" value="UTF-8"/>
<property name="java.vendor" value="Homebrew"/>
<property name="java.vm.version" value="25.0.2"/>
<property name="stdin.encoding" value="UTF-8"/>
<property name="sun.io.unicode.encoding" value="UnicodeBig"/>
<property name="socksNonProxyHosts" value="local|*.local|169.254/16|*.169.254/16"/>
<property name="java.class.version" value="69.0"/>
</properties>
<testcase name="mapsHttpStatusToCanonicalError" classname="lib.models.ErrorDetailsTest" time="0.008"/>
<testcase name="createsAReusableErrorContract" classname="lib.models.ErrorDetailsTest" time="0.007"/>
</testsuite>

View File

@@ -1,4 +0,0 @@
-------------------------------------------------------------------------------
Test set: lib.models.ErrorDetailsTest
-------------------------------------------------------------------------------
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.024 s -- in lib.models.ErrorDetailsTest

View File

@@ -1,193 +1,196 @@
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%> pageEncoding="ISO-8859-1"%>
<%@page language="java" session="true" %> <%@page language="java" session="true" %>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script> <script src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/appjs/cutoff.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/edp/cutoff/cutoff.js?v=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/button.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/div.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/button.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/select.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/div.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/table.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/select.css" rel="stylesheet" type="text/css" />
<title>Cygnus 1.0 | Allocation</title> <link href="/matrix/css/table.css" rel="stylesheet" type="text/css" />
<title>Cygnus 1.0 | Allocation</title>
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" /> <link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
<link href="/matrix/css/cutoff-workflows-v1.css?v=1" rel="stylesheet" type="text/css" /> <link href="/matrix/css/cutoff-workflows-v1.css?v=4" rel="stylesheet" type="text/css" />
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script> <script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
<script src="/matrix/js/matrix-shell-v2.js" defer></script> <script src="/matrix/js/matrix-shell-v2.js" defer></script>
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script> <script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script> <script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
</head> </head>
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-cutoff-workflow"> <body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-cutoff-workflow">
<div id='PageFrame'> <div id='PageFrame'>
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %> <%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
<%-- Shared shell owns ${Sessvals.menuHtml}. --%> <%-- Shared shell owns ${Sessvals.menuHtml}. --%>
<div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1200px"> <div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1200px">
<form:form method="post" name="allocation" id="allocation" modelAttribute="allocation" > <form:form method="post" name="allocation" id="allocation" modelAttribute="allocation" >
<!-- Common Details (Section1) Visible for all portfolios--> <c:if test="${not empty _csrf}"><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /></c:if>
<div> <!-- Common Details (Section1) Visible for all portfolios-->
<!-- Title --> <div>
<div class="title"> <!-- Title -->
<img class="matrix-title-icon" src="/matrix/images/alloc.png" align="absmiddle" /> <div class="title">
<span class="matrix-title-text" align="absmiddle">Allocation</span> <img class="matrix-title-icon" src="/matrix/images/alloc.png" align="absmiddle" />
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="SubmitForm('allocation','_parent','allocation')"/> <span class="matrix-title-text" align="absmiddle">Allocation</span>
</div> <img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="return submitCutoffForm('allocation','allocation')"/>
<!-- --> </div>
<div id="TablePanel" class="tableContainer"> <!-- -->
<table border="0" cellspacing="0" width="100%" id="cutlist"> <div id="TablePanel" class="tableContainer">
<thead class="thead"> <table border="0" cellspacing="0" width="100%" id="cutlist">
<tr title="Row Title"> <thead class="thead">
<td width="6%">S.No</td> <tr title="Row Title">
<td width="65%">Portfolio</td> <td width="6%">S.No</td>
<td>RV</td> <td width="65%">Portfolio</td>
<td>OV</td> <td>RV</td>
<td>PV</td> <td>OV</td>
<td>Allocation</td> <td>PV</td>
</tr> <td>Allocation</td>
</thead> </tr>
<tbody class="scrollContent"> </thead>
<c:forEach items="${allocation.allocationlist}" var="record" varStatus="mystatus"> <tbody class="scrollContent">
<tr title="${record.lockedby}"> <c:forEach items="${allocation.allocationlist}" var="record" varStatus="mystatus">
<td>${mystatus.count}</td> <tr title="${record.lockedby}">
<td id="parent${mystatus.count}" onclick="ExpandList(this.id)" > <td>${mystatus.count}</td>
<form:hidden path="allocationlist[${mystatus.index}].lockedby" id="locby${mystatus.count}" value="${status.value}"/> <td id="parent${mystatus.count}" onclick="ExpandList(this.id)" >
<form:hidden path="allocationlist[${mystatus.index}].portfolioid" id="portid${mystatus.count}" value="${status.value}"/> <form:hidden path="allocationlist[${mystatus.index}].lockedby" id="locby${mystatus.count}" value="${status.value}"/>
<form:hidden path="allocationlist[${mystatus.index}].portname" id="portname${mystatus.count}" value="${status.value}"/> <form:hidden path="allocationlist[${mystatus.index}].portfolioid" id="portid${mystatus.count}" value="${status.value}"/>
<span class="customLink" style="cursor:pointer">${record.portname}</span> <form:hidden path="allocationlist[${mystatus.index}].portname" id="portname${mystatus.count}" value="${status.value}"/>
</td> <span class="customLink" style="cursor:pointer">${record.portname}</span>
<td> </td>
<form:hidden path="allocationlist[${mystatus.index}].totrv" id="totrv${mystatus.count}" value="${status.value}"/>${record.totrv} <td>
</td> <form:hidden path="allocationlist[${mystatus.index}].totrv" id="totrv${mystatus.count}" value="${status.value}"/>${record.totrv}
<td> </td>
<form:hidden path="allocationlist[${mystatus.index}].totov" id="totov${mystatus.count}" value="${status.value}"/>${record.totov} <td>
</td> <form:hidden path="allocationlist[${mystatus.index}].totov" id="totov${mystatus.count}" value="${status.value}"/>${record.totov}
<td> </td>
<form:hidden path="allocationlist[${mystatus.index}].totpv" id="totpv${mystatus.count}" value="${status.value}"/>${record.totpv} <td>
</td> <form:hidden path="allocationlist[${mystatus.index}].totpv" id="totpv${mystatus.count}" value="${status.value}"/>${record.totpv}
<td align="center"> </td>
<form:hidden path="allocationlist[${mystatus.index}].islocked" id="locked${mystatus.count}" value="${status.value}" /> <td align="center">
<c:choose> <form:hidden path="allocationlist[${mystatus.index}].islocked" id="locked${mystatus.count}" value="${status.value}" />
<c:when test="${record.islocked gt 0}"> <c:choose>
<img src="/matrix/images/locked.png"/> <c:when test="${record.islocked gt 0}">
<form:checkbox path="allocationlist[${mystatus.index}].allocation" id="chkalloc${mystatus.count}" value="true" style="display:none" /> <img src="/matrix/images/locked.png"/>
</c:when> <form:checkbox path="allocationlist[${mystatus.index}].allocation" id="chkalloc${mystatus.count}" value="true" style="display:none" />
<c:otherwise> </c:when>
<form:checkbox path="allocationlist[${mystatus.index}].allocation" id="chkalloc${mystatus.count}" value="true" onclick="ToggleChecks('chkchild${mystatus.count}alloc',this.checked)" /> <c:otherwise>
</c:otherwise> <form:checkbox path="allocationlist[${mystatus.index}].allocation" id="chkalloc${mystatus.count}" value="true" onclick="ToggleChecks('chkchild${mystatus.count}alloc',this.checked)" />
</c:choose> </c:otherwise>
</td> </c:choose>
</tr> </td>
<tr style="display:none" id="parent${mystatus.count}child" > </tr>
<c:choose> <tr style="display:none" id="parent${mystatus.count}child" >
<c:when test="${record.islocked gt 0}"> <c:choose>
<td colspan="6" style="text-align:center;font-style: italic;color:#232323;text-transform: capitalize;">You can't see records locked by another user.</td> <c:when test="${record.islocked gt 0}">
</c:when> <td colspan="6" style="text-align:center;font-style: italic;color:#232323;text-transform: capitalize;">You can't see records locked by another user.</td>
<c:otherwise> </c:when>
<td colspan="6" align="right"> <c:otherwise>
<table cellspacing="0" cellpadding="0" border="0" width="94%" style="border-color: #49a5df"> <td colspan="6" align="right">
<thead class="thead"> <table cellspacing="0" cellpadding="0" border="0" width="94%" style="border-color: #49a5df">
<tr title="Heading"> <thead class="thead">
<td width="6%">S.No</td> <tr title="Heading">
<td>MV Code</td> <td width="6%">S.No</td>
<td>Appl No.</td> <td>MV Code</td>
<td>Customer Name</td> <td>Appl No.</td>
<td>Type</td> <td>Customer Name</td>
<td>RV</td> <td>Type</td>
<td>OV</td> <td>RV</td>
<td>PV</td> <td>OV</td>
<td>Alloc</td> <td>PV</td>
</tr> <td>Alloc</td>
</thead> </tr>
<tbody class="scrollContent"> </thead>
<c:forEach items="${record.sublist}" var="record1" varStatus="mystatus1"> <tbody class="scrollContent">
<tr title="${record1.lockedby}child"> <c:forEach items="${record.sublist}" var="record1" varStatus="mystatus1">
<td>${mystatus1.count}</td> <tr title="${record1.lockedby}child">
<td> <td>${mystatus1.count}</td>
<form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].lockedby" id="locby${mystatus1.count}child" value="${status.value}"/> <td>
<form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].mvcode" id="mvcode${mystatus1.count}child" value="${status.value}"/> <form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].lockedby" id="locby${mystatus1.count}child" value="${status.value}"/>
<form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].uuid" id="uuid${mystatus1.count}child" value="${status.value}"/> <form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].mvcode" id="mvcode${mystatus1.count}child" value="${status.value}"/>
<form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].portgroup" id="pgroup${mystatus1.count}child" value="${status.value}"/> <form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].uuid" id="uuid${mystatus1.count}child" value="${status.value}"/>
<span>${record1.mvcode}</span> <form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].portgroup" id="pgroup${mystatus1.count}child" value="${status.value}"/>
</td> <span>${record1.mvcode}</span>
<td> </td>
<form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].applno" id="applno${mystatus1.count}child" value="${status.value}"/>${record1.applno} <td>
</td> <form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].applno" id="applno${mystatus1.count}child" value="${status.value}"/>${record1.applno}
<td> </td>
<form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].customername" id="cname${mystatus1.count}child" value="${status.value}"/>${record1.customername} <td>
</td> <form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].customername" id="cname${mystatus1.count}child" value="${status.value}"/>${record1.customername}
<td> </td>
<form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].apptype" id="ctype${mystatus1.count}child" value="${status.value}"/>${record1.apptype} <td>
</td> <form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].apptype" id="ctype${mystatus1.count}child" value="${status.value}"/>${record1.apptype}
<td> </td>
<form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].totrv" id="totrv${mystatus1.count}child" value="${status.value}"/>${record1.totrv} <td>
<form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].resiloc" id="resiloc${mystatus1.count}child" value="${status.value}"/> <form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].totrv" id="totrv${mystatus1.count}child" value="${status.value}"/>${record1.totrv}
</td> <form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].resiloc" id="resiloc${mystatus1.count}child" value="${status.value}"/>
<td> </td>
<form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].totov" id="totov${mystatus1.count}child" value="${status.value}"/>${record1.totov} <td>
<form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].offloc" id="offloc${mystatus1.count}child" value="${status.value}"/> <form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].totov" id="totov${mystatus1.count}child" value="${status.value}"/>${record1.totov}
</td> <form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].offloc" id="offloc${mystatus1.count}child" value="${status.value}"/>
<td> </td>
<form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].totpv" id="totpv${mystatus1.count}child" value="${status.value}"/>${record1.totpv} <td>
<form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].proploc" id="proploc${mystatus1.count}child" value="${status.value}"/> <form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].totpv" id="totpv${mystatus1.count}child" value="${status.value}"/>${record1.totpv}
</td> <form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].proploc" id="proploc${mystatus1.count}child" value="${status.value}"/>
<td align="center"> </td>
<form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].islocked" id="locked${mystatus1.count}child" value="${status.value}" /> <td align="center">
<c:choose> <form:hidden path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].islocked" id="locked${mystatus1.count}child" value="${status.value}" />
<c:when test="${record1.islocked gt 0}"> <c:choose>
<img src="/matrix/images/locked.png"/> <c:when test="${record1.islocked gt 0}">
<form:checkbox path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].allocation" id="chkchild${mystatus.count}alloc${mystatus1.count}" value="true" style="display:none" /> <img src="/matrix/images/locked.png"/>
</c:when> <form:checkbox path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].allocation" id="chkchild${mystatus.count}alloc${mystatus1.count}" value="true" style="display:none" />
<c:otherwise> </c:when>
<form:checkbox path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].allocation" id="chkchild${mystatus.count}alloc${mystatus1.count}" value="true" onclick="checkList('chkchild${mystatus.count}alloc','chkalloc${mystatus.count}')" /> <c:otherwise>
</c:otherwise> <form:checkbox path="allocationlist[${mystatus.index}].sublist[${mystatus1.index}].allocation" id="chkchild${mystatus.count}alloc${mystatus1.count}" value="true" onclick="checkList('chkchild${mystatus.count}alloc','chkalloc${mystatus.count}')" />
</c:choose> </c:otherwise>
</td> </c:choose>
</tr> </td>
</c:forEach> </tr>
</tbody> </c:forEach>
</table> </tbody>
</td> </table>
</c:otherwise> </td>
</c:choose> </c:otherwise>
</tr> </c:choose>
</c:forEach> </tr>
</tbody> </c:forEach>
</table> </tbody>
</div> </table>
</div> </div>
<input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Save" id="btnsave" accesskey="S" onclick="return ValidateSubmitAllocation('allocation');" /> </div>
<form:hidden path="SessUUID" value="${allocation.getSessUUID()}"/> <div class="matrix-workflow-actions">
</form:form> <input type="button" class="button" name="btnsave" value="Save" id="btnsave" accesskey="S" onclick="return ValidateSubmitAllocation('allocation');" />
<input type="hidden" id="invalidfields" value="0" /> </div>
<input type="hidden" id="selectedports" value="0" /> </form:form>
</div> <input type="hidden" id="invalidfields" value="0" />
</div> <input type="hidden" id="selectedports" value="0" />
</body> </div>
<!-- Page Load Javascript --> </div>
<script language="javascript" type="text/javascript"> </body>
InitPage(); <!-- Page Load Javascript -->
</script> <script language="javascript" type="text/javascript">
<!-- --> InitPage();
<!-- Process Message --> </script>
<c:if test="${not empty allocation.getErrMsg()}"> <!-- -->
<script language="javascript" type="text/javascript"> CallMessage('${allocation.getErrMsg()}',5000,200,300); </script> <!-- Process Message -->
</c:if> <c:if test="${not empty allocation.getErrMsg()}">
<!-- --> <script>CygnusNotifications.showLegacy('${allocation.getErrMsg()}');</script>
</c:if>
<!-- -->
</html> </html>

View File

@@ -1,150 +1,155 @@
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%> pageEncoding="ISO-8859-1"%>
<%@page language="java" session="true" %> <%@page language="java" session="true" %>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script> <script src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/appjs/cutoff.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/edp/cutoff/cutoff.js?v=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/button.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/div.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/button.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/select.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/div.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/table.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/select.css" rel="stylesheet" type="text/css" />
<title>Cygnus 1.0 | Cut-Off List</title> <link href="/matrix/css/table.css" rel="stylesheet" type="text/css" />
<title>Cygnus 1.0 | Cut-Off List</title>
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" /> <link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
<link href="/matrix/css/cutoff-workflows-v1.css?v=1" rel="stylesheet" type="text/css" /> <link href="/matrix/css/cutoff-workflows-v1.css?v=3" rel="stylesheet" type="text/css" />
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script> <script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
<script src="/matrix/js/matrix-shell-v2.js" defer></script> <script src="/matrix/js/matrix-shell-v2.js" defer></script>
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script> <script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script> <script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
</head> </head>
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-cutoff-workflow"> <body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-cutoff-workflow">
<div id='PageFrame'> <div id='PageFrame'>
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %> <%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
<%-- Shared shell owns ${Sessvals.menuHtml}. --%> <%-- Shared shell owns ${Sessvals.menuHtml}. --%>
<div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1100px"> <div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1100px">
<form:form method="post" name="cutOff" id="cutOff" modelAttribute="cutOff" > <form:form method="post" name="cutOff" id="cutOff" modelAttribute="cutOff" >
<!-- Common Details (Section1) Visible for all portfolios--> <c:if test="${not empty _csrf}"><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /></c:if>
<div> <!-- Common Details (Section1) Visible for all portfolios-->
<!-- Title --> <div>
<div class="title"> <!-- Title -->
<img class="matrix-title-icon" src="/matrix/images/cutlist.png" align="absmiddle" /> <div class="title">
<span class="matrix-title-text" align="absmiddle">Cut-Off List</span> <img class="matrix-title-icon" src="/matrix/images/cutlist.png" align="absmiddle" />
<div class="divselect" id="divbatch" style="width:85px;position:absolute;top:3px;right:30px;"> <span class="matrix-title-text" align="absmiddle">Cut-Off List</span>
<form:select path="Batch" multiple="false" id="batchlist" style="width:103px" onblur="validate(this,'t','');"> <div class="matrix-cutoff-title-actions">
<form:option value="-1" label="BATCH" selected="true"/> <div class="divselect" id="divbatch">
<form:option value="AM" label="AM" /> <form:select path="Batch" multiple="false" id="batchlist" style="width:103px" onblur="validate(this,'t','');">
<form:option value="PM" label="PM" /> <form:option value="-1" label="BATCH" selected="true"/>
</form:select> <form:option value="AM" label="AM" />
</div> <form:option value="PM" label="PM" />
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="SubmitForm('cutoff','_parent','cutOff')"/> </form:select>
</div> </div>
<!-- --> <img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="return submitCutoffForm('cutOff','cutoff')"/>
<div id="TablePanel" class="tableContainer"> </div>
<table border="0" cellspacing="0" width="100%" id="cutlist"> </div>
<thead class="thead"> <!-- -->
<tr title="Row Title"> <div id="TablePanel" class="tableContainer">
<td width="6%">S.No</td> <table border="0" cellspacing="0" width="100%" id="cutlist">
<td width="40%">Portfolio</td> <thead class="thead">
<td>Allocation</td> <tr title="Row Title">
<td>SMS</td> <td width="6%">S.No</td>
<td>Telecalling</td> <td width="40%">Portfolio</td>
<td>Earlier</td> <td>Allocation</td>
<td>Negative</td> <td>SMS</td>
<td align="center"><input type="checkbox" name="selall" id="selall" onclick="ToggleChecks('chkrow',this.checked)" /></td> <td>Telecalling</td>
</tr> <td>Earlier</td>
</thead> <td>Negative</td>
<tbody class="scrollContent"> <td align="center"><input type="checkbox" name="selall" id="selall" onclick="ToggleChecks('chkrow',this.checked)" /></td>
<c:forEach items="${cutOff.cofflist}" var="record" varStatus="mystatus"> </tr>
<tr title="${ record.lockedby}"> </thead>
<td>${mystatus.count}</td> <tbody class="scrollContent">
<td> <c:forEach items="${cutOff.cofflist}" var="record" varStatus="mystatus">
<form:hidden path="cofflist[${mystatus.index}].lockedby" id="locby${mystatus.count}" value="${status.value}"/> <tr title="${ record.lockedby}">
<form:hidden path="cofflist[${mystatus.index}].portfolioid" id="portid${mystatus.count}" value="${status.value}"/> <td>${mystatus.count}</td>
<form:hidden path="cofflist[${mystatus.index}].portname" id="portname${mystatus.count}" value="${status.value}"/>${record.portname} <td>
</td> <form:hidden path="cofflist[${mystatus.index}].lockedby" id="locby${mystatus.count}" value="${status.value}"/>
<td align="center"> <form:hidden path="cofflist[${mystatus.index}].portfolioid" id="portid${mystatus.count}" value="${status.value}"/>
<form:checkbox path="cofflist[${mystatus.index}].allocation" id="alloc${mystatus.count}" value="true" /> <form:hidden path="cofflist[${mystatus.index}].portname" id="portname${mystatus.count}" value="${status.value}"/>${record.portname}
</td> </td>
<td align="center"> <td align="center">
<form:checkbox path="cofflist[${mystatus.index}].sms" id="sms${mystatus.count}" value="true" /> <form:checkbox path="cofflist[${mystatus.index}].allocation" id="alloc${mystatus.count}" value="true" />
</td> </td>
<td align="center"> <td align="center">
<form:checkbox path="cofflist[${mystatus.index}].telesheet" id="ts${mystatus.count}" value="true" /> <form:checkbox path="cofflist[${mystatus.index}].sms" id="sms${mystatus.count}" value="true" />
</td> </td>
<td align="center"> <td align="center">
<form:checkbox path="cofflist[${mystatus.index}].earlier" id="ear${mystatus.count}" value="true" /> <form:checkbox path="cofflist[${mystatus.index}].telesheet" id="ts${mystatus.count}" value="true" />
</td> </td>
<td align="center"> <td align="center">
<form:checkbox path="cofflist[${mystatus.index}].negative" id="neg${mystatus.count}" value="true"/> <form:checkbox path="cofflist[${mystatus.index}].earlier" id="ear${mystatus.count}" value="true" />
</td> </td>
<td align="center"> <td align="center">
<form:hidden path="cofflist[${mystatus.index}].islocked" id="locked${mystatus.count}" value="${status.value}" /> <form:checkbox path="cofflist[${mystatus.index}].negative" id="neg${mystatus.count}" value="true"/>
<c:choose> </td>
<c:when test="${record.islocked gt 0}"> <td align="center">
<img src="/matrix/images/locked.png"/> <form:hidden path="cofflist[${mystatus.index}].islocked" id="locked${mystatus.count}" value="${status.value}" />
<form:checkbox path="cofflist[${mystatus.index}].docut" id="lrow${mystatus.count}" value="true" style="display:none" /> <c:choose>
</c:when> <c:when test="${record.islocked gt 0}">
<c:otherwise> <img src="/matrix/images/locked.png"/>
<form:checkbox path="cofflist[${mystatus.index}].docut" id="chkrow${mystatus.count}" value="true" onclick="checkList('chkrow','selall')" /> <form:checkbox path="cofflist[${mystatus.index}].docut" id="lrow${mystatus.count}" value="true" style="display:none" />
</c:otherwise> </c:when>
</c:choose> <c:otherwise>
</td> <form:checkbox path="cofflist[${mystatus.index}].docut" id="chkrow${mystatus.count}" value="true" onclick="checkList('chkrow','selall')" />
</tr> </c:otherwise>
</c:forEach> </c:choose>
</tbody> </td>
</table> </tr>
</div> </c:forEach>
</div> </tbody>
<input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Save" id="btnsave" accesskey="S" onclick="return ValidateSubmitCutOff('cutOff');" /> </table>
<form:hidden path="CutoffTime" value="${cutOff.getCutoffTime()}"/> </div>
<form:hidden path="SessUUID" value="${cutOff.getSessUUID()}"/> </div>
</form:form> <div class="matrix-workflow-actions">
<input type="hidden" id="invalidfields" value="0" /> <input type="button" class="button" name="btnsave" value="Save" id="btnsave" accesskey="S" onclick="return ValidateSubmitCutOff('cutOff');" />
<input type="hidden" id="selectedports" value="0" /> </div>
</div> <form:hidden path="CutoffTime" value="${cutOff.getCutoffTime()}"/>
</div> </form:form>
</body> <input type="hidden" id="invalidfields" value="0" />
<!-- Page Load Javascript --> <input type="hidden" id="selectedports" value="0" />
<script language="javascript" type="text/javascript"> </div>
InitPage(); </div>
</script> </body>
<!-- --> <!-- Page Load Javascript -->
<!-- Process Message --> <script language="javascript" type="text/javascript">
<c:if test="${not empty cutOff.getErrMsg()}"> InitPage();
<script language="javascript" type="text/javascript"> CallMessage('${cutOff.getErrMsg()}',3000,200,300); </script> </script>
</c:if> <!-- -->
<!-- --> <!-- Process Message -->
<script> <c:if test="${not empty cutOff.getErrMsg()}">
$(document).ready(function(){ <script>CygnusNotifications.showLegacy('${fn:escapeXml(cutOff.getErrMsg())}');</script>
var date = new Date(); </c:if>
var hour = date.getHours(); <!-- -->
var minutes = date.getMinutes(); <script>
if((hour == 14 && minutes > 29) || hour > 14){ $(document).ready(function(){
$("#batchlist").val("PM"); var date = new Date();
} var hour = date.getHours();
else var minutes = date.getMinutes();
{ if((hour == 14 && minutes > 29) || hour > 14){
$("#batchlist").val("AM"); $("#batchlist").val("PM");
} }
}); else
</script> {
$("#batchlist").val("AM");
}
});
</script>
</html> </html>

View File

@@ -1,27 +1,28 @@
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%> pageEncoding="ISO-8859-1"%>
<%@page language="java" session="true" %> <%@page language="java" session="true" %>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script> <script src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/appjs/cutoff.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/excel.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/edp/cutoff/cutoff.js?v=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/excel.js" type="text/javascript"></script>
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/button.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/div.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/button.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/table.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/div.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/table.css" rel="stylesheet" type="text/css" />
<title>Cygnus 1.0 | Cases for Photograph</title>
<title>Cygnus 1.0 | Cases for Photograph</title>
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
@@ -33,98 +34,101 @@
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script> <script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script> <script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
</head> </head>
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-cutoff-workflow matrix-photo-case-workflow"> <body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-cutoff-workflow matrix-photo-case-workflow">
<div id='PageFrame'> <div id='PageFrame'>
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %> <%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
<%-- Shared shell owns ${Sessvals.menuHtml}. --%> <%-- Shared shell owns ${Sessvals.menuHtml}. --%>
<div id="formcontainer" class="matrix-tool-workspace__content"> <div id="formcontainer" class="matrix-tool-workspace__content">
<form:form method="post" name="pcases" id="pcases" modelAttribute="pcases" > <form:form method="post" name="pcases" id="pcases" modelAttribute="pcases" >
<div id="TablePanel" class="tableContainer"> <c:if test="${not empty _csrf}"><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /></c:if>
<table border="0" cellspacing="0" width="100%" id="cutlist"> <div id="TablePanel" class="tableContainer">
<thead class="thead"> <table border="0" cellspacing="0" width="100%" id="cutlist">
<tr title="Row Title"> <thead class="thead">
<td>MV Code</td> <tr title="Row Title">
<td>File No</td> <td>MV Code</td>
<td>Name</td> <td>File No</td>
<td>App Type</td> <td>Name</td>
<td>Portfolio</td> <td>App Type</td>
<td>Product</td> <td>Portfolio</td>
<td>Date</td> <td>Product</td>
<td colspan="2">Verifier</td> <td>Date</td>
</tr> <td colspan="2">Verifier</td>
</thead> </tr>
<tbody class="scrollContent"> </thead>
<c:forEach items="${caselist}" var="clist" varStatus="mystatus"> <tbody class="scrollContent">
<tr> <c:forEach items="${caselist}" var="clist" varStatus="mystatus">
<td style="font-size:8pt;font-weight:normal" id="form-${mystatus.index}"> <tr>
<input type='hidden' id='uuid-${mystatus.index}' name='uuid' value='${clist[0]}' /> <td style="font-size:8pt;font-weight:normal" id="form-${mystatus.index}">
<input type='hidden' id='fmvcode-${mystatus.index}' name='fmvcode' value='${clist[1]}' /> <input type='hidden' id='uuid-${mystatus.index}' name='uuid' value='${clist[0]}' />
<input type='hidden' id='applno-${mystatus.index}' name='applno' value='${clist[2]}' /> <input type='hidden' id='fmvcode-${mystatus.index}' name='fmvcode' value='${clist[1]}' />
<input type='hidden' id='customername-${mystatus.index}' name='customername' value='${clist[3]}' /> <input type='hidden' id='applno-${mystatus.index}' name='applno' value='${clist[2]}' />
<input type='hidden' id='apptype-${mystatus.index}' name='apptype' value='${clist[4]}' /> <input type='hidden' id='customername-${mystatus.index}' name='customername' value='${clist[3]}' />
<input type='hidden' id='visit-${mystatus.index}' name='visit' value='${clist[5]}' /> <input type='hidden' id='apptype-${mystatus.index}' name='apptype' value='${clist[4]}' />
<input type='hidden' id='addr-${mystatus.index}' name='addr' value='${clist[6]}' /> <input type='hidden' id='visit-${mystatus.index}' name='visit' value='${clist[5]}' />
<input type='hidden' id='city-${mystatus.index}' name='city' value='${clist[7]}' /> <input type='hidden' id='addr-${mystatus.index}' name='addr' value='${clist[6]}' />
<input type='hidden' id='pincode-${mystatus.index}' name='pincode' value='${clist[8]}' /> <input type='hidden' id='city-${mystatus.index}' name='city' value='${clist[7]}' />
<input type='hidden' id='phoneno-${mystatus.index}' name='phoneno' value='${clist[9]}' /> <input type='hidden' id='pincode-${mystatus.index}' name='pincode' value='${clist[8]}' />
<input type='hidden' id='notes-${mystatus.index}' name='notes' value='${clist[10]}' /> <input type='hidden' id='phoneno-${mystatus.index}' name='phoneno' value='${clist[9]}' />
<input type='hidden' id='verifiercode-${mystatus.index}' name='verifiercode' value='${clist[11]}' /> <input type='hidden' id='notes-${mystatus.index}' name='notes' value='${clist[10]}' />
<input type='hidden' id='portname-${mystatus.index}' name='portname' value='${clist[12]}' /> <input type='hidden' id='verifiercode-${mystatus.index}' name='verifiercode' value='${clist[11]}' />
<input type='hidden' id='product-${mystatus.index}' name='product' value='${clist[13]}' /> <input type='hidden' id='portname-${mystatus.index}' name='portname' value='${clist[12]}' />
<input type='hidden' id='contactperson-${mystatus.index}' name='contactperson' value='${clist[14]}' /> <input type='hidden' id='product-${mystatus.index}' name='product' value='${clist[13]}' />
<input type='hidden' id='addedon-${mystatus.index}' name='addedon' value='${clist[15]}' /> <input type='hidden' id='contactperson-${mystatus.index}' name='contactperson' value='${clist[14]}' />
<input type='hidden' id='istrans-${mystatus.index}' name='istrans' value='${clist[16]}' /> <input type='hidden' id='addedon-${mystatus.index}' name='addedon' value='${clist[15]}' />
<input type='hidden' id='reqp-${mystatus.index}' name='reqp' value='${clist[17]}' /> <input type='hidden' id='istrans-${mystatus.index}' name='istrans' value='${clist[16]}' />
<input type='hidden' id='usid-${mystatus.index}' name='usid' value='${Sessvals.getUserID()}' /> <input type='hidden' id='reqp-${mystatus.index}' name='reqp' value='${clist[17]}' />
<input type='hidden' id='upstatus-${mystatus.index}' name='upstatus' value='0' /> <input type='hidden' id='usid-${mystatus.index}' name='usid' value='${Sessvals.getUserID()}' />
<input type='hidden' id='svstatus-${mystatus.index}' name='svstatus' value='0' /> <input type='hidden' id='upstatus-${mystatus.index}' name='upstatus' value='0' />
${clist[1]} <input type='hidden' id='svstatus-${mystatus.index}' name='svstatus' value='0' />
</td> ${clist[1]}
<td style="font-size:8pt;font-weight:normal"> </td>
${clist[2]} <td style="font-size:8pt;font-weight:normal">
</td> ${clist[2]}
<td style="font-size:8pt;font-weight:normal"> </td>
${clist[3]} <td style="font-size:8pt;font-weight:normal">
</td> ${clist[3]}
<td style="font-size:8pt;font-weight:normal"> </td>
${clist[4]} <td style="font-size:8pt;font-weight:normal">
</td> ${clist[4]}
<td style="font-size:8pt;font-weight:normal"> </td>
${clist[12]} <td style="font-size:8pt;font-weight:normal">
</td> ${clist[12]}
<td style="font-size:8pt;font-weight:normal"> </td>
${clist[13]} <td style="font-size:8pt;font-weight:normal">
</td> ${clist[13]}
<td style="font-size:8pt;font-weight:normal"> </td>
${clist[15]} <td style="font-size:8pt;font-weight:normal">
</td> ${clist[15]}
<td id="upid-${mystatus.index}" style="font-size:8pt;font-weight:normal"> </td>
${clist[11]} <td id="upid-${mystatus.index}" style="font-size:8pt;font-weight:normal">
</td> ${clist[11]}
<td id="vid-${mystatus.index}" style="font-size:8pt;font-weight:normal"> </td>
${clist[11]} <td id="vid-${mystatus.index}" style="font-size:8pt;font-weight:normal">
</td> ${clist[11]}
</tr> </td>
</c:forEach> </tr>
</tbody> </c:forEach>
</table> </tbody>
</div> </table>
<!-- <input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Upload & Update" id="btnsave" accesskey="S" onclick="return FinalizePhotoCase();" /> --> </div>
<input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Upload & Update" id="btnsave" accesskey="S" onclick="return SendToMnimble();" /> <!-- <input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Upload & Update" id="btnsave" accesskey="S" onclick="return FinalizePhotoCase();" /> -->
<input type="hidden" value="${Sessvals.getUserID()}" id="usid"/> <div class="matrix-workflow-actions">
</form:form> <input type="button" class="button" name="btnsave" value="Upload & Update" id="btnsave" accesskey="S" onclick="return SendToMnimble();" />
</div> </div>
</div> <input type="hidden" value="${Sessvals.getUserID()}" id="usid"/>
</body> </form:form>
<!-- Page Load Javascript --> </div>
<script language="javascript" type="text/javascript"> </div>
InitPage(); </body>
</script> <!-- Page Load Javascript -->
<!-- --> <script language="javascript" type="text/javascript">
<!-- Process Message --> InitPage();
<c:if test="${not empty msg}"> </script>
<script language="javascript" type="text/javascript"> CallMessage('${msg}',3000,200,300); </script> <!-- -->
</c:if> <!-- Process Message -->
<!-- --> <c:if test="${not empty msg}">
<script>CygnusNotifications.showLegacy('${msg}');</script>
</c:if>
<!-- -->
</html> </html>

View File

@@ -1,27 +1,28 @@
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%> pageEncoding="ISO-8859-1"%>
<%@page language="java" session="true" %> <%@page language="java" session="true" %>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script> <script src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/appjs/cutoff.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/excel.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/edp/cutoff/cutoff.js?v=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/excel.js" type="text/javascript"></script>
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/button.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/div.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/button.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/table.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/div.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/table.css" rel="stylesheet" type="text/css" />
<title>Cygnus 1.0 | Cases for Photograph</title>
<title>Cygnus 1.0 | Cases for Photograph</title>
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
@@ -33,88 +34,91 @@
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script> <script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script> <script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
</head> </head>
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-cutoff-workflow matrix-photo-case-workflow"> <body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-cutoff-workflow matrix-photo-case-workflow">
<div id='PageFrame'> <div id='PageFrame'>
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %> <%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
<%-- Shared shell owns ${Sessvals.menuHtml}. --%> <%-- Shared shell owns ${Sessvals.menuHtml}. --%>
<div id="formcontainer" class="matrix-tool-workspace__content"> <div id="formcontainer" class="matrix-tool-workspace__content">
<form:form method="post" name="pcases" id="pcases" modelAttribute="pcases" > <form:form method="post" name="pcases" id="pcases" modelAttribute="pcases" >
<div id="TablePanel" class="tableContainer"> <c:if test="${not empty _csrf}"><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /></c:if>
<table border="0" cellspacing="0" width="100%" id="cutlist"> <div id="TablePanel" class="tableContainer">
<thead class="thead"> <table border="0" cellspacing="0" width="100%" id="cutlist">
<tr title="Row Title"> <thead class="thead">
<td>Priority</td> <tr title="Row Title">
<td>ReferenceNumber</td> <td>Priority</td>
<td>TaskType</td> <td>ReferenceNumber</td>
<td>ContactPerson</td> <td>TaskType</td>
<td>Address</td> <td>ContactPerson</td>
<td>City</td> <td>Address</td>
<td>Pincode</td> <td>City</td>
<td>PhoneNumber</td> <td>Pincode</td>
<td>Notes</td> <td>PhoneNumber</td>
<td>AssignedTo</td> <td>Notes</td>
<td>ScheduledDate</td> <td>AssignedTo</td>
</tr> <td>ScheduledDate</td>
</thead> </tr>
<tbody class="scrollContent"> </thead>
<c:forEach items="${caselist}" var="clist" varStatus="mystatus"> <tbody class="scrollContent">
<tr> <c:forEach items="${caselist}" var="clist" varStatus="mystatus">
<td style="font-size:8pt;font-weight:normal"> <tr>
<input type="hidden" id="uuid-${mystatus.index}" name="uuid" value="${clist[0]}" /> <td style="font-size:8pt;font-weight:normal">
<input type="hidden" id="svstatus-${mystatus.index}" name="svstatus" value="${clist[0]}" /> <input type="hidden" id="uuid-${mystatus.index}" name="uuid" value="${clist[0]}" />
${clist[1]} <input type="hidden" id="svstatus-${mystatus.index}" name="svstatus" value="${clist[0]}" />
</td> ${clist[1]}
<td id="mvcode-${mystatus.index}" style="font-size:8pt;font-weight:normal"> </td>
${clist[2]} <td id="mvcode-${mystatus.index}" style="font-size:8pt;font-weight:normal">
</td> ${clist[2]}
<td style="font-size:8pt;font-weight:normal"> </td>
${clist[3]} <td style="font-size:8pt;font-weight:normal">
</td> ${clist[3]}
<td style="font-size:8pt;font-weight:normal"> </td>
${clist[4]} <td style="font-size:8pt;font-weight:normal">
</td> ${clist[4]}
<td style="font-size:8pt;font-weight:normal"> </td>
${clist[5]} <td style="font-size:8pt;font-weight:normal">
</td> ${clist[5]}
<td style="font-size:8pt;font-weight:normal"> </td>
${clist[6]} <td style="font-size:8pt;font-weight:normal">
</td> ${clist[6]}
<td style="font-size:8pt;font-weight:normal"> </td>
${clist[7]} <td style="font-size:8pt;font-weight:normal">
</td> ${clist[7]}
<td style="font-size:8pt;font-weight:normal"> </td>
${clist[8]} <td style="font-size:8pt;font-weight:normal">
</td> ${clist[8]}
<td style="font-size:8pt;font-weight:normal"> </td>
${clist[9]} <td style="font-size:8pt;font-weight:normal">
</td> ${clist[9]}
<td style="font-size:8pt;font-weight:normal"> </td>
${clist[10]} <td style="font-size:8pt;font-weight:normal">
</td> ${clist[10]}
<td id="vid-${mystatus.index}" style="font-size:8pt;font-weight:normal"> </td>
${clist[11]} <td id="vid-${mystatus.index}" style="font-size:8pt;font-weight:normal">
</td> ${clist[11]}
</tr> </td>
</c:forEach> </tr>
</tbody> </c:forEach>
</table> </tbody>
</div> </table>
<input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Save" id="btnsave" accesskey="S" onclick="return FinalizePhotoCase();" /> </div>
<input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Generate" id="btnexcel" accesskey="G" onclick="tableToExcel(document.getElementsByTagName('table'),'sheet1')" /> <div class="matrix-workflow-actions">
<input type="hidden" value="${Sessvals.getUserID()}" id="usid"/> <input type="button" class="button" name="btnsave" value="Save" id="btnsave" accesskey="S" onclick="return FinalizePhotoCase();" />
</form:form> <input type="button" class="button" name="btnsave" value="Generate" id="btnexcel" accesskey="G" onclick="tableToExcel(document.getElementsByTagName('table'),'sheet1')" />
</div> </div>
</div> <input type="hidden" value="${Sessvals.getUserID()}" id="usid"/>
</body> </form:form>
<!-- Page Load Javascript --> </div>
<script language="javascript" type="text/javascript"> </div>
InitPage(); </body>
</script> <!-- Page Load Javascript -->
<!-- --> <script language="javascript" type="text/javascript">
<!-- Process Message --> InitPage();
<c:if test="${not empty msg}"> </script>
<script language="javascript" type="text/javascript"> CallMessage('${msg}',3000,200,300); </script> <!-- -->
</c:if> <!-- Process Message -->
<!-- --> <c:if test="${not empty msg}">
<script>CygnusNotifications.showLegacy('${msg}');</script>
</c:if>
<!-- -->
</html> </html>

View File

@@ -1,183 +1,185 @@
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%> pageEncoding="ISO-8859-1"%>
<%@page language="java" session="true" %> <%@page language="java" session="true" %>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script> <script src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/appjs/allocation.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/appjs/cutoff.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/edp/cutoff/cutoff.js?v=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/button.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/button.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/div.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/div.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/select.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/select.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/table.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/table.css" rel="stylesheet" type="text/css" />
<title>Cygnus 1.0 | Reference Sheet</title> <title>Cygnus 1.0 | Reference Sheet</title>
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" /> <link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
<link href="/matrix/css/cutoff-workflows-v1.css?v=1" rel="stylesheet" type="text/css" /> <link href="/matrix/css/cutoff-workflows-v1.css?v=4" rel="stylesheet" type="text/css" />
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script> <script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
<script src="/matrix/js/matrix-shell-v2.js" defer></script> <script src="/matrix/js/matrix-shell-v2.js" defer></script>
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script> <script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script> <script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
</head> </head>
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-cutoff-workflow"> <body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-cutoff-workflow">
<div id='PageFrame'> <div id='PageFrame'>
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %> <%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
<%-- Shared shell owns ${Sessvals.menuHtml}. --%> <%-- Shared shell owns ${Sessvals.menuHtml}. --%>
<div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1200px"> <div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1200px">
<form:form method="post" name="refsheet" id="refsheet" modelAttribute="refsheet" > <form:form method="post" name="refsheet" id="refsheet" modelAttribute="refsheet" >
<!-- Common Details (Section1) Visible for all portfolios--> <c:if test="${not empty _csrf}"><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /></c:if>
<div> <!-- Common Details (Section1) Visible for all portfolios-->
<!-- Title --> <div>
<div class="title"> <!-- Title -->
<img class="matrix-title-icon" src="/matrix/images/telesheet.png" align="absmiddle" /> <div class="title">
<span class="matrix-title-text" align="absmiddle">Reference-Verification Sheet</span> <img class="matrix-title-icon" src="/matrix/images/telesheet.png" align="absmiddle" />
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="SubmitForm('refsheet','_parent','refsheet')"/> <span class="matrix-title-text" align="absmiddle">Reference-Verification Sheet</span>
</div> <img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="return submitCutoffForm('refsheet','refsheet')"/>
<!-- --> </div>
<div id="TablePanel" class="tableContainer"> <!-- -->
<table border="0" cellspacing="0" width="100%" id="cutlist"> <div id="TablePanel" class="tableContainer">
<thead class="thead"> <table border="0" cellspacing="0" width="100%" id="cutlist">
<tr title="Row Title"> <thead class="thead">
<td width="6%">S.No</td> <tr title="Row Title">
<td width="65%">Portfolio</td> <td width="6%">S.No</td>
<td>REF</td> <td width="65%">Portfolio</td>
<td>REFV</td> <td>REF</td>
</tr> <td>REFV</td>
</thead> </tr>
<tbody class="scrollContent"> </thead>
<c:forEach items="${refsheet.tvrlist}" var="record" varStatus="mystatus"> <tbody class="scrollContent">
<tr title="${record.lockedby}"> <c:forEach items="${refsheet.tvrlist}" var="record" varStatus="mystatus">
<td>${mystatus.count}</td> <tr title="${record.lockedby}">
<td id="parent${mystatus.count}" onclick="ExpandList(this.id)" > <td>${mystatus.count}</td>
<form:hidden path="tvrlist[${mystatus.index}].lockedby" id="locby${mystatus.count}" value="${status.value}"/> <td id="parent${mystatus.count}" onclick="ExpandList(this.id)" >
<form:hidden path="tvrlist[${mystatus.index}].portfolioid" id="portid${mystatus.count}" value="${status.value}"/> <form:hidden path="tvrlist[${mystatus.index}].lockedby" id="locby${mystatus.count}" value="${status.value}"/>
<form:hidden path="tvrlist[${mystatus.index}].portname" id="portname${mystatus.count}" value="${status.value}"/> <form:hidden path="tvrlist[${mystatus.index}].portfolioid" id="portid${mystatus.count}" value="${status.value}"/>
<form:hidden path="tvrlist[${mystatus.index}].repformat" id="format${mystatus.count}" value="${status.value}"/> <form:hidden path="tvrlist[${mystatus.index}].portname" id="portname${mystatus.count}" value="${status.value}"/>
<form:hidden path="tvrlist[${mystatus.index}].repfunction" id="function${mystatus.count}" value="${status.value}"/> <form:hidden path="tvrlist[${mystatus.index}].repformat" id="format${mystatus.count}" value="${status.value}"/>
<span class="customLink" style="cursor:pointer">${record.portname}</span> <form:hidden path="tvrlist[${mystatus.index}].repfunction" id="function${mystatus.count}" value="${status.value}"/>
</td> <span class="customLink" style="cursor:pointer">${record.portname}</span>
<td> </td>
<form:hidden path="tvrlist[${mystatus.index}].totref" id="totref${mystatus.count}" value="${status.value}"/>${record.totref} <td>
</td> <form:hidden path="tvrlist[${mystatus.index}].totref" id="totref${mystatus.count}" value="${status.value}"/>${record.totref}
<td align="center"> </td>
<form:hidden path="tvrlist[${mystatus.index}].islocked" id="locked${mystatus.count}" value="${status.value}" /> <td align="center">
<c:choose> <form:hidden path="tvrlist[${mystatus.index}].islocked" id="locked${mystatus.count}" value="${status.value}" />
<c:when test="${record.islocked gt 0}"> <c:choose>
<img src="/matrix/images/locked.png"/> <c:when test="${record.islocked gt 0}">
<form:checkbox path="tvrlist[${mystatus.index}].tv" id="chktv${mystatus.count}" value="true" style="display:none" /> <img src="/matrix/images/locked.png"/>
</c:when> <form:checkbox path="tvrlist[${mystatus.index}].tv" id="chktv${mystatus.count}" value="true" style="display:none" />
<c:otherwise> </c:when>
<form:checkbox path="tvrlist[${mystatus.index}].tv" id="chktv${mystatus.count}" value="true" onclick="ToggleChecks('chkchild${mystatus.count}tv',this.checked)" /> <c:otherwise>
</c:otherwise> <form:checkbox path="tvrlist[${mystatus.index}].tv" id="chktv${mystatus.count}" value="true" onclick="ToggleChecks('chkchild${mystatus.count}tv',this.checked)" />
</c:choose> </c:otherwise>
</td> </c:choose>
</tr> </td>
<tr style="display:none" id="parent${mystatus.count}child" > </tr>
<c:choose> <tr style="display:none" id="parent${mystatus.count}child" >
<c:when test="${record.islocked gt 0}"> <c:choose>
<td colspan="6" style="text-align:center;font-style: italic;color:#232323;text-transform: capitalize;">You can't see records locked by another user.</td> <c:when test="${record.islocked gt 0}">
</c:when> <td colspan="6" style="text-align:center;font-style: italic;color:#232323;text-transform: capitalize;">You can't see records locked by another user.</td>
<c:otherwise> </c:when>
<td colspan="6" align="right"> <c:otherwise>
<table cellspacing="0" cellpadding="0" border="0" width="94%" style="border-color: #49a5df"> <td colspan="6" align="right">
<thead class="thead"> <table cellspacing="0" cellpadding="0" border="0" width="94%" style="border-color: #49a5df">
<tr title="Heading"> <thead class="thead">
<td width="6%">S.No</td> <tr title="Heading">
<td>MV Code</td> <td width="6%">S.No</td>
<td>Appl No.</td> <td>MV Code</td>
<td>Customer Name</td> <td>Appl No.</td>
<td>Type</td> <td>Customer Name</td>
<td>REF</td> <td>Type</td>
<td>REFV</td> <td>REF</td>
</tr> <td>REFV</td>
</thead> </tr>
<tbody class="scrollContent"> </thead>
<c:forEach items="${record.sublist}" var="record1" varStatus="mystatus1"> <tbody class="scrollContent">
<tr title="${record1.lockedby}child"> <c:forEach items="${record.sublist}" var="record1" varStatus="mystatus1">
<td>${mystatus1.count}</td> <tr title="${record1.lockedby}child">
<td> <td>${mystatus1.count}</td>
<form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].lockedby" id="locby${mystatus1.count}child" value="${status.value}"/> <td>
<form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].mvcode" id="mvcode${mystatus1.count}child" value="${status.value}"/> <form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].lockedby" id="locby${mystatus1.count}child" value="${status.value}"/>
<form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].uuid" id="uuid${mystatus1.count}child" value="${status.value}"/> <form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].mvcode" id="mvcode${mystatus1.count}child" value="${status.value}"/>
<span>${record1.mvcode}</span> <form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].uuid" id="uuid${mystatus1.count}child" value="${status.value}"/>
</td> <span>${record1.mvcode}</span>
<td> </td>
<form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].applno" id="applno${mystatus1.count}child" value="${status.value}"/>${record1.applno} <td>
</td> <form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].applno" id="applno${mystatus1.count}child" value="${status.value}"/>${record1.applno}
<td> </td>
<form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].customername" id="cname${mystatus1.count}child" value="${status.value}"/>${record1.customername} <td>
</td> <form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].customername" id="cname${mystatus1.count}child" value="${status.value}"/>${record1.customername}
<td> </td>
<form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].apptype" id="ctype${mystatus1.count}child" value="${status.value}"/>${record1.apptype} <td>
</td> <form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].apptype" id="ctype${mystatus1.count}child" value="${status.value}"/>${record1.apptype}
<td> </td>
<form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].totref" id="totref${mystatus1.count}child" value="${status.value}"/>${record1.totref} <td>
</td> <form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].totref" id="totref${mystatus1.count}child" value="${status.value}"/>${record1.totref}
<td align="center"> </td>
<form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].islocked" id="locked${mystatus1.count}child" value="${status.value}" /> <td align="center">
<c:choose> <form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].islocked" id="locked${mystatus1.count}child" value="${status.value}" />
<c:when test="${record1.islocked gt 0}"> <c:choose>
<img src="/matrix/images/locked.png"/> <c:when test="${record1.islocked gt 0}">
<form:checkbox path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].tv" id="chkchild${mystatus.count}tv${mystatus1.count}" value="true" style="display:none" /> <img src="/matrix/images/locked.png"/>
</c:when> <form:checkbox path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].tv" id="chkchild${mystatus.count}tv${mystatus1.count}" value="true" style="display:none" />
<c:otherwise> </c:when>
<form:checkbox path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].tv" id="chkchild${mystatus.count}tv${mystatus1.count}" value="true" onclick="checkList('chkchild${mystatus.count}tv','chktv${mystatus.count}')" /> <c:otherwise>
</c:otherwise> <form:checkbox path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].tv" id="chkchild${mystatus.count}tv${mystatus1.count}" value="true" onclick="checkList('chkchild${mystatus.count}tv','chktv${mystatus.count}')" />
</c:choose> </c:otherwise>
</td> </c:choose>
</tr> </td>
</c:forEach> </tr>
</tbody> </c:forEach>
</table> </tbody>
</td> </table>
</c:otherwise> </td>
</c:choose> </c:otherwise>
</tr> </c:choose>
</c:forEach> </tr>
</tbody> </c:forEach>
</table> </tbody>
</div> </table>
<!-- Tele Sheet Link --> </div>
<c:if test="${not empty refsheet.getTelePDFLink()}"> <!-- Tele Sheet Link -->
<center> <c:if test="${not empty refsheet.getTelePDFLink()}">
<center>
<a class="button matrix-button matrix-button--primary" href="${refsheet.getTelePDFLink()}" target="_blank" rel="noopener noreferrer" id="btnpdf" accesskey="S">Open Reference Sheet</a> <a class="button matrix-button matrix-button--primary" href="${refsheet.getTelePDFLink()}" target="_blank" rel="noopener noreferrer" id="btnpdf" accesskey="S">Open Reference Sheet</a>
</center> </center>
</c:if> </c:if>
<!-- --> <!-- -->
</div> </div>
<input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Generate" id="btnsave" accesskey="S" onclick="return ValidateSubmitRefsheet('refsheet');" /> <div class="matrix-workflow-actions">
<form:hidden path="SessUUID" /> <input type="button" class="button" name="btnsave" value="Generate" id="btnsave" accesskey="S" onclick="return ValidateSubmitRefsheet('refsheet');" />
</form:form> </div>
<input type="hidden" id="invalidfields" value="0" /> </form:form>
<input type="hidden" id="selectedports" value="0" /> <input type="hidden" id="invalidfields" value="0" />
</div> <input type="hidden" id="selectedports" value="0" />
</div> </div>
</body> </div>
<!-- Page Load Javascript --> </body>
<script language="javascript" type="text/javascript"> <!-- Page Load Javascript -->
InitPage(); <script language="javascript" type="text/javascript">
</script> InitPage();
<!-- --> </script>
<!-- Process Message --> <!-- -->
<c:if test="${not empty refsheet.getErrMsg()}"> <!-- Process Message -->
<script language="javascript" type="text/javascript"> CallMessage('${telesheet.getErrMsg()}',3000,200,300); </script> <c:if test="${not empty refsheet.getErrMsg()}">
</c:if> <script>CygnusNotifications.showLegacy('${refsheet.getErrMsg()}');</script>
<!-- --> </c:if>
<!-- -->
</html> </html>

View File

@@ -1,213 +1,216 @@
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%> pageEncoding="ISO-8859-1"%>
<%@page language="java" session="true" %> <%@page language="java" session="true" %>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script> <script src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/appjs/cutoff.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/edp/cutoff/cutoff.js?v=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/button.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/div.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/button.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/select.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/div.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/table.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/select.css" rel="stylesheet" type="text/css" />
<title>Cygnus 1.0 | Operation Updation</title> <link href="/matrix/css/table.css" rel="stylesheet" type="text/css" />
<title>Cygnus 1.0 | Operation Updation</title>
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" /> <link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
<link href="/matrix/css/cutoff-workflows-v1.css?v=1" rel="stylesheet" type="text/css" /> <link href="/matrix/css/cutoff-workflows-v1.css?v=4" rel="stylesheet" type="text/css" />
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script> <script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
<script src="/matrix/js/matrix-shell-v2.js" defer></script> <script src="/matrix/js/matrix-shell-v2.js" defer></script>
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script> <script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script> <script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
</head> </head>
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-cutoff-workflow"> <body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-cutoff-workflow">
<div id='PageFrame'> <div id='PageFrame'>
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %> <%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
<%-- Shared shell owns ${Sessvals.menuHtml}. --%> <%-- Shared shell owns ${Sessvals.menuHtml}. --%>
<div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1200px"> <div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1200px">
<form:form method="post" name="sendtoopr" id="sendtoopr" modelAttribute="sendtoopr" > <form:form method="post" name="sendtoopr" id="sendtoopr" modelAttribute="sendtoopr" >
<!-- Common Details (Section1) Visible for all portfolios--> <c:if test="${not empty _csrf}"><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /></c:if>
<div> <!-- Common Details (Section1) Visible for all portfolios-->
<!-- Title --> <div>
<div class="title"> <!-- Title -->
<img class="matrix-title-icon" src="/matrix/images/oprupd.png" align="absmiddle" /> <div class="title">
<span class="matrix-title-text" align="absmiddle">Send To Operation</span> <img class="matrix-title-icon" src="/matrix/images/oprupd.png" align="absmiddle" />
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="SubmitForm('sendtoopr','_parent','sendtoopr')"/> <span class="matrix-title-text" align="absmiddle">Send To Operation</span>
</div> <img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="return submitCutoffForm('sendtoopr','sendtoopr')"/>
<!-- --> </div>
<div id="TablePanel" class="tableContainer"> <!-- -->
<table border="0" cellspacing="0" width="100%" id="cutlist"> <div id="TablePanel" class="tableContainer">
<thead class="thead"> <table border="0" cellspacing="0" width="100%" id="cutlist">
<tr title="Row Title"> <thead class="thead">
<td width="6%">S.No</td> <tr title="Row Title">
<td width="65%">Portfolio</td> <td width="6%">S.No</td>
<td>RV</td> <td width="65%">Portfolio</td>
<td>OV</td> <td>RV</td>
<td>PV</td> <td>OV</td>
<td>RTV</td> <td>PV</td>
<td>OTV</td> <td>RTV</td>
<td>REF</td> <td>OTV</td>
<td>Send</td> <td>REF</td>
</tr> <td>Send</td>
</thead> </tr>
<tbody class="scrollContent"> </thead>
<c:forEach items="${sendtoopr.caselist}" var="record" varStatus="mystatus"> <tbody class="scrollContent">
<tr title="${record.lockedby}"> <c:forEach items="${sendtoopr.caselist}" var="record" varStatus="mystatus">
<td>${mystatus.count}</td> <tr title="${record.lockedby}">
<td id="parent${mystatus.count}" onclick="ExpandList(this.id)" > <td>${mystatus.count}</td>
<form:hidden path="caselist[${mystatus.index}].lockedby" id="locby${mystatus.count}" value="${status.value}"/> <td id="parent${mystatus.count}" onclick="ExpandList(this.id)" >
<form:hidden path="caselist[${mystatus.index}].portfolioid" id="portid${mystatus.count}" value="${status.value}"/> <form:hidden path="caselist[${mystatus.index}].lockedby" id="locby${mystatus.count}" value="${status.value}"/>
<form:hidden path="caselist[${mystatus.index}].portname" id="portname${mystatus.count}" value="${status.value}"/> <form:hidden path="caselist[${mystatus.index}].portfolioid" id="portid${mystatus.count}" value="${status.value}"/>
<span class="customLink" style="cursor:pointer">${record.portname}</span> <form:hidden path="caselist[${mystatus.index}].portname" id="portname${mystatus.count}" value="${status.value}"/>
</td> <span class="customLink" style="cursor:pointer">${record.portname}</span>
<td> </td>
<form:hidden path="caselist[${mystatus.index}].totrv" id="totrv${mystatus.count}" value="${status.value}"/>${record.totrv} <td>
</td> <form:hidden path="caselist[${mystatus.index}].totrv" id="totrv${mystatus.count}" value="${status.value}"/>${record.totrv}
<td> </td>
<form:hidden path="caselist[${mystatus.index}].totov" id="totov${mystatus.count}" value="${status.value}"/>${record.totov} <td>
</td> <form:hidden path="caselist[${mystatus.index}].totov" id="totov${mystatus.count}" value="${status.value}"/>${record.totov}
<td> </td>
<form:hidden path="caselist[${mystatus.index}].totpv" id="totpv${mystatus.count}" value="${status.value}"/>${record.totpv} <td>
</td> <form:hidden path="caselist[${mystatus.index}].totpv" id="totpv${mystatus.count}" value="${status.value}"/>${record.totpv}
<td> </td>
<form:hidden path="caselist[${mystatus.index}].totrtv" id="totrtv${mystatus.count}" value="${status.value}"/>${record.totrtv} <td>
</td> <form:hidden path="caselist[${mystatus.index}].totrtv" id="totrtv${mystatus.count}" value="${status.value}"/>${record.totrtv}
<td> </td>
<form:hidden path="caselist[${mystatus.index}].tototv" id="tototv${mystatus.count}" value="${status.value}"/>${record.tototv} <td>
</td> <form:hidden path="caselist[${mystatus.index}].tototv" id="tototv${mystatus.count}" value="${status.value}"/>${record.tototv}
<td> </td>
<form:hidden path="caselist[${mystatus.index}].totref" id="totref${mystatus.count}" value="${status.value}"/>${record.totref} <td>
</td> <form:hidden path="caselist[${mystatus.index}].totref" id="totref${mystatus.count}" value="${status.value}"/>${record.totref}
<td align="center"> </td>
<form:hidden path="caselist[${mystatus.index}].islocked" id="locked${mystatus.count}" value="${status.value}" /> <td align="center">
<c:choose> <form:hidden path="caselist[${mystatus.index}].islocked" id="locked${mystatus.count}" value="${status.value}" />
<c:when test="${record.islocked gt 0}"> <c:choose>
<img src="/matrix/images/locked.png"/> <c:when test="${record.islocked gt 0}">
<form:checkbox path="caselist[${mystatus.index}].oprsend" id="chksend${mystatus.count}" value="true" style="display:none" /> <img src="/matrix/images/locked.png"/>
</c:when> <form:checkbox path="caselist[${mystatus.index}].oprsend" id="chksend${mystatus.count}" value="true" style="display:none" />
<c:otherwise> </c:when>
<form:checkbox path="caselist[${mystatus.index}].oprsend" id="chksend${mystatus.count}" value="true" onclick="ToggleChecks('chkchild${mystatus.count}send',this.checked)" /> <c:otherwise>
</c:otherwise> <form:checkbox path="caselist[${mystatus.index}].oprsend" id="chksend${mystatus.count}" value="true" onclick="ToggleChecks('chkchild${mystatus.count}send',this.checked)" />
</c:choose> </c:otherwise>
</td> </c:choose>
</tr> </td>
<tr style="display:none" id="parent${mystatus.count}child" > </tr>
<c:choose> <tr style="display:none" id="parent${mystatus.count}child" >
<c:when test="${record.islocked gt 0}"> <c:choose>
<td colspan="9" style="text-align:center;font-style: italic;color:#232323;text-transform: capitalize;">You can't see records locked by another user.</td> <c:when test="${record.islocked gt 0}">
</c:when> <td colspan="9" style="text-align:center;font-style: italic;color:#232323;text-transform: capitalize;">You can't see records locked by another user.</td>
<c:otherwise> </c:when>
<td colspan="9" align="right"> <c:otherwise>
<table cellspacing="0" cellpadding="0" border="0" width="94%" style="border-color: #49a5df"> <td colspan="9" align="right">
<thead class="thead"> <table cellspacing="0" cellpadding="0" border="0" width="94%" style="border-color: #49a5df">
<tr title="Heading"> <thead class="thead">
<td width="6%">S.No</td> <tr title="Heading">
<td>MV Code</td> <td width="6%">S.No</td>
<td>Appl No.</td> <td>MV Code</td>
<td>Customer Name</td> <td>Appl No.</td>
<td>Type</td> <td>Customer Name</td>
<td>RV</td> <td>Type</td>
<td>OV</td> <td>RV</td>
<td>PV</td> <td>OV</td>
<td>RTV</td> <td>PV</td>
<td>OTV</td> <td>RTV</td>
<td>REF</td> <td>OTV</td>
<td>Send</td> <td>REF</td>
</tr> <td>Send</td>
</thead> </tr>
<tbody class="scrollContent"> </thead>
<c:forEach items="${record.sublist}" var="record1" varStatus="mystatus1"> <tbody class="scrollContent">
<tr title="${record1.lockedby}child"> <c:forEach items="${record.sublist}" var="record1" varStatus="mystatus1">
<td>${mystatus1.count}</td> <tr title="${record1.lockedby}child">
<td> <td>${mystatus1.count}</td>
<form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].lockedby" id="locby${mystatus1.count}child" value="${status.value}"/> <td>
<form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].mvcode" id="mvcode${mystatus1.count}child" value="${status.value}"/> <form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].lockedby" id="locby${mystatus1.count}child" value="${status.value}"/>
<form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].uuid" id="uuid${mystatus1.count}child" value="${status.value}"/> <form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].mvcode" id="mvcode${mystatus1.count}child" value="${status.value}"/>
<span>${record1.mvcode}</span> <form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].uuid" id="uuid${mystatus1.count}child" value="${status.value}"/>
</td> <span>${record1.mvcode}</span>
<td> </td>
<form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].applno" id="applno${mystatus1.count}child" value="${status.value}"/>${record1.applno} <td>
</td> <form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].applno" id="applno${mystatus1.count}child" value="${status.value}"/>${record1.applno}
<td> </td>
<form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].customername" id="cname${mystatus1.count}child" value="${status.value}"/>${record1.customername} <td>
</td> <form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].customername" id="cname${mystatus1.count}child" value="${status.value}"/>${record1.customername}
<td> </td>
<form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].apptype" id="ctype${mystatus1.count}child" value="${status.value}"/>${record1.apptype} <td>
</td> <form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].apptype" id="ctype${mystatus1.count}child" value="${status.value}"/>${record1.apptype}
<td> </td>
<form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].totrv" id="totrv${mystatus1.count}child" value="${status.value}"/>${record1.totrv} <td>
</td> <form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].totrv" id="totrv${mystatus1.count}child" value="${status.value}"/>${record1.totrv}
<td> </td>
<form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].totov" id="totov${mystatus1.count}child" value="${status.value}"/>${record1.totov} <td>
</td> <form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].totov" id="totov${mystatus1.count}child" value="${status.value}"/>${record1.totov}
<td> </td>
<form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].totpv" id="totpv${mystatus1.count}child" value="${status.value}"/>${record1.totpv} <td>
</td> <form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].totpv" id="totpv${mystatus1.count}child" value="${status.value}"/>${record1.totpv}
<td> </td>
<form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].totrtv" id="totrtv${mystatus1.count}child" value="${status.value}"/>${record1.totrtv} <td>
</td> <form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].totrtv" id="totrtv${mystatus1.count}child" value="${status.value}"/>${record1.totrtv}
<td> </td>
<form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].tototv" id="tototv${mystatus1.count}child" value="${status.value}"/>${record1.tototv} <td>
</td> <form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].tototv" id="tototv${mystatus1.count}child" value="${status.value}"/>${record1.tototv}
<td> </td>
<form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].totref" id="totref${mystatus1.count}child" value="${status.value}"/>${record1.totref} <td>
</td> <form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].totref" id="totref${mystatus1.count}child" value="${status.value}"/>${record1.totref}
<td align="center"> </td>
<form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].islocked" id="locked${mystatus1.count}child" value="${status.value}" /> <td align="center">
<c:choose> <form:hidden path="caselist[${mystatus.index}].sublist[${mystatus1.index}].islocked" id="locked${mystatus1.count}child" value="${status.value}" />
<c:when test="${record1.islocked gt 0}"> <c:choose>
<img src="/matrix/images/locked.png"/> <c:when test="${record1.islocked gt 0}">
<form:checkbox path="caselist[${mystatus.index}].sublist[${mystatus1.index}].oprsend" id="chkchild${mystatus.count}send${mystatus1.count}" value="true" style="display:none" /> <img src="/matrix/images/locked.png"/>
</c:when> <form:checkbox path="caselist[${mystatus.index}].sublist[${mystatus1.index}].oprsend" id="chkchild${mystatus.count}send${mystatus1.count}" value="true" style="display:none" />
<c:otherwise> </c:when>
<form:checkbox path="caselist[${mystatus.index}].sublist[${mystatus1.index}].oprsend" id="chkchild${mystatus.count}send${mystatus1.count}" value="true" onclick="checkList('chkchild${mystatus.count}send','chksend${mystatus.count}')" /> <c:otherwise>
</c:otherwise> <form:checkbox path="caselist[${mystatus.index}].sublist[${mystatus1.index}].oprsend" id="chkchild${mystatus.count}send${mystatus1.count}" value="true" onclick="checkList('chkchild${mystatus.count}send','chksend${mystatus.count}')" />
</c:choose> </c:otherwise>
</td> </c:choose>
</tr> </td>
</c:forEach> </tr>
</tbody> </c:forEach>
</table> </tbody>
</td> </table>
</c:otherwise> </td>
</c:choose> </c:otherwise>
</tr> </c:choose>
</c:forEach> </tr>
</tbody> </c:forEach>
</table> </tbody>
</div> </table>
</div> </div>
<input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Save" id="btnsave" accesskey="S" onclick="return ValidateSubmitSopr('sendtoopr');" /> </div>
<form:hidden path="SessUUID" value="${sendtoopr.getSessUUID()}"/> <div class="matrix-workflow-actions">
</form:form> <input type="button" class="button" name="btnsave" value="Save" id="btnsave" accesskey="S" onclick="return ValidateSubmitSopr('sendtoopr');" />
<input type="hidden" id="invalidfields" value="0" /> </div>
<input type="hidden" id="selectedports" value="0" /> </form:form>
</div> <input type="hidden" id="invalidfields" value="0" />
</div> <input type="hidden" id="selectedports" value="0" />
</body> </div>
<!-- Page Load Javascript --> </div>
<script language="javascript" type="text/javascript"> </body>
InitPage(); <!-- Page Load Javascript -->
</script> <script language="javascript" type="text/javascript">
<!-- --> InitPage();
<!-- Process Message --> </script>
<c:if test="${not empty sendtoopr.getErrMsg()}"> <!-- -->
<script language="javascript" type="text/javascript"> CallMessage('${sendtoopr.getErrMsg()}',5000,200,300); </script> <!-- Process Message -->
</c:if> <c:if test="${not empty sendtoopr.getErrMsg()}">
<!-- --> <script>CygnusNotifications.showLegacy('${sendtoopr.getErrMsg()}');</script>
</c:if>
<!-- -->
</html> </html>

View File

@@ -1,199 +1,201 @@
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%> pageEncoding="ISO-8859-1"%>
<%@page language="java" session="true" %> <%@page language="java" session="true" %>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %> <%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script> <script src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/appjs/allocation.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/appjs/cutoff.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/edp/cutoff/cutoff.js?v=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/button.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/button.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/div.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/div.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/select.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/select.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/table.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/table.css" rel="stylesheet" type="text/css" />
<title>Cygnus 1.0 | Telesheet</title> <title>Cygnus 1.0 | Telesheet</title>
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" /> <link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
<link href="/matrix/css/cutoff-workflows-v1.css?v=1" rel="stylesheet" type="text/css" /> <link href="/matrix/css/cutoff-workflows-v1.css?v=4" rel="stylesheet" type="text/css" />
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script> <script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
<script src="/matrix/js/matrix-shell-v2.js" defer></script> <script src="/matrix/js/matrix-shell-v2.js" defer></script>
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script> <script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script> <script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
</head> </head>
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-cutoff-workflow"> <body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-cutoff-workflow">
<div id='PageFrame'> <div id='PageFrame'>
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %> <%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
<%-- Shared shell owns ${Sessvals.menuHtml}. --%> <%-- Shared shell owns ${Sessvals.menuHtml}. --%>
<div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1200px"> <div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1200px">
<form:form method="post" name="telesheet" id="telesheet" modelAttribute="telesheet" > <form:form method="post" name="telesheet" id="telesheet" modelAttribute="telesheet" >
<!-- Common Details (Section1) Visible for all portfolios--> <c:if test="${not empty _csrf}"><input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}" /></c:if>
<div> <!-- Common Details (Section1) Visible for all portfolios-->
<!-- Title --> <div>
<div class="title"> <!-- Title -->
<img class="matrix-title-icon" src="/matrix/images/telesheet.png" align="absmiddle" /> <div class="title">
<span class="matrix-title-text" align="absmiddle">Tele-Verification Sheet</span> <img class="matrix-title-icon" src="/matrix/images/telesheet.png" align="absmiddle" />
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="SubmitForm('telesheet','_parent','telesheet')"/> <span class="matrix-title-text" align="absmiddle">Tele-Verification Sheet</span>
</div> <img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="return submitCutoffForm('telesheet','telesheet')"/>
<!-- --> </div>
<div id="TablePanel" class="tableContainer"> <!-- -->
<table border="0" cellspacing="0" width="100%" id="cutlist"> <div id="TablePanel" class="tableContainer">
<thead class="thead"> <table border="0" cellspacing="0" width="100%" id="cutlist">
<tr title="Row Title"> <thead class="thead">
<td width="6%">S.No</td> <tr title="Row Title">
<td width="65%">Portfolio</td> <td width="6%">S.No</td>
<td>RTV</td> <td width="65%">Portfolio</td>
<td>OTV</td> <td>RTV</td>
<td>REF</td> <td>OTV</td>
<td>TV</td> <td>REF</td>
</tr> <td>TV</td>
</thead> </tr>
<tbody class="scrollContent"> </thead>
<c:forEach items="${telesheet.tvrlist}" var="record" varStatus="mystatus"> <tbody class="scrollContent">
<tr title="${record.lockedby}"> <c:forEach items="${telesheet.tvrlist}" var="record" varStatus="mystatus">
<td>${mystatus.count}</td> <tr title="${record.lockedby}">
<td id="parent${mystatus.count}" onclick="ExpandList(this.id)" > <td>${mystatus.count}</td>
<form:hidden path="tvrlist[${mystatus.index}].lockedby" id="locby${mystatus.count}" value="${status.value}"/> <td id="parent${mystatus.count}" onclick="ExpandList(this.id)" >
<form:hidden path="tvrlist[${mystatus.index}].portfolioid" id="portid${mystatus.count}" value="${status.value}"/> <form:hidden path="tvrlist[${mystatus.index}].lockedby" id="locby${mystatus.count}" value="${status.value}"/>
<form:hidden path="tvrlist[${mystatus.index}].portname" id="portname${mystatus.count}" value="${status.value}"/> <form:hidden path="tvrlist[${mystatus.index}].portfolioid" id="portid${mystatus.count}" value="${status.value}"/>
<form:hidden path="tvrlist[${mystatus.index}].repformat" id="format${mystatus.count}" value="${status.value}"/> <form:hidden path="tvrlist[${mystatus.index}].portname" id="portname${mystatus.count}" value="${status.value}"/>
<form:hidden path="tvrlist[${mystatus.index}].repfunction" id="function${mystatus.count}" value="${status.value}"/> <form:hidden path="tvrlist[${mystatus.index}].repformat" id="format${mystatus.count}" value="${status.value}"/>
<span class="customLink" style="cursor:pointer">${record.portname}</span> <form:hidden path="tvrlist[${mystatus.index}].repfunction" id="function${mystatus.count}" value="${status.value}"/>
</td> <span class="customLink" style="cursor:pointer">${record.portname}</span>
<td> </td>
<form:hidden path="tvrlist[${mystatus.index}].totrv" id="totrv${mystatus.count}" value="${status.value}"/>${record.totrv} <td>
</td> <form:hidden path="tvrlist[${mystatus.index}].totrv" id="totrv${mystatus.count}" value="${status.value}"/>${record.totrv}
<td> </td>
<form:hidden path="tvrlist[${mystatus.index}].totov" id="totov${mystatus.count}" value="${status.value}"/>${record.totov} <td>
</td> <form:hidden path="tvrlist[${mystatus.index}].totov" id="totov${mystatus.count}" value="${status.value}"/>${record.totov}
<td> </td>
<form:hidden path="tvrlist[${mystatus.index}].totref" id="totref${mystatus.count}" value="${status.value}"/>${record.totpv} <td>
</td> <form:hidden path="tvrlist[${mystatus.index}].totref" id="totref${mystatus.count}" value="${status.value}"/>${record.totpv}
<td align="center"> </td>
<form:hidden path="tvrlist[${mystatus.index}].islocked" id="locked${mystatus.count}" value="${status.value}" /> <td align="center">
<c:choose> <form:hidden path="tvrlist[${mystatus.index}].islocked" id="locked${mystatus.count}" value="${status.value}" />
<c:when test="${record.islocked gt 0}"> <c:choose>
<img src="/matrix/images/locked.png"/> <c:when test="${record.islocked gt 0}">
<form:checkbox path="tvrlist[${mystatus.index}].tv" id="chktv${mystatus.count}" value="true" style="display:none" /> <img src="/matrix/images/locked.png"/>
</c:when> <form:checkbox path="tvrlist[${mystatus.index}].tv" id="chktv${mystatus.count}" value="true" style="display:none" />
<c:otherwise> </c:when>
<form:checkbox path="tvrlist[${mystatus.index}].tv" id="chktv${mystatus.count}" value="true" onclick="ToggleChecks('chkchild${mystatus.count}tv',this.checked)" /> <c:otherwise>
</c:otherwise> <form:checkbox path="tvrlist[${mystatus.index}].tv" id="chktv${mystatus.count}" value="true" onclick="ToggleChecks('chkchild${mystatus.count}tv',this.checked)" />
</c:choose> </c:otherwise>
</td> </c:choose>
</tr> </td>
<tr style="display:none" id="parent${mystatus.count}child" > </tr>
<c:choose> <tr style="display:none" id="parent${mystatus.count}child" >
<c:when test="${record.islocked gt 0}"> <c:choose>
<td colspan="6" style="text-align:center;font-style: italic;color:#232323;text-transform: capitalize;">You can't see records locked by another user.</td> <c:when test="${record.islocked gt 0}">
</c:when> <td colspan="6" style="text-align:center;font-style: italic;color:#232323;text-transform: capitalize;">You can't see records locked by another user.</td>
<c:otherwise> </c:when>
<td colspan="6" align="right"> <c:otherwise>
<table cellspacing="0" cellpadding="0" border="0" width="94%" style="border-color: #49a5df"> <td colspan="6" align="right">
<thead class="thead"> <table cellspacing="0" cellpadding="0" border="0" width="94%" style="border-color: #49a5df">
<tr title="Heading"> <thead class="thead">
<td width="6%">S.No</td> <tr title="Heading">
<td>MV Code</td> <td width="6%">S.No</td>
<td>Appl No.</td> <td>MV Code</td>
<td>Customer Name</td> <td>Appl No.</td>
<td>Type</td> <td>Customer Name</td>
<td>RTV</td> <td>Type</td>
<td>OTV</td> <td>RTV</td>
<td>REF</td> <td>OTV</td>
<td>TV</td> <td>REF</td>
</tr> <td>TV</td>
</thead> </tr>
<tbody class="scrollContent"> </thead>
<c:forEach items="${record.sublist}" var="record1" varStatus="mystatus1"> <tbody class="scrollContent">
<tr title="${record1.lockedby}child"> <c:forEach items="${record.sublist}" var="record1" varStatus="mystatus1">
<td>${mystatus1.count}</td> <tr title="${record1.lockedby}child">
<td> <td>${mystatus1.count}</td>
<form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].lockedby" id="locby${mystatus1.count}child" value="${status.value}"/> <td>
<form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].mvcode" id="mvcode${mystatus1.count}child" value="${status.value}"/> <form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].lockedby" id="locby${mystatus1.count}child" value="${status.value}"/>
<form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].uuid" id="uuid${mystatus1.count}child" value="${status.value}"/> <form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].mvcode" id="mvcode${mystatus1.count}child" value="${status.value}"/>
<span>${record1.mvcode}</span> <form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].uuid" id="uuid${mystatus1.count}child" value="${status.value}"/>
</td> <span>${record1.mvcode}</span>
<td> </td>
<form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].applno" id="applno${mystatus1.count}child" value="${status.value}"/>${record1.applno} <td>
</td> <form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].applno" id="applno${mystatus1.count}child" value="${status.value}"/>${record1.applno}
<td> </td>
<form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].customername" id="cname${mystatus1.count}child" value="${status.value}"/>${record1.customername} <td>
</td> <form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].customername" id="cname${mystatus1.count}child" value="${status.value}"/>${record1.customername}
<td> </td>
<form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].apptype" id="ctype${mystatus1.count}child" value="${status.value}"/>${record1.apptype} <td>
</td> <form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].apptype" id="ctype${mystatus1.count}child" value="${status.value}"/>${record1.apptype}
<td> </td>
<form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].totrv" id="totrv${mystatus1.count}child" value="${status.value}"/>${record1.totrv} <td>
</td> <form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].totrv" id="totrv${mystatus1.count}child" value="${status.value}"/>${record1.totrv}
<td> </td>
<form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].totov" id="totov${mystatus1.count}child" value="${status.value}"/>${record1.totov} <td>
</td> <form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].totov" id="totov${mystatus1.count}child" value="${status.value}"/>${record1.totov}
<td> </td>
<form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].totref" id="totref${mystatus1.count}child" value="${status.value}"/>${record1.totpv} <td>
</td> <form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].totref" id="totref${mystatus1.count}child" value="${status.value}"/>${record1.totpv}
<td align="center"> </td>
<form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].islocked" id="locked${mystatus1.count}child" value="${status.value}" /> <td align="center">
<c:choose> <form:hidden path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].islocked" id="locked${mystatus1.count}child" value="${status.value}" />
<c:when test="${record1.islocked gt 0}"> <c:choose>
<img src="/matrix/images/locked.png"/> <c:when test="${record1.islocked gt 0}">
<form:checkbox path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].tv" id="chkchild${mystatus.count}tv${mystatus1.count}" value="true" style="display:none" /> <img src="/matrix/images/locked.png"/>
</c:when> <form:checkbox path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].tv" id="chkchild${mystatus.count}tv${mystatus1.count}" value="true" style="display:none" />
<c:otherwise> </c:when>
<form:checkbox path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].tv" id="chkchild${mystatus.count}tv${mystatus1.count}" value="true" onclick="checkList('chkchild${mystatus.count}tv','chktv${mystatus.count}')" /> <c:otherwise>
</c:otherwise> <form:checkbox path="tvrlist[${mystatus.index}].sublist[${mystatus1.index}].tv" id="chkchild${mystatus.count}tv${mystatus1.count}" value="true" onclick="checkList('chkchild${mystatus.count}tv','chktv${mystatus.count}')" />
</c:choose> </c:otherwise>
</td> </c:choose>
</tr> </td>
</c:forEach> </tr>
</tbody> </c:forEach>
</table> </tbody>
</td> </table>
</c:otherwise> </td>
</c:choose> </c:otherwise>
</tr> </c:choose>
</c:forEach> </tr>
</tbody> </c:forEach>
</table> </tbody>
</div> </table>
<!-- Tele Sheet Link --> </div>
<c:if test="${not empty telesheet.getTelePDFLink()}"> <!-- Tele Sheet Link -->
<center> <c:if test="${not empty telesheet.getTelePDFLink()}">
<center>
<a class="button matrix-button matrix-button--primary" href="${telesheet.getTelePDFLink()}" target="_blank" rel="noopener noreferrer" id="btnpdf" accesskey="S">Open Tele-Sheet</a> <a class="button matrix-button matrix-button--primary" href="${telesheet.getTelePDFLink()}" target="_blank" rel="noopener noreferrer" id="btnpdf" accesskey="S">Open Tele-Sheet</a>
</center> </center>
</c:if> </c:if>
<!-- --> <!-- -->
</div> </div>
<input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Generate" id="btnsave" accesskey="S" onclick="return ValidateSubmitTelesheet('telesheet');" /> <div class="matrix-workflow-actions">
<form:hidden path="SessUUID" /> <input type="button" class="button" name="btnsave" value="Generate" id="btnsave" accesskey="S" onclick="return ValidateSubmitTelesheet('telesheet');" />
</form:form> </div>
<input type="hidden" id="invalidfields" value="0" /> </form:form>
<input type="hidden" id="selectedports" value="0" /> <input type="hidden" id="invalidfields" value="0" />
</div> <input type="hidden" id="selectedports" value="0" />
</div> </div>
</body> </div>
<!-- Page Load Javascript --> </body>
<script language="javascript" type="text/javascript"> <!-- Page Load Javascript -->
InitPage(); <script language="javascript" type="text/javascript">
</script> InitPage();
<!-- --> </script>
<!-- Process Message --> <!-- -->
<c:if test="${not empty telesheet.getErrMsg()}"> <!-- Process Message -->
<script language="javascript" type="text/javascript"> CallMessage('${telesheet.getErrMsg()}',3000,200,300); </script> <c:if test="${not empty telesheet.getErrMsg()}">
</c:if> <script>CygnusNotifications.showLegacy('${telesheet.getErrMsg()}');</script>
<!-- --> </c:if>
<!-- -->
</html> </html>

View File

@@ -1,112 +1,85 @@
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" session="true" %>
pageEncoding="ISO-8859-1"%> <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@page language="java" session="true" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <!DOCTYPE html>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <html>
<!DOCTYPE html> <head>
<html> <meta charset="UTF-8">
<head> <title>Cygnus 1.0 | Dedupe</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet">
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script> <link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet">
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script> <link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet">
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script> <link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet">
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script> <link href="/matrix/css/dedupe-workflows-v1.css?v=3" rel="stylesheet">
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script> <link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet">
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script> <link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet">
<script language="javascript" src="/matrix/js/appjs/dedupedo.js" type="text/javascript"></script> <script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
<link href="/matrix/css/div.css" rel="stylesheet" type="text/css" /> <script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
<link href="/matrix/css/select.css" rel="stylesheet" type="text/css" /> <script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
<link href="/matrix/css/table.css" rel="stylesheet" type="text/css" /> <script src="/matrix/js/edp/dedupe/dedupe-do.js?v=2" defer></script>
</head>
<title>Cygnus 1.0 | Dedupe Do</title> <body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-dedupe-workflow"
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" /> data-context-path="${pageContext.request.contextPath}">
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" /> <div id="PageFrame">
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" /> <%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" /> <main class="matrix-tool-workspace__content">
<link href="/matrix/css/dedupe-workflows-v1.css?v=1" rel="stylesheet" type="text/css" /> <form:form method="post" action="${pageContext.request.contextPath}/ver/dedupecaselist"
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script> id="dedupeWorkspace" modelAttribute="dedupeWorkspace">
<script src="/matrix/js/matrix-shell-v2.js" defer></script> <section class="matrix-dedupe-worklist">
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" /> <header class="title matrix-dedupe-worklist__header">
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script> <span class="matrix-dedupe-worklist__heading">
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script> <img class="matrix-title-icon" src="/matrix/images/commondet.png" alt="">
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" /> <span class="matrix-title-text">Dedupe Cases</span>
</head> </span>
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-dedupe-workflow"> <span class="matrix-dedupe-worklist__actions">
<div id='PageFrame'> <form:select path="portfolioId" id="portfolioId"
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %> cssClass="form-select form-select-sm matrix-dedupe-worklist__portfolio"
<%-- Shared shell owns ${Sessvals.menuHtml}. --%> aria-label="Portfolio">
<div id="formcontainer" class="matrix-tool-workspace__content"> <form:option value="-1" label="SELECT PORTFOLIO" />
<form:form method="post" name="caseGrid" id="caseGrid" modelAttribute="caseGrid" > <c:forEach items="${dedupeWorkspace.portfolios}" var="portfolio">
<!-- Common Details (Section1) Visible for all portfolios--> <form:option value="${portfolio.value}" label="${portfolio.label}" />
<div> </c:forEach>
<!-- Title --> </form:select>
<div class="title"> <button type="submit" class="matrix-dedupe-worklist__refresh"
<img class="matrix-title-icon" src="/matrix/images/commondet.png" align="absmiddle" /> title="Refresh cases" aria-label="Refresh cases">
<span class="matrix-title-text" align="absmiddle">List of Cases</span> <img src="/matrix/images/reload.png" alt="">
<div class="divselect" id="divportfolio" style="width:167px;position:absolute;top:3px;right:30px;"> </button>
<form:select path="PortfolioId" multiple="false" id="portlist" style="width:185px" onchange="SubmitForm('dedupecaselist','_parent','caseGrid')"> </span>
<form:option value="-1" label="SELECT PORTFOLIO" selected="true"/> </header>
<c:forEach items="${portlist}" var="port">
<form:option value="${port[0]}" label="${port[1]}" /> <div class="table-responsive matrix-dedupe-worklist__table-wrap">
</c:forEach> <table class="table table-sm align-middle mb-0" id="dedupeCaseTable">
</form:select> <thead>
</div> <tr>
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="SubmitForm('dedupecaselist','_parent','caseGrid')"/> <th>S.No</th><th>MV Code</th><th>File No.</th><th>Customer Name</th>
</div> <th>Type</th><th class="text-center">RV</th><th class="text-center">OV</th>
<!-- --> <th class="text-center">PV</th><th>Received On</th><th>Done</th>
<div id="TablePanel" class="tableContainer"> </tr>
<table border="0" cellspacing="0" width="100%" id="casetable"> </thead>
<thead class="thead"> <tbody>
<tr title="Row Title"> <c:forEach items="${dedupeWorkspace.cases}" var="caseItem" varStatus="status">
<td>S.No</td> <tr class="matrix-dedupe-worklist__row" tabindex="0"
<td>MV Code</td> data-case-id="${caseItem.documentCaseId}"
<td>File No.</td> title="Open dedupe details">
<td>Customer Name</td> <td>${status.count}</td><td>${caseItem.mvCode}</td>
<td>Type</td> <td>${caseItem.fileNumber}</td><td>${caseItem.customerName}</td>
<td>RV</td> <td>${caseItem.applicationType}</td>
<td>OV</td> <td class="text-center">${caseItem.residenceVisits}</td>
<td>PV</td> <td class="text-center">${caseItem.officeVisits}</td>
<td>Received Date</td> <td class="text-center">${caseItem.propertyVisits}</td>
<td>Done</td> <td>${caseItem.receivedOn}</td><td>${caseItem.done}</td>
<td></td> </tr>
</tr> </c:forEach>
</thead> <c:if test="${dedupeWorkspace.portfolioId gt 0 and empty dedupeWorkspace.cases}">
<tbody class="scrollContent"> <tr><td colspan="10" class="matrix-dedupe-worklist__empty">No cases found.</td></tr>
<c:forEach items="${caseList}" var="casedet" varStatus="status"> </c:if>
<tr id="row${status.count}"> </tbody>
<td> </table>
<input type="hidden" name="uuid" id="row${status.count}uuid" value="${casedet[0]}" /> </div>
<input type="hidden" name="portid" id="row${status.count}portid" value="${casedet[1]}" /> </section>
${status.count}</td> </form:form>
<td>${casedet[2]}</td> </main>
<td>${casedet[3]}</td> </div>
<td>${casedet[4]}</td> </body>
<td>${casedet[5]}</td>
<td>${casedet[6]}</td>
<td>${casedet[7]}</td>
<td>${casedet[8]}</td>
<td>${casedet[9]}</td>
<td>${casedet[10]}</td>
<td id="row${status.count}col"></td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
</form:form>
</div>
</body>
<!-- Page Load Javascript -->
<script language="javascript" type="text/javascript">
InitPage();
</script>
<!-- -->
<!-- Process Message -->
<c:if test="${not empty caseGrid.getErrMsg()}">
<script language="javascript" type="text/javascript"> CallMessage('${caseGrid.getErrMsg()}',3000,200,300); </script>
</c:if>
<!-- -->
</html> </html>

View File

@@ -12,10 +12,9 @@
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/progressbar.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/edp/dedupe/dedupe-run.js?ver=1" type="text/javascript" defer></script>
<script language="javascript" src="/matrix/js/appjs/deduperun.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />
@@ -28,7 +27,7 @@
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" /> <link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
<link href="/matrix/css/dedupe-workflows-v1.css?v=1" rel="stylesheet" type="text/css" /> <link href="/matrix/css/dedupe-workflows-v1.css?v=8" rel="stylesheet" type="text/css" />
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script> <script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
<script src="/matrix/js/matrix-shell-v2.js" defer></script> <script src="/matrix/js/matrix-shell-v2.js" defer></script>
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
@@ -39,16 +38,16 @@
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-dedupe-workflow"> <body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-dedupe-workflow">
<div id='PageFrame'> <div id='PageFrame'>
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %> <%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
<%-- Shared shell owns ${Sessvals.menuHtml}. --%> <%-- Shared shell owns the authenticated user menu. --%>
<div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1200px"> <div id="formcontainer" class="matrix-tool-workspace__content" style="max-width:1200px">
<form:form method="post" name="deduperun" id="deduperun" modelAttribute="dedupeRun" > <form:form method="post" name="deduperun" id="deduperun" modelAttribute="dedupeRun" >
<input type="hidden" name="curu" id="curu" value="${Sessvals.getUserID()}" /> <input type="hidden" id="dedupe-csrf-token" value="${dedupeRun.csrfToken}" />
<div> <div>
<!-- Title --> <!-- Title -->
<div class="title"> <div class="title matrix-dedupe-run__title">
<img class="matrix-title-icon" src="/matrix/images/dedupe.png" align="absmiddle" /> <img class="matrix-title-icon" src="/matrix/images/dedupe.png" alt="" />
<span class="matrix-title-text" align="absmiddle">Dedupe Run</span> <span class="matrix-title-text">Dedupe Run</span>
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="SubmitForm('rundedupe','_parent','deduperun')"/> <img class="matrix-title-action" src="/matrix/images/reload.png" alt="" title="Refresh Grid" onclick="SubmitForm('rundedupe','_parent','deduperun')"/>
</div> </div>
<!-- --> <!-- -->
<div id="TablePanel" class="tableContainer"> <div id="TablePanel" class="tableContainer">
@@ -63,28 +62,28 @@
</tr> </tr>
</thead> </thead>
<tbody class="scrollContent"> <tbody class="scrollContent">
<c:forEach items="${dedupeRun.dedupelist}" var="record" varStatus="mystatus"> <c:forEach items="${dedupeRun.batches}" var="record" varStatus="mystatus">
<tr title="${record.lockedby}"> <tr title="${record.lockedby}">
<td>${mystatus.count}</td> <td>${mystatus.count}</td>
<td id="parent${mystatus.count}" onclick="ExpandList(this.id)" > <td id="parent${mystatus.count}" onclick="ExpandList(this.id)" >
<form:hidden path="dedupelist[${mystatus.index}].lockedby" id="locby${mystatus.count}" value="${status.value}"/> <form:hidden path="batches[${mystatus.index}].lockedby" id="locby${mystatus.count}"/>
<form:hidden path="dedupelist[${mystatus.index}].cutoffon" id="cuttime${mystatus.count}" value="${status.value}"/> <form:hidden path="batches[${mystatus.index}].cutoffon" id="cuttime${mystatus.count}"/>
<span class="customLink" style="cursor:pointer">${record.cutoffon}</span> <span class="customLink" style="cursor:pointer">${record.cutoffon}</span>
</td> </td>
<td align="center"> <td align="center">
<form:hidden path="dedupelist[${mystatus.index}].totaddr" id="totaddr${mystatus.count}" value="${status.value}"/>${record.totaddr} <form:hidden path="batches[${mystatus.index}].totalAddresses" id="totaddr${mystatus.count}"/>${record.totalAddresses}
</td> </td>
<td align="center"> <td align="center">
<form:hidden path="dedupelist[${mystatus.index}].totcase" id="totcase${mystatus.count}" value="${status.value}"/>${record.totcase} <form:hidden path="batches[${mystatus.index}].totalCases" id="totcase${mystatus.count}"/>${record.totalCases}
</td> </td>
<td align="center"> <td align="center">
<form:hidden path="dedupelist[${mystatus.index}].islocked" id="locked${mystatus.count}" value="${status.value}" /> <form:hidden path="batches[${mystatus.index}].islocked" id="locked${mystatus.count}"/>
<c:choose> <c:choose>
<c:when test="${record.islocked gt 0}"> <c:when test="${record.islocked gt 0}">
<img src="/matrix/images/locked.png"/> <img src="/matrix/images/locked.png"/>
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<input type="button" id="btndedupe" class="button" value="Run Earlier & Negative" onclick="showDedupePanel('cutlist${mystatus.count}')" /> <button type="button" class="btn btn-primary btn-sm js-run-dedupe" data-table="cutlist${mystatus.count}">Run Earlier &amp; Negative</button>
</c:otherwise> </c:otherwise>
</c:choose> </c:choose>
</td> </td>
@@ -112,38 +111,39 @@
</tr> </tr>
</thead> </thead>
<tbody class="scrollContent"> <tbody class="scrollContent">
<c:forEach items="${record.sublist}" var="record1" varStatus="mystatus1"> <c:forEach items="${record.cases}" var="record1" varStatus="mystatus1">
<tr title="${record1.lockedby}child" id="row${mystatus1.count}${mystatus.count}"> <tr title="${record1.lockedby}child" id="row${mystatus1.count}${mystatus.count}"
data-document-case-id="${record1.uuid}" data-earlier="${record1.earlier}" data-negative="${record1.negative}">
<td>${mystatus1.count}</td> <td>${mystatus1.count}</td>
<td> <td>
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].lockedby" id="locby${mystatus1.count}child" value="${status.value}"/> <form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].lockedby" id="locby${mystatus1.count}child"/>
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].mvcode" id="mvcode${mystatus1.count}child" value="${status.value}"/> <form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].mvcode" id="mvcode${mystatus1.count}child"/>
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].uuid" id="uuid${mystatus1.count}${mystatus.count}" value="${status.value}"/> <form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].uuid" id="uuid${mystatus1.count}${mystatus.count}"/>
<span>${record1.mvcode}</span> <span>${record1.mvcode}</span>
</td> </td>
<td> <td>
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].applno" id="applno${mystatus1.count}child" value="${status.value}"/>${record1.applno} <form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].applno" id="applno${mystatus1.count}child"/>${record1.applno}
</td> </td>
<td> <td>
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].customername" id="cname${mystatus1.count}child" value="${status.value}"/>${record1.customername} <form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].customername" id="cname${mystatus1.count}child"/>${record1.customername}
</td> </td>
<td> <td>
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].apptype" id="ctype${mystatus1.count}child" value="${status.value}"/>${record1.apptype} <form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].apptype" id="ctype${mystatus1.count}child"/>${record1.apptype}
</td> </td>
<td> <td>
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].totrv" id="totrv${mystatus1.count}child" value="${status.value}"/>${record1.totrv} <form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].totrv" id="totrv${mystatus1.count}child"/>${record1.totrv}
</td> </td>
<td> <td>
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].totov" id="totov${mystatus1.count}child" value="${status.value}"/>${record1.totov} <form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].totov" id="totov${mystatus1.count}child"/>${record1.totov}
</td> </td>
<td> <td>
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].totpv" id="totpv${mystatus1.count}child" value="${status.value}"/>${record1.totpv} <form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].totpv" id="totpv${mystatus1.count}child"/>${record1.totpv}
</td> </td>
<td id="td${mystatus1.count}${mystatus.count}ear"> <td id="td${mystatus1.count}${mystatus.count}ear">
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].earlier" id="row${mystatus1.count}${mystatus.count}ear" value="${status.value}"/><span id="sp${mystatus1.count}${mystatus.count}ear">${record1.earlier}</span> <form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].earlier" id="row${mystatus1.count}${mystatus.count}ear"/><span id="sp${mystatus1.count}${mystatus.count}ear">${record1.earlier}</span>
</td> </td>
<td id="td${mystatus1.count}${mystatus.count}neg"> <td id="td${mystatus1.count}${mystatus.count}neg">
<form:hidden path="dedupelist[${mystatus.index}].sublist[${mystatus1.index}].negative" id="row${mystatus1.count}${mystatus.count}neg" value="${status.value}"/><span id="sp${mystatus1.count}${mystatus.count}neg">${record1.negative}</span> <form:hidden path="batches[${mystatus.index}].cases[${mystatus1.index}].negative" id="row${mystatus1.count}${mystatus.count}neg"/><span id="sp${mystatus1.count}${mystatus.count}neg">${record1.negative}</span>
</td> </td>
</tr> </tr>
</c:forEach> </c:forEach>
@@ -158,20 +158,10 @@
</table> </table>
</div> </div>
</div> </div>
<form:hidden path="SessUUID" value="${dedupeRun.getSessUUID()}"/> </form:form>
</form:form>
<input type="hidden" id="invalidfields" value="0" /> <input type="hidden" id="invalidfields" value="0" />
<input type="hidden" id="selectedports" value="0" /> <input type="hidden" id="selectedports" value="0" />
</div> </div>
</div> </div>
</body> </body>
<!-- Page Load Javascript -->
<script language="javascript" type="text/javascript">
</script>
<!-- -->
<!-- Process Message -->
<c:if test="${not empty dedupeRun.getErrMsg()}">
<script language="javascript" type="text/javascript"> CallMessage('${dedupeRun.getErrMsg()}',5000,200,300); </script>
</c:if>
<!-- -->
</html> </html>

View File

@@ -8,12 +8,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script> <script src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/appjs/dedupedo.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
<link href="/matrix/css/button.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/button.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/div.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/div.css" rel="stylesheet" type="text/css" />
@@ -25,12 +20,13 @@
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" /> <link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
<link href="/matrix/css/dedupe-workflows-v1.css?v=1" rel="stylesheet" type="text/css" /> <link href="/matrix/css/dedupe-workflows-v1.css?v=3" rel="stylesheet" type="text/css" />
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script> <script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
<script src="/matrix/js/matrix-shell-v2.js" defer></script> <script src="/matrix/js/matrix-shell-v2.js" defer></script>
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script> <script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script> <script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
<script src="/matrix/js/edp/dedupe/dedupe-send.js?v=1" defer></script>
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
</head> </head>
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-dedupe-workflow"> <body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-dedupe-workflow">
@@ -38,7 +34,9 @@
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %> <%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
<%-- Shared shell owns ${Sessvals.menuHtml}. --%> <%-- Shared shell owns ${Sessvals.menuHtml}. --%>
<div id="formcontainer" class="matrix-tool-workspace__content"> <div id="formcontainer" class="matrix-tool-workspace__content">
<form:form method="post" name="senddedupe" id="senddedupe" modelAttribute="senddedupe" > <form:form method="post" name="senddedupe" id="senddedupe" modelAttribute="senddedupe"
data-list-url="${pageContext.request.contextPath}/ver/dedupetosend"
data-generate-url="${pageContext.request.contextPath}/ver/senddedreports">
<!-- Common Details (Section1) Visible for all portfolios--> <!-- Common Details (Section1) Visible for all portfolios-->
<div> <div>
<!-- Title --> <!-- Title -->
@@ -46,14 +44,13 @@
<img class="matrix-title-icon" src="/matrix/images/commondet.png" align="absmiddle" /> <img class="matrix-title-icon" src="/matrix/images/commondet.png" align="absmiddle" />
<span class="matrix-title-text" align="absmiddle">List of Cases</span> <span class="matrix-title-text" align="absmiddle">List of Cases</span>
<div class="divselect" id="divportfolio" style="width:167px;position:absolute;top:3px;right:30px;"> <div class="divselect" id="divportfolio" style="width:167px;position:absolute;top:3px;right:30px;">
<form:select path="portfolioid" multiple="false" id="portlist" style="width:185px" onchange="SubmitForm('dedupetosend','_parent','senddedupe')"> <form:select path="portfolioid" multiple="false" id="portlist" style="width:185px">
<form:option value="-1" label="SELECT PORTFOLIO" selected="true"/> <form:option value="-1" label="SELECT PORTFOLIO" selected="true"/>
<c:forEach items="${portlist}" var="port"> <c:forEach items="${portlist}" var="port">
<form:option value="${port[0]}" label="${port[1]}" /> <form:option value="${port.value}" label="${port.label}" />
</c:forEach> </c:forEach>
</form:select> </form:select>
</div> </div>
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="SubmitForm('senddedupe','_parent','senddedupe')"/>
</div> </div>
<!-- --> <!-- -->
<div id="TablePanel" class="tableContainer"> <div id="TablePanel" class="tableContainer">
@@ -75,26 +72,28 @@
</thead> </thead>
<tbody class="scrollContent"> <tbody class="scrollContent">
<c:forEach items="${senddedupe.caselist}" var="casedet" varStatus="status"> <c:forEach items="${senddedupe.caselist}" var="casedet" varStatus="status">
<tr id="row${status.count}"> <tr id="row${status.count}" data-case-id="${casedet.uuid}">
<td> <td>
<input type="hidden" name="uuid" id="row${status.count}uuid" value="${casedet[0]}" /> <input type="hidden" name="uuid" id="row${status.count}uuid" value="${casedet.uuid}" />
${status.count}</td> ${status.count}</td>
<td>${casedet[1]}</td> <td>${casedet.mvcode}</td>
<td>${casedet[2]}</td> <td>${casedet.applno}</td>
<td>${casedet[3]}</td> <td>${casedet.customername}</td>
<td>${casedet[4]}</td> <td>${casedet.apptype}</td>
<td>${casedet[5]}</td> <td>${casedet.product}</td>
<td>${casedet[6]}</td> <td>${casedet.earlier}</td>
<td>${casedet[7]}</td> <td>${casedet.negative}</td>
<td>${casedet[8]}</td> <td>${casedet.deduperunon}</td>
<td>${casedet[9]}</td> <td>${casedet.bkbranchname}</td>
<td align="center"><input type="checkbox" name="chkrow${status.count}" id="chkrow${status.count}" checked onclick="checkList('chkrow','selall')" /></td> <td align="center"><input type="checkbox" value="${casedet.uuid}" checked /></td>
</tr> </tr>
</c:forEach> </c:forEach>
</tbody> </tbody>
</table> </table>
</div> </div>
<input type="button" class="button" name="btngenreport" style="float:right;margin-top:10px" value="Generate Report" id="btngenreport" accesskey="G" onclick="return ValidateSendDedupe('senddedupe');" /> <div class="matrix-workflow-actions">
<button type="button" class="button" name="btngenreport" id="btngenreport" accesskey="G">Generate Report</button>
</div>
</div> </div>
<form:hidden path="uuids" id="hfdelstat" /> <form:hidden path="uuids" id="hfdelstat" />
<form:hidden path="suuid" /> <form:hidden path="suuid" />
@@ -103,15 +102,9 @@
</form:form> </form:form>
</div> </div>
</body> </body>
<!-- Page Load Javascript --> <!-- Process Message -->
<script language="javascript" type="text/javascript"> <c:if test="${not empty msg}">
InitSendDedupe(); <script>CygnusNotifications.show({type:"success", message:"${msg}"});</script>
</script> </c:if>
<!-- -->
<!-- Process Message -->
<c:if test="${not empty msg}">
<script language="javascript" type="text/javascript">contentType="html"; CallMessage('${msg}',3000,200,300); </script>
</c:if>
<!-- --> <!-- -->
</html> </html>

View File

@@ -9,38 +9,32 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Cygnus 1.0 | Dedupe Viewer</title> <title>Cygnus 1.0 | Dedupe Viewer</title>
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script> <script src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/appjs/dedupedo.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
<link href="/matrix/css/button.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/button.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/div.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/div.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/textbox.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/textbox.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/table.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/table.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" /> <link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
<link href="/matrix/css/dedupe-workflows-v1.css?v=1" rel="stylesheet" type="text/css" /> <link href="/matrix/css/dedupe-workflows-v1.css?v=6" rel="stylesheet" type="text/css" />
<script src="/matrix/js/matrix-dialog-child.js" type="text/javascript"></script> <script src="/matrix/js/matrix-dialog-child.js" type="text/javascript"></script>
<link href="/matrix/css/select.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/select.css" rel="stylesheet" type="text/css" />
<script src="/matrix/js/matrix-dialog-child.js" type="text/javascript"></script> <script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script> <script src="/matrix/js/edp/dedupe/dedupe-match.js?v=1" defer></script>
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
</head> </head>
<body class="matrix-shell matrix-v2 matrix-tool-workspace matrix-dedupe-workflow matrix-dedupe-match"> <body class="matrix-shell matrix-v2 matrix-tool-workspace matrix-dedupe-workflow matrix-dedupe-match">
<div id='PageFrame'> <div id='PageFrame'>
<!-- Title Bar --> <div id="formcontainer" class="matrix-tool-workspace__content">
<%@ include file="/WEB-INF/app/fragments/app-title.jspf" %> <form:form method="post" action="${pageContext.request.contextPath}/ver/updatededupe"
<!-- --> name="dedupeDetails" id="dedupeDetails" modelAttribute="dedupeDetails"
<div id="formcontainer" class="matrix-tool-workspace__content"> data-records-url="${pageContext.request.contextPath}/ver/deduperecords">
<form:form method="post" name="dedupeDetails" id="dedupeDetails" modelAttribute="dedupeDetails" >
<!-- Parent Record Details --> <!-- Parent Record Details -->
<div> <div class="matrix-dedupe-match__source">
<form:hidden path="customername"/> <form:hidden path="customername"/>
<form:hidden path="dob" id="cdob"/> <form:hidden path="dob" id="cdob"/>
<form:hidden path="mobile" id="mob"/> <form:hidden path="mobile" id="mob"/>
@@ -50,8 +44,8 @@
<form:hidden path="offaddress" id="oaddress"/> <form:hidden path="offaddress" id="oaddress"/>
<!-- Title --> <!-- Title -->
<div class="title"> <div class="title">
<img class="matrix-title-icon" src="/matrix/images/page.png" /> <img class="matrix-title-icon" src="/matrix/images/page.png" alt="" />
<span class="matrix-title-text">Source Record (MV Code - ${dedupeDetails.mvcode})&nbsp;&nbsp;&nbsp;(Category - ${dedupeDetails.category})</span> <span class="matrix-title-text fw-bold">Source Record (MV Code - ${dedupeDetails.mvcode})&nbsp;&nbsp;&nbsp;(Category - ${dedupeDetails.category})</span>
</div> </div>
<!-- --> <!-- -->
<!-- Form (Source Record) --> <!-- Form (Source Record) -->
@@ -85,13 +79,13 @@
</div> </div>
<!-- --> <!-- -->
<!-- Earlier / Negative Details Container --> <!-- Earlier / Negative Details Container -->
<div style="border:1px solid #a7abb4;"> <div class="matrix-dedupe-match__comparison">
<table style="width:100%" border="0" cellspacing="0" > <table style="width:100%" border="0" cellspacing="0" >
<tr> <tr>
<td style="width:50%" valign="top"> <td style="width:50%" valign="top">
<!-- Title --> <!-- Title -->
<div class="title"> <div class="title">
<img class="matrix-title-icon" src="/matrix/images/ear_details.png" align="absmiddle" /> <img class="matrix-title-icon" src="/matrix/images/ear_details.png" alt="" />
<span class="matrix-title-text">Earlier Details <span id='efound'></span></span> <span class="matrix-title-text">Earlier Details <span id='efound'></span></span>
</div> </div>
<!-- --> <!-- -->
@@ -117,24 +111,21 @@
<td colspan="4"><textarea style="width:443px;font-size:12pt" rows="4" id="earaddress" readonly="readonly" ></textarea></td> <td colspan="4"><textarea style="width:443px;font-size:12pt" rows="4" id="earaddress" readonly="readonly" ></textarea></td>
</tr> </tr>
<tr> <tr>
<td>Residence Phone</td> <td colspan="4">
<td>Office Phone</td> <div class="matrix-phone-grid">
<td>Mobile Number</td> <label>Residence Phone<input id="earrphone" readonly="readonly" /></label>
<td></td> <label>Office Phone<input id="earophone" readonly="readonly" /></label>
<label>Mobile Number<input id="earmobile" readonly="readonly" /></label>
</div>
</td>
</tr> </tr>
<tr> <tr>
<td><input style="width:150px;font-size:12pt" id="earrphone" readonly="readonly" /></td> <td colspan="4" class="matrix-record-navigation">
<td><input style="width:150px;font-size:12pt" id="earophone" readonly="readonly" /></td> <button type="button" class="matrix-record-nav matrix-record-nav--first" aria-label="First earlier match" accesskey="H" onclick="findRecord(1,1)"></button>
<td><input style="width:112px;font-size:12pt" id="earmobile" readonly="readonly" /></td> <button type="button" class="matrix-record-nav matrix-record-nav--previous" aria-label="Previous earlier match" accesskey="J" onclick="findRecord(2,1)"></button>
<td></td> <button type="button" class="matrix-record-nav matrix-record-nav--next" aria-label="Next earlier match" accesskey="K" onclick="findRecord(3,1)"></button>
</tr> <button type="button" class="matrix-record-nav matrix-record-nav--last" aria-label="Last earlier match" accesskey="L" onclick="findRecord(4,1)"></button>
<tr> <button type="button" class="button matrix-match-action" id="btnear" accesskey="9" onclick="addRemarks(1,'earremarks')">Match Found</button>
<td colspan="4">
<input type="button" class="button" name="btnfirst1" style="margin-top:5px;float:left" value="" id="btnfirst" accesskey="H" onclick="findRecord(1,1)" />
<input type="button" class="button" name="btnprev1" style="margin-top:5px;float:left" value="" id="btnprev" accesskey="J" onclick="findRecord(2,1)" />
<input type="button" class="button" name="btnnext1" style="margin-top:5px;float:left" value="" id="btnnext" accesskey="K" onclick="findRecord(3,1)" />
<input type="button" class="button" name="btnlast1" style="margin-top:5px;float:left" value="" id="btnlast" accesskey="L" onclick="findRecord(4,1)" />
<input type="button" class="button" name="btnear" style="margin-top:5px;float:right;margin-right:7px" value="Match Found" id="btnear" accesskey="9" onclick="addRemarks(1,'earremarks')" />
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -148,7 +139,7 @@
<td valign="top" style="width:50%" id="tdneg"> <td valign="top" style="width:50%" id="tdneg">
<!-- Title --> <!-- Title -->
<div class="title"> <div class="title">
<img class="matrix-title-icon" src="/matrix/images/neg_details.png" align="absmiddle" /> <img class="matrix-title-icon" src="/matrix/images/neg_details.png" alt="" />
<span class="matrix-title-text">Negative Details <span id='nfound'></span></span> <span class="matrix-title-text">Negative Details <span id='nfound'></span></span>
</div> </div>
<!-- --> <!-- -->
@@ -173,25 +164,22 @@
<tr> <tr>
<td colspan="4"><textarea style="width:438px;font-size:12pt" rows="4" id="negaddress" readonly="readonly" ></textarea></td> <td colspan="4"><textarea style="width:438px;font-size:12pt" rows="4" id="negaddress" readonly="readonly" ></textarea></td>
</tr> </tr>
<tr>
<td>Residence Phone</td>
<td>Office Phone</td>
<td>Mobile Number</td>
<td></td>
</tr>
<tr>
<td><input style="width:150px;font-size:12pt" id="negrphone" readonly="readonly" /></td>
<td><input style="width:150px;font-size:12pt" id="negophone" readonly="readonly" /></td>
<td><input style="width:112px;font-size:12pt" id="negmobile" readonly="readonly" /></td>
<td></td>
</tr>
<tr> <tr>
<td colspan="4"> <td colspan="4">
<input type="button" class="button" name="btnfirst" style="margin-top:5px;float:left" value="" id="btnfirst" accesskey="U" onclick="findRecord(1,2)" /> <div class="matrix-phone-grid">
<input type="button" class="button" name="btnprev" style="margin-top:5px;float:left" value="" id="btnprev" accesskey="I" onclick="findRecord(2,2)" /> <label>Residence Phone<input id="negrphone" readonly="readonly" /></label>
<input type="button" class="button" name="btnnext" style="margin-top:5px;float:left" value="" id="btnnext" accesskey="O" onclick="findRecord(3,2)" /> <label>Office Phone<input id="negophone" readonly="readonly" /></label>
<input type="button" class="button" name="btnlast" style="margin-top:5px;float:left" value="" id="btnlast" accesskey="P" onclick="findRecord(4,2)" /> <label>Mobile Number<input id="negmobile" readonly="readonly" /></label>
<input type="button" class="button" name="btnear" style="margin-top:5px;float:right;margin-right:7px" value="Match Found" id="btnneg" accesskey="0" onclick="addRemarks(2,'negremarks')" /> </div>
</td>
</tr>
<tr>
<td colspan="4" class="matrix-record-navigation">
<button type="button" class="matrix-record-nav matrix-record-nav--first" aria-label="First negative match" accesskey="U" onclick="findRecord(1,2)"></button>
<button type="button" class="matrix-record-nav matrix-record-nav--previous" aria-label="Previous negative match" accesskey="I" onclick="findRecord(2,2)"></button>
<button type="button" class="matrix-record-nav matrix-record-nav--next" aria-label="Next negative match" accesskey="O" onclick="findRecord(3,2)"></button>
<button type="button" class="matrix-record-nav matrix-record-nav--last" aria-label="Last negative match" accesskey="P" onclick="findRecord(4,2)"></button>
<button type="button" class="button matrix-match-action" id="btnneg" accesskey="0" onclick="addRemarks(2,'negremarks')">Match Found</button>
</td> </td>
</tr> </tr>
<tr> <tr>
@@ -207,13 +195,13 @@
</div> </div>
<!-- --> <!-- -->
<!-- Earlier / Negative Details Container --> <!-- Earlier / Negative Details Container -->
<div style="border:1px solid #a7abb4;"> <div class="matrix-dedupe-match__remarks">
<table style="width:100%" border="0" cellspacing="0" > <table style="width:100%" border="0" cellspacing="0" >
<tr> <tr>
<td style="width:50%" valign="top"> <td style="width:50%" valign="top">
<!-- Title --> <!-- Title -->
<div class="title"> <div class="title">
<img class="matrix-title-icon" src="/matrix/images/ear_rem.png" id="earimg" align="absmiddle" onclick="editRemarks('earremarks')" /> <img class="matrix-title-icon" src="/matrix/images/ear_rem.png" id="earimg" alt="" onclick="editRemarks('earremarks')" />
<span class="matrix-title-text">Earlier Match Remarks</span> <span class="matrix-title-text">Earlier Match Remarks</span>
<div class="nedtrem" id="ctrldiv"> <div class="nedtrem" id="ctrldiv">
<img src="/matrix/images/edit_rem.png" align="absmiddle" onclick="editRemarks('earremarks',1)" title="Remove current record remarks" /> <img src="/matrix/images/edit_rem.png" align="absmiddle" onclick="editRemarks('earremarks',1)" title="Remove current record remarks" />
@@ -224,7 +212,7 @@
<div id="FormPanel2" class="FormPanel"> <div id="FormPanel2" class="FormPanel">
<table align="center" class="matrix-form-controls" style="width:100%"> <table align="center" class="matrix-form-controls" style="width:100%">
<tr> <tr>
<td><form:textarea path="earremarks" style="width:98%" rows="3" readonly="true" ></form:textarea></td> <td><form:textarea path="earremarks" style="width:98%" rows="9" readonly="true" ></form:textarea></td>
</tr> </tr>
</table> </table>
</div> </div>
@@ -233,7 +221,7 @@
<td style="width:50%" valign="top"> <td style="width:50%" valign="top">
<!-- Title --> <!-- Title -->
<div class="title"> <div class="title">
<img class="matrix-title-icon" src="/matrix/images/neg_rem.png" align="absmiddle" /> <img class="matrix-title-icon" src="/matrix/images/neg_rem.png" alt="" />
<span class="matrix-title-text">Negative Match Remarks</span> <span class="matrix-title-text">Negative Match Remarks</span>
<div class="nedtrem" id="ctrldiv"> <div class="nedtrem" id="ctrldiv">
<img src="/matrix/images/edit_rem.png" align="absmiddle" onclick="editRemarks('negremarks',2)" title="Remove current record remarks" /> <img src="/matrix/images/edit_rem.png" align="absmiddle" onclick="editRemarks('negremarks',2)" title="Remove current record remarks" />
@@ -244,7 +232,7 @@
<div id="FormPanel2" class="FormPanel"> <div id="FormPanel2" class="FormPanel">
<table align="center" class="matrix-form-controls" style="width:100%"> <table align="center" class="matrix-form-controls" style="width:100%">
<tr> <tr>
<td><form:textarea path="negremarks" style="width:98%" rows="3" readonly="true" ></form:textarea></td> <td><form:textarea path="negremarks" style="width:98%" rows="9" readonly="true" ></form:textarea></td>
</tr> </tr>
</table> </table>
</div> </div>
@@ -259,23 +247,12 @@
<form:hidden path="uuid" /> <form:hidden path="uuid" />
<!-- --> <!-- -->
<input type="hidden" id="invalidfields" value="0" /> <input type="hidden" id="invalidfields" value="0" />
<input type="button" class="button" name="btncancel" style="margin-left:1px;margin-top:5px;float:right" value="Close" id="btncancel" accesskey="C" onclick="MatrixDialog.close(0)" /> <div class="matrix-workflow-actions">
<input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Save" id="btnsave" accesskey="S" onclick="return SubmitForm('updatededupe','_parent','dedupeDetails');" /> <input type="button" class="button" name="btncancel" value="Close" id="btncancel" accesskey="C" onclick="MatrixDialog.close(0)" />
<button type="submit" class="button" name="btnsave" id="btnsave" accesskey="S">Save</button>
</div>
</form:form> </form:form>
</div> </div>
</div> </div>
</body> </body>
<!-- Page Load Javascript --> </html>
<script language="javascript" type="text/javascript">
FindMatchedRecords('${dedupeDetails.uuid}');
</script>
<!-- -->
<!-- Process Message -->
<c:if test="${not empty msg}">
<script language="javascript" type="text/javascript"> CallMessage('${msg}',3000,200,300); </script>
<c:if test="${status == true}">
<script language="javascript" type="text/javascript">MatrixDialog.close(1);</script>
</c:if>
</c:if>
<!-- -->
</html>

View File

@@ -1,686 +0,0 @@
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@page language="java" session="true" %>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Cygnus 1.0 |
<c:if test="${caseDetails.getFormMode() eq 1}">Add Cases</c:if>
<c:if test="${caseDetails.getFormMode() eq 2}">Edit Details</c:if>
</title>
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/appjs/punching.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/validator.js?ver=2" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ajax.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ajax-dynamic-list.js" type="text/javascript"></script>
<link href="/matrix/css/button.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/div.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/textbox.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/select.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/table.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/autocomplete.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
<link href="/matrix/css/punch-workspace-v3.css?v=1" rel="stylesheet" type="text/css" />
<link href="/matrix/css/add-cases-v4.css?v=5" rel="stylesheet" type="text/css" />
<script src="/matrix/js/matrix-dialog-child.js" type="text/javascript"></script>
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
<script src="/matrix/js/matrix-dialog-child.js" type="text/javascript"></script>
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
</head>
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-punch-workspace matrix-add-cases">
<div id='PageFrame'>
<c:if test="${caseDetails.getFormMode() eq 1}">
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
</c:if>
<div id="formcontainer" class="matrix-tool-workspace__content">
<form:form method="post" name="caseDetails" id="caseDetails" modelAttribute="caseDetails" >
<!-- Common Details (Section1) Visible for all portfolios-->
<div>
<!-- Title -->
<div class="title">
<img class="matrix-title-icon" src="/matrix/images/commondet.png" align="absmiddle" />
<span class="matrix-title-text" align="absmiddle">Common Details</span>
<c:choose>
<c:when test="${caseDetails.getFormMode() eq 1}">
<div class="divselect" id="divportfolio" style="width:167px;position:absolute;top:3px;right:13px;">
<form:select path="PortfolioId" multiple="false" id="portlist" style="width:185px" onchange="SubmitForm('casedet','_parent','caseDetails')">
<form:option value="-1" label="SELECT PORTFOLIO" selected="true"/>
<c:forEach items="${portlist}" var="port">
<form:option value="${port[0]}" label="${port[1]}" />
</c:forEach>
</form:select>
</div>
</c:when>
<c:otherwise>
<form:hidden path="PortfolioId" id="portlist" />
</c:otherwise>
</c:choose>
</div>
<!-- -->
<!-- Form (Section1) -->
<div id="FormPanel1" class="FormPanel">
<table align="center" class="matrix-form-controls" width="99%">
<tr>
<td>
<div class="widget">
<div class="lblcontainer">
MV Code
</div>
<div class="inputcontainer">
<form:input style="width:65px;text-transform:uppercase" readonly="true" path="MvCode" value="${caseDeails.getMvCode()}" />
</div>
</div>
<div class="widget">
<div class="lblcontainer">
Appl No.
</div>
<div class="inputcontainer">
<form:input maxlength="25" style="width:115px;text-transform:uppercase" id="ApplNo" path="ApplNo" value="${caseDetails.getApplNo()}" onblur="if(validate(this,'t','AlphaNumeric')){FindSameDet(this,'A','CustomerName');}" />
</div>
</div>
<div class="widget">
<div class="lblcontainer">
Bank Code
</div>
<div class="inputcontainer">
<form:input maxlength="25" style="width:70px;text-transform:uppercase" path="BankCode" value="${caseDetails.getBankCode()}" onblur="validate(this,'f','AlphaNumeric');" />
</div>
</div>
<div class="widget">
<div class="lblcontainer">
Branch
</div>
<div class="inputcontainer">
<div class="divselect" id="divbranch" style="width:135px;">
<form:select path="BankBranchId" multiple="false" id="branchlist" style="width:153px" onblur="validate(this,'t','');">
<form:option value="-1" label="SELECT" selected="true"/>
<c:forEach items="${branchlist}" var="brnch">
<form:option value="${brnch[0]}" label="${brnch[1]}" />
</c:forEach>
</form:select>
</div>
</div>
</div>
<div class="widget">
<div class="lblcontainer">
Product
</div>
<div class="inputcontainer">
<div class="divselect" id="divproduct" style="width:132px;">
<form:select path="Product" multiple="false" id="prodlist" style="width:150px" onblur="validate(this,'t','');">
<form:option value="-1" label="SELECT" selected="true"/>
<c:forEach items="${prodlist}" var="prod">
<form:option value="${prod[0]}" label="${prod[1]}" />
</c:forEach>
</form:select>
</div>
</div>
</div>
<div class="widget">
<div class="lblcontainer">
Name
</div>
<div class="inputcontainer">
<form:input maxlength="60" style="width:200px" path="CustomerName" value="${caseDetails.getCustomerName()}" onblur="validate(this,'t','AlphaSpace');" />
</div>
</div>
<div class="widget">
<div class="lblcontainer">
Father Name
</div>
<div class="inputcontainer">
<form:input maxlength="25" style="width:145px" path="FatherName" value="${caseDetails.getFatherName()}" onblur="validate(this,'f','AlphaSpace');" />
</div>
</div>
<div class="widget">
<div class="lblcontainer">
App Type
</div>
<div class="inputcontainer">
<div class="divselect" id="divapptype" style="width:135px;">
<form:select path="CustomerType" multiple="false" id="typelist" style="width:153px" onchange="ToggleChks((this.value.toUpperCase()!='APPLICANT' && this.value.toUpperCase()!='-1'),'chksresi!C0L!chksoff!C0L!chksprop!C0L!','!C0L!')" onblur="validate(this,'t','');">
<form:option value="-1" label="SELECT" selected="true"/>
<c:forEach items="${typelist}" var="type">
<form:option value="${type[0]}" label="${type[1]}" />
</c:forEach>
</form:select>
</div>
</div>
</div>
<div class="widget">
<div class="lblcontainer">
Category
</div>
<div class="inputcontainer">
<div class="divselect" id="divcategory" style="width:115px;">
<form:select path="Category" multiple="false" id="catlist" style="width:133px">
<form:option value="-1" label="SELECT" selected="true"/>
<c:forEach items="${catlist}" var="cat">
<form:option value="${cat[0]}" label="${cat[1]}" />
</c:forEach>
</form:select>
</div>
</div>
</div>
<div class="widget">
<div class="lblcontainer">
DOB
</div>
<div class="inputcontainer">
<form:input maxlength="10" style="width:80px" path="DOB" id="dob" value="${caseDetails.getDOB()}" onkeydown="return addSlashes(this,event)" onblur="validate(this,'f','Date')" />
</div>
</div>
<div class="widget">
<div class="lblcontainer">
Mobile No.
</div>
<div class="inputcontainer">
<form:input maxlength="21" style="width:120px" path="MobileNo" value="${caseDetails.getMobileNo()}" onblur="validate(this,'f','AllowWrong');" />
</div>
</div>
<div class="widget">
<div class="lblcontainer">
Loan Amt
</div>
<div class="inputcontainer">
<form:input maxlength="15" style="width:100px" path="LoanAmount" value="${caseDetails.getLoanAmount()}" onblur="validate(this,'f','LoanAmount');" />
</div>
</div>
<div class="widget">
<div class="lblcontainer">
C Person
</div>
<div class="inputcontainer">
<form:input maxlength="25" style="width:200px" path="ContactPerson" value="${caseDetails.getContactPerson()}" onblur="validate(this,'f','AlphaSpace');" />
</div>
</div>
<div class="widget">
<div class="lblcontainer">
Special Inst.
</div>
<div class="inputcontainer">
<form:input maxlength="50" id="splist" style="width:833px" path="SpecialInst" value="${caseDetails.getSpecialInst()}" onblur="validate(this,'f','SplInstruction')" />
</div>
</div>
</td>
</tr>
</table>
</div>
<!-- -->
</div>
<!-- -->
<!-- Residence Details (Section2) Visible for portfolios in which residence visit/ residence TVR could be initiated-->
<div id="section2">
<!-- Title -->
<div class="title">
<img class="matrix-title-icon" src="/matrix/images/resdet.png" />
<span class="matrix-title-text">Residence Details</span>
<div class="divchk" id="ctrldiv">
<form:checkbox path="Rvr" id="chkresi" onclick="HandleClick(this)" />RVR&nbsp;
<form:checkbox path="SameResi" id="chksresi" onclick="return FindSameDet(this,'R','ResiPhone')" /><span id="chksresi">Same Resi</span>
<form:checkbox path="Rtvr" id="chkteler" onclick="HandleClick(this)" /><span id="chkteler">RTV</span>
</div>
</div>
<!-- -->
<!-- Form (Section2) -->
<div id="FormPanel2" class="FormPanel">
<table align="center" class="matrix-form-controls" style="width:100%">
<tr>
<td>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
House No.
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<form:input readonly="true" maxlength="20" style="width:70px" path="ResiAdd1" value="${caseDetails.getResiAdd1()}" onblur="validate(this,document.getElementById('chkresi').checked ? 't':'f','SplInstruction')" />
</div>
</div>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
Sub Locality
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<form:input readonly="true" maxlength="70" style="width:180px" path="ResiAdd2" value="${caseDetails.getResiAdd2()}" onblur="validate(this,'f','SplInstruction')" />
</div>
</div>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
City
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<div class="divselect" id="divrcity" style="width:110px;">
<form:select path="ResiCity" multiple="false" id="ResiAdd3_citylist" style="width:128px" onblur="validate(this,document.getElementById('chkresi').checked ? 't':'f','')" >
<form:option value="-1" label="Select" selected="true"/>
<form:option value="Unknown" label="Unknown"/>
<c:forEach items="${citylist}" var="city">
<form:option value="${city[0]}" label="${city[1]}" />
</c:forEach>
</form:select>
</div>
</div>
</div>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
Locality
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<form:input readonly="true" maxlength="50" style="width:180px" path="ResiAdd3" value="${caseDetails.getResiAdd3()}" onkeyup="ajax_showOptions(this,event)" onblur="onLocalityBlur(this,document.getElementById('chkresi').checked ? 't':'f')" />
<form:hidden path="ResiLoc" id="ResiAdd3_hidden" />
</div>
</div>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
Landmark
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<form:input readonly="true" maxlength="50" style="width:150px" path="ResiLandmark" value="${caseDetails.getResiLandmark()}" onblur="validate(this,'f','SplInstruction')" />
</div>
</div>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
Pincode
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<form:input readonly="true" maxlength="6" style="width:45px" id="ResiAdd3_Pincode" path="ResiPincode" value="${caseDetails.getResiPincode()}" onblur="validate(this,document.getElementById('chkresi').checked ? 't':'f','Pincode')" />
</div>
</div>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
Phone No.
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<form:input maxlength="25" style="width:107px" path="ResiPhone" value="${caseDetails.getResiPhone()}" onblur="validate(this,document.getElementById('chkteler').checked ? 't':'f','Phone')" />
</div>
</div>
</td>
</tr>
</table>
</div>
<!-- -->
</div>
<!-- -->
<!-- Office Details (Section3) Visible for portfolios in which office visit/ office TVR could be initiated-->
<div id="section3">
<!-- Title -->
<div class="title">
<img class="matrix-title-icon" src="/matrix/images/optmale.png" />
<span class="matrix-title-text">Office Details</span>
<div class="divchk" id="ctrldiv">
<form:checkbox path="Ovr" id="chkoffice" onclick="HandleClick(this)" />OVR&nbsp;
<form:checkbox path="RCO" id="chkrco" style="display:none" onclick="HandleClick(this)" /><span id="chkrco">RCO</span>&nbsp;
<form:checkbox path="SameOffice" id="chksoff" onclick="return FindSameDet(this,'O','OffPhone')" /><span id="chksoff">Same Office</span>
<form:checkbox path="Otvr" id="chkteleo" onclick="HandleClick(this)" /><span id="chkteleo">OTV</span>
</div>
</div>
<!-- -->
<!-- Form (Section3) -->
<div id="FormPanel3" class="FormPanel">
<table align="center" class="matrix-form-controls">
<tr>
<td>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
Company
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<form:input maxlength="50" style="width:215px" path="CompanyName" value="${caseDetails.getCompanyName()}" onblur="validate(this,'f','SplInstruction')" />
</div>
</div>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
Plot No.
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<form:input readonly="true" maxlength="20" style="width:90px" path="OffAdd1" value="${caseDetails.getOffAdd1()}" onblur="validate(this,document.getElementById('chkoffice').checked ? 't':'f','SplInstruction')" />
</div>
</div>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
Sub Locality
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<form:input readonly="true" maxlength="70" style="width:200px" path="OffAdd2" value="${caseDetails.getOffAdd2()}" onblur="validate(this,'f','SplInstruction')" />
</div>
</div>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
City
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<div class="divselect" id="divocity" style="width:110px;">
<form:select path="OffCity" multiple="false" id="OffAdd3_citylist" style="width:128px" onblur="validate(this,document.getElementById('chkoffice').checked ? 't':'f','')">
<form:option value="-1" label="Select" selected="true"/>
<form:option value="Unknown" label="Unknown"/>
<c:forEach items="${citylist}" var="city">
<form:option value="${city[0]}" label="${city[1]}" />
</c:forEach>
</form:select>
</div>
</div>
</div>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
Locality
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<form:input readonly="true" maxlength="50" style="width:200px" path="OffAdd3" value="${caseDetails.getOffAdd3()}" onkeyup="ajax_showOptions(this,event)" onblur="validate(this,document.getElementById('chkoffice').checked ? 't':'f','SplInstruction')" />
<form:hidden path="OffLoc" id="OffAdd3_hidden" />
</div>
</div>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
Pincode
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<form:input readonly="true" maxlength="6" style="width:45px" id="OffAdd3_Pincode" path="OffPincode" value="${caseDetails.getOffPincode()}" onblur="validate(this,document.getElementById('chkoffice').checked ? 't':'f','Pincode')" />
</div>
</div>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
Landmark
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<form:input maxlength="50" style="width:215px" path="OffLandmark" value="${caseDetails.getOffLandmark()}" onblur="validate(this,'f','SplInstruction')" />
</div>
</div>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
Department
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<form:input maxlength="25" style="width:200px" path="Department" value="${caseDetails.getDepartment()}" onblur="validate(this,'f','SplInstruction')" />
</div>
</div>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
Designation
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<form:input maxlength="25" style="width:210px" path="Designation" value="${caseDetails.getDesignation()}" onblur="validate(this,'f','SplInstruction')" />
</div>
</div>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
Office Phone-Extn
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<form:input maxlength="25" style="width:150px" path="OffPhone" value="${caseDetails.getOffPhone()}" onblur="validate(this,document.getElementById('chkteleo').checked ? 't':'f','Phone')" />-<form:input type="text" style="width:23px" path="Extension" value="${caseDetails.getExtension()}" onblur="validate(this,'f','Extension')" />
</div>
</div>
</td>
</tr>
</table>
</div>
<!-- -->
</div>
<!-- -->
<!-- Property Details (Section4) Visible for portfolios in which property visit could be initiated-->
<div id="section4">
<!-- Title -->
<div class="title">
<img class="matrix-title-icon" src="/matrix/images/resdet.png" />
<span class="matrix-title-text">Property Details</span>
<div class="divchk" id="ctrldiv">
<form:checkbox path="Pvr" id="chkprop" onclick="HandleClick(this)" />PVR&nbsp;
<form:checkbox path="RCP" id="chkrcp" style="display:none" onclick="HandleClick(this)" /><span id="chkrcp">RCP</span>&nbsp;
<form:checkbox path="OCP" id="chkocp" style="display:none" onclick="HandleClick(this)" /><span id="chkocp">OCP</span>&nbsp;
<form:checkbox path="SameProp" id="chksprop" onclick="return FindSameDet(this,'P','PropAdd3_Pincode')" /><span id="chksprop">Same Property</span>
</div>
</div>
<!-- -->
<!-- Form (Section4) -->
<div id="FormPanel4" class="FormPanel">
<table align="center" class="matrix-form-controls">
<tr>
<td>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
House / Plot No.
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<form:input readonly="true" maxlength="20" style="width:120px" path="PropAdd1" value="${caseDetails.getPropAdd1()}" onblur="validate(this,document.getElementById('chkprop').checked ? 't':'f','SplInstruction')" />
</div>
</div>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
Sub Locality
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<form:input readonly="true" maxlength="70" style="width:200px" path="PropAdd2" value="${caseDetails.getPropAdd2()}" onblur="validate(this,'f','SplInstruction')" />
</div>
</div>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
City
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<div class="divselect" id="divpcity" style="width:110px;">
<form:select path="PropCity" multiple="false" id="PropAdd3_citylist" style="width:128px" onblur="validate(this,document.getElementById('chkprop').checked ? 't':'f','')">
<form:option value="-1" label="Select" selected="true"/>
<form:option value="Unknown" label="Unknown"/>
<c:forEach items="${citylist}" var="city">
<form:option value="${city[0]}" label="${city[1]}" />
</c:forEach>
</form:select>
</div>
</div>
</div>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
Locality
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<form:input readonly="true" maxlength="50" style="width:200px" path="PropAdd3" value="${caseDetails.getPropAdd3()}" onkeyup="ajax_showOptions(this,event)" onblur="validate(this,document.getElementById('chkprop').checked ? 't':'f','SplInstruction')" />
<form:hidden path="PropLoc" id="PropAdd3_hidden" />
</div>
</div>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
Landmark
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<form:input readonly="true" maxlength="50" style="width:180px" path="PropLandmark" value="${caseDetails.getPropLandmark()}" onblur="validate(this,'f','SplInstruction')" />
</div>
</div>
<div class="widget" style="margin-left:2px">
<div class="lblcontainer" style="padding:1px">
Pincode
</div>
<br >
<div class="inputcontainer" style="padding:1px">
<form:input readonly="true" maxlength="6" style="width:45px" id="PropAdd3_Pincode" path="PropPincode" value="${caseDetails.getResiPincode()}" onblur="validate(this,document.getElementById('chkprop').checked ? 't':'f','Pincode')" />
</div>
</div>
</td>
</tr>
</table>
</div>
<!-- -->
</div>
<!-- -->
<!-- Reference Details (Section5) Visible for portfolios in which reference calling could be initiated-->
<div id="section5">
<!-- Title -->
<div class="title">
<img class="matrix-title-icon" src="/matrix/images/ref.png" />
<span class="matrix-title-text">Reference Details</span>
<div class="divchk" id="ctrldiv">
<form:checkbox path="Refvr" id="chkref" onclick="setFormValidation(this,'FormPanel5','Ref1Name,Ref1Address,Ref1Contactno','t,f,t','AlphaSpace,SplInstruction,Phone',false)" />Ref Check&nbsp;
</div>
</div>
<!-- -->
<!-- Form (Section5) -->
<div id="FormPanel5" class="FormPanel">
<table align="center" class="matrix-form-controls">
<tr>
<td>&nbsp;</td>
<td>Name</td>
<td>Address</td>
<td>Contact Numbers</td>
</tr>
<tr>
<td>Reference 1&nbsp;</td>
<td><form:input maxlength="30" style="width:200px" path="Ref1Name" value="${caseDetails.getRef1Name()}" onblur="validate(this,document.getElementById('chkref').checked ? 't':'f','AlphaSpace')" /></td>
<td><form:input maxlength="100" style="width:450px" path="Ref1Address" value="${caseDetails.getRef1Address()}" onblur="validate(this,'f','SplInstruction')" /></td>
<td><form:input maxlength="25" style="width:160px" path="Ref1Contactno" value="${caseDetails.getRef1Contactno()}" onblur="validate(this,document.getElementById('chkref').checked ? 't':'f','Phone')" /></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Name</td>
<td>Address</td>
<td>Contact Numbers</td>
</tr>
<tr>
<td>Reference 2&nbsp;</td>
<td><form:input maxlength="30" style="width:200px" path="Ref2Name" value="${caseDetails.getRef2Name()}" onblur="validate(this,'f','AlphaSpace')" /></td>
<td><form:input maxlength="100" style="width:450px" path="Ref2Address" value="${caseDetails.getRef2Address()}" onblur="validate(this,'f','SplInstruction')" /></td>
<td><form:input maxlength="25" style="width:160px" path="Ref2Contactno" value="${caseDetails.getRef2Contactno()}" onblur="validate(this,'f','Phone')" /></td>
</tr>
</table>
</div>
<!-- -->
</div>
<!-- -->
<!-- Dynamic Form (Section6). All controls under this section will be generated dynamically during runtime-->
<div id="section6">
<!-- Title -->
<div class="title">
<img class="matrix-title-icon" src="/matrix/images/edit_form.png" alt="" />
<span class="matrix-title-text">Other Details</span>
</div>
<!-- -->
<div id="FormPanel6" class="FormPanel">
${caseDetails.getDynamicPanel()}
</div>
</div>
<!-- -->
<!-- Document Details (Section7) Visible for portfolios in which document verification could be done-->
<div id="section7">
<!-- Title -->
<div class="title">
<img class="matrix-title-icon" src="/matrix/images/documents.png" />
<span class="matrix-title-text">Document Details</span>
<div class="divchk" id="ctrldiv">
<form:checkbox path="Docvr" id="chkdoc" onclick="hideForm(this.id,'FormPanel7')" />Doc VR&nbsp;
</div>
</div>
<!-- -->
<!-- Form (Section7) -->
<div id="FormPanel7" class="FormPanel">
<table align="center" class="matrix-form-controls">
<tr>
<td>Document</td>
<td>Vendor</td>
<td>Service Provider</td>
<td>Name</td>
<td>Unique No.</td>
</tr>
<tr>
<td>
<div class="divselect" id="divdoclist" style="width:90px;">
<select id="doclist" style="width:108px">
<option value="-1" selected="true">
<c:forEach items="${doclist}" var="doc">
<option value="${doc[0]}" >${doc[1]}</option>
</c:forEach>
</select>
</div>
</td>
<td><input type="text" style="width:150px" value="" id="vendor" /></td>
<td><input type="text" style="width:200px" value="" id="serviceprovider" /></td>
<td><input type="text" style="width:200px" value="" id="name" /></td>
<td><input type="text" style="width:180px" value="" id="uniqueno" /></td>
</tr>
</table>
</div>
<!-- -->
</div>
<form:hidden path="DynamicFields" value="${caseDetails.getDynamicFields()}" />
<form:hidden path="VisibleContents" value="${caseDetails.getVisibleContents()}" />
<form:hidden path="FormMode" />
<form:hidden path="UUID" />
<form:hidden path="CaseId" />
<!-- -->
<input type="hidden" id="invalidfields" value="0" />
<c:if test="${caseDetails.getFormMode() eq 2}">
<input type="button" class="button" name="btncancel" style="margin-left:1px;margin-top:5px;float:right" value="Cancel" id="btncancel" accesskey="C" onclick="MatrixDialog.close(0)" />
</c:if>
<input type="button" class="button" name="btnsave" style="margin-top:5px;float:right" value="Save" id="btnsave" accesskey="S" onclick="return ValidateSubmitForm('caseDetails');" />
</form:form>
</div>
</div>
</body>
<!-- Page Load Javascript -->
<script language="javascript" type="text/javascript">
HideSections('rtv');
HideSections('otv');
HideSections('section');
UnhideSections('${visibleContents}','!C0L!');
hideForm('chkresi','FormPanel2');
hideForm('chkoffice','FormPanel3');
hideForm('chkprop','FormPanel4');
hideForm('chkref','FormPanel5');
hideForm('chkdoc','FormPanel7');
ToggleChks((document.getElementById('chkresi').checked && document.getElementById('chkoffice').checked),'chkrco'+ColDelim,ColDelim);
ToggleChks((document.getElementById('chkresi').checked),'chkrcp'+ColDelim,ColDelim);
ToggleChks((document.getElementById('chkoffice').checked),'chkocp'+ColDelim,ColDelim);
ToggleChks((document.getElementById('typelist').value.toUpperCase()!='APPLICANT' && document.getElementById('typelist').value.toUpperCase()!='-1'),'chksresi!C0L!chksoff!C0L!chksprop!C0L!','!C0L!');
document.getElementById('ApplNo').focus();
</script>
<!-- -->
<!-- Process Message -->
<c:if test="${not empty caseDetails.getErrMsg()}">
<script language="javascript" type="text/javascript"> CallMessage('${caseDetails.getErrMsg()}',3000,200,300); </script>
<c:if test="${caseDetails.isProcessFlag()==true and caseDetails.getFormMode()==2}">
<script language="javascript" type="text/javascript">MatrixDialog.close(1);</script>
</c:if>
</c:if>
<!-- -->
</html>

View File

@@ -13,43 +13,42 @@
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/appjs/editcases.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/edp/punching/edit-cases.js?ver=1" type="text/javascript"></script>
<link href="/matrix/css/div.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/div.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/select.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/select.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/table.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/table.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" /> <link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
<link href="/matrix/css/edit-cases-v1.css?v=1" rel="stylesheet" type="text/css" /> <title>Cygnus 1.0 | Edit Cases</title>
<title>Cygnus 1.0 | Edit Cases</title>
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script> <script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
<link href="/matrix/css/edit-cases-v1.css?v=8" rel="stylesheet" type="text/css" />
</head> </head>
<body class="matrix-shell matrix-v2 matrix-tool-workspace matrix-edit-cases"> <body class="matrix-shell matrix-v2 matrix-tool-workspace matrix-edit-cases">
<div id='PageFrame'> <div id='PageFrame'>
<!-- Title Bar --> <!-- Title Bar -->
<%@ include file="/WEB-INF/app/fragments/app-title.jspf" %> <%@ include file="/WEB-INF/app/fragments/app-title.jspf" %>
<!-- --> <!-- -->
<div id="formcontainer" class="matrix-tool-workspace__content"> <div id="formcontainer" class="matrix-tool-workspace__content">
<form:form method="post" name="caseGrid" id="caseGrid" modelAttribute="caseGrid" target="_blank"> <form:form method="post" name="caseGrid" id="caseGrid" modelAttribute="caseGrid" target="_parent">
<!-- Common Details (Section1) Visible for all portfolios--> <!-- Common Details (Section1) Visible for all portfolios-->
<div> <div>
<!-- Title --> <!-- Title -->
<div class="title"> <div class="title">
<img class="matrix-title-icon" src="/matrix/images/commondet.png" align="absmiddle" /> <img class="matrix-title-icon" src="/matrix/images/commondet.png" align="absmiddle" />
<span class="matrix-title-text" align="absmiddle">List of Cases</span> <span class="matrix-title-text" align="absmiddle">List of Cases</span>
<div class="divselect" id="divportfolio" style="width:167px;position:absolute;top:3px;right:30px;"> <form:select path="PortfolioId" multiple="false" id="portlist" cssClass="matrix-edit-cases__portfolio-select" onchange="SubmitForm('caselist','_parent','caseGrid')">
<form:select path="PortfolioId" multiple="false" id="portlist" style="width:185px" onchange="SubmitForm('caselist','_parent','caseGrid')"> <form:option value="-1" label="SELECT PORTFOLIO" selected="true"/>
<form:option value="-1" label="SELECT PORTFOLIO" selected="true"/> <c:forEach items="${portlist}" var="port">
<c:forEach items="${portlist}" var="port"> <form:option value="${port.value}" label="${port.label}" />
<form:option value="${port[0]}" label="${port[1]}" /> </c:forEach>
</c:forEach> </form:select>
</form:select> <button class="matrix-edit-cases__refresh" type="button" title="Refresh Grid" onclick="SubmitForm('caselist','_parent','caseGrid')">
</div> <img src="/matrix/images/reload.png" alt="" />
<img class="matrix-title-action" src="/matrix/images/reload.png" title="Refresh Grid" onclick="SubmitForm('caselist','_parent','caseGrid')"/> </button>
</div> </div>
<!-- --> <!-- -->
<div id="TablePanel" class="tableContainer"> <div id="TablePanel" class="tableContainer">
<table border="0" cellspacing="0" width="100%" id="casetable"> <table border="0" cellspacing="0" width="100%" id="casetable">
@@ -69,19 +68,19 @@
</thead> </thead>
<tbody class="scrollContent"> <tbody class="scrollContent">
<c:forEach items="${caseList}" var="casedet" varStatus="status"> <c:forEach items="${caseList}" var="casedet" varStatus="status">
<tr id="row${status.count}" tabindex="0" title="Open this case for editing"> <tr id="row${status.count}" tabindex="0" title="Open this case for editing">
<td> <td>
<input type="hidden" name="row${status.count}uuid" id="row${status.count}uuid" value="${casedet[0]}" /> <input type="hidden" name="row${status.count}uuid" id="row${status.count}uuid" value="${casedet.documentCaseId}" />
<input type="hidden" name="row${status.count}portid" id="row${status.count}portid" value="${casedet[9]}" /> <input type="hidden" name="row${status.count}portid" id="row${status.count}portid" value="${casedet.portfolioId}" />
${status.count}</td> ${status.count}</td>
<td>${casedet[1]}</td> <td>${casedet.mvCode}</td>
<td>${casedet[2]}</td> <td>${casedet.fileNumber}</td>
<td>${casedet[3]}</td> <td>${casedet.customerName}</td>
<td>${casedet[4]}</td> <td>${casedet.applicationType}</td>
<td>${casedet[5]}</td> <td>${casedet.product}</td>
<td>${casedet[6]}</td> <td>${casedet.receivedOn}</td>
<td>${casedet[7]}</td> <td>${casedet.punchedBy}</td>
<td>${casedet[8]}</td> <td>${casedet.branchCode}</td>
</tr> </tr>
</c:forEach> </c:forEach>
</tbody> </tbody>
@@ -103,4 +102,4 @@
<script language="javascript" type="text/javascript"> CallMessage('${msg}',3000,200,300); </script> <script language="javascript" type="text/javascript"> CallMessage('${msg}',3000,200,300); </script>
</c:if> </c:if>
<!-- --> <!-- -->
</html> </html>

View File

@@ -18,12 +18,16 @@
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/lib/notifications.js?ver=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/lib/payload-crypto.js?ver=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/lib/form-validation.js?ver=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/appjs/punching.js?ver=6" type="text/javascript"></script> <script language="javascript" src="/matrix/js/edp/punching/initiation.js?ver=8" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/edp/punching/initiation-validation.js?ver=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/edp/punching/application-save.js?ver=2" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/validator.js?ver=2" type="text/javascript"></script> <script language="javascript" src="/matrix/js/validator.js?ver=2" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ajax.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ajax-dynamic-list.js?ver=2" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ajax-dynamic-list.js?ver=1" type="text/javascript"></script>
<link href="/matrix/css/button.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/button.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/div.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/div.css" rel="stylesheet" type="text/css" />
@@ -32,11 +36,11 @@
<link href="/matrix/css/table.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/table.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/autocomplete.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/autocomplete.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-v2.css?v=7" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" /> <link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
<link href="/matrix/css/punch-workspace-v3.css?v=1" rel="stylesheet" type="text/css" /> <link href="/matrix/css/punch-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
<link href="/matrix/css/add-cases-v4.css?v=5" rel="stylesheet" type="text/css" /> <link href="/matrix/css/add-cases-v4.css?v=6" rel="stylesheet" type="text/css" />
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script> <script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
<script src="/matrix/js/matrix-shell-v2.js" defer></script> <script src="/matrix/js/matrix-shell-v2.js" defer></script>
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
@@ -53,7 +57,7 @@
<c:if test="${pageFormMode!=2}"> <c:if test="${pageFormMode!=2}">
<!-- Dynamic Menu --> <!-- Dynamic Menu -->
<nav class="matrix-shell__navigation" aria-label="Primary navigation"> <nav class="matrix-shell__navigation" aria-label="Primary navigation">
<c:out value="${Sessvals.menuHtml}" escapeXml="false" /> <c:out value="${sessionScope.userSession.menuHtml}" escapeXml="false" />
</nav> </nav>
<!-- --> <!-- -->
</c:if> </c:if>
@@ -72,6 +76,9 @@
<label class="matrix-form-title__check"><input type="checkbox" name="autocut" checked id="autocut" /> Auto Cut-Off</label> <label class="matrix-form-title__check"><input type="checkbox" name="autocut" checked id="autocut" /> Auto Cut-Off</label>
<c:if test="${pageFormMode==2}"> <c:if test="${pageFormMode==2}">
<input type="hidden" id="portfolio_id" name="portfolioId" value="${pagePortfolioId}" /> <input type="hidden" id="portfolio_id" name="portfolioId" value="${pagePortfolioId}" />
<button type="button" class="matrix-edit-back" onclick="history.back()" title="Back to case list">
<span aria-hidden="true">&#8592;</span> Back
</button>
</c:if> </c:if>
<c:if test="${pageFormMode!=2}"> <c:if test="${pageFormMode!=2}">
<div class="divselect matrix-form-title__end" id="divportfolio" style="width:297px;"> <div class="divselect matrix-form-title__end" id="divportfolio" style="width:297px;">
@@ -79,9 +86,9 @@
<option value="-1" selected >SELECT PORTFOLIO</option> <option value="-1" selected >SELECT PORTFOLIO</option>
<c:choose> <c:choose>
<c:when test="${not empty model}"> <c:when test="${not empty model}">
<c:forEach items="${model.options['portfolio.']}" var="port"> <c:forEach items="${model.options['portfolio.']}" var="port">
<option value="${port.value}"><c:out value="${port.label}" /></option> <option value="${port.value}"><c:out value="${port.label}" /></option>
</c:forEach> </c:forEach>
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<c:forEach items="${portlist}" var="port"> <c:forEach items="${portlist}" var="port">
@@ -112,7 +119,7 @@
Appl No. Appl No.
</div> </div>
<div class="inputcontainer"> <div class="inputcontainer">
<input type="text" id="applno" name="applno" maxlength="25" style="width:115px;text-transform:uppercase" value="" onblur="if(validate(this,'t','AlphaNumeric')){FindSameDet(this,'A','customername');}" /> <input type="text" id="applno" name="applno" maxlength="25" style="width:115px;text-transform:uppercase" value="" onblur="if(CygnusInitiationValidation.validateField(this)){FindSameDet(this,'A','customername');}" />
</div> </div>
</div> </div>
<div class="widget"> <div class="widget">
@@ -120,7 +127,7 @@
Bank Code Bank Code
</div> </div>
<div class="inputcontainer"> <div class="inputcontainer">
<input type="text" maxlength="25" id="bankcode" name="bankcode" style="width:70px;text-transform:uppercase" value="" onblur="validate(this,'f','AlphaNumeric');" /> <input type="text" maxlength="25" id="bankcode" name="bankcode" style="width:70px;text-transform:uppercase" value="" onblur="CygnusInitiationValidation.validateField(this);" />
</div> </div>
</div> </div>
<div class="widget"> <div class="widget">
@@ -129,13 +136,13 @@
</div> </div>
<div class="inputcontainer"> <div class="inputcontainer">
<div class="divselect" id="divbranch" style="width:135px;"> <div class="divselect" id="divbranch" style="width:135px;">
<select id="bank_branch_id" name="bank_branch_id" style="width:153px" onblur="validate(this,'t','');"> <select id="bank_branch_id" name="bank_branch_id" style="width:153px" onblur="CygnusInitiationValidation.validateField(this);">
<option value="-1" selected >SELECT</option> <option value="-1" selected >SELECT</option>
<c:choose> <c:choose>
<c:when test="${not empty model}"> <c:when test="${not empty model}">
<c:forEach items="${model.options}" var="option"><c:if test="${fn:startsWith(option.key, 'branch.')}"> <c:forEach items="${model.options['branch.']}" var="option">
<option value="${fn:substringAfter(option.key, 'branch.')}"><c:out value="${option.value}" /></option> <option value="${option.value}"><c:out value="${option.label}" /></option>
</c:if></c:forEach> </c:forEach>
</c:when> </c:when>
<c:otherwise><c:forEach items="${branchlist}" var="brnch"><option value="${brnch[0]}"><c:out value="${brnch[1]}" /></option></c:forEach></c:otherwise> <c:otherwise><c:forEach items="${branchlist}" var="brnch"><option value="${brnch[0]}"><c:out value="${brnch[1]}" /></option></c:forEach></c:otherwise>
</c:choose> </c:choose>
@@ -149,10 +156,10 @@
</div> </div>
<div class="inputcontainer"> <div class="inputcontainer">
<div class="divselect" id="divproduct" style="width:132px;"> <div class="divselect" id="divproduct" style="width:132px;">
<select id="product" name="product" style="width:150px" onblur="validate(this,'t','');"> <select id="product" name="product" style="width:150px" onblur="CygnusInitiationValidation.validateField(this);">
<option value="-1" selected >SELECT</option> <option value="-1" selected >SELECT</option>
<c:choose> <c:choose>
<c:when test="${not empty model}"><c:forEach items="${model.options}" var="option"><c:if test="${fn:startsWith(option.key, 'product.')}"><option value="${fn:substringAfter(option.key, 'product.')}"><c:out value="${option.value}" /></option></c:if></c:forEach></c:when> <c:when test="${not empty model}"><c:forEach items="${model.options['product.']}" var="option"><option value="${option.value}"><c:out value="${option.label}" /></option></c:forEach></c:when>
<c:otherwise><c:forEach items="${prodlist}" var="prod"><option value="${prod[0]}"><c:out value="${prod[1]}" /></option></c:forEach></c:otherwise> <c:otherwise><c:forEach items="${prodlist}" var="prod"><option value="${prod[0]}"><c:out value="${prod[1]}" /></option></c:forEach></c:otherwise>
</c:choose> </c:choose>
</select> </select>
@@ -164,7 +171,7 @@
Name Name
</div> </div>
<div class="inputcontainer"> <div class="inputcontainer">
<input type="text" id="customername" name="customername" maxlength="100" style="width:200px" value="" onblur="validate(this,'t','AlphaSpace');" /> <input type="text" id="customername" name="customername" maxlength="100" style="width:200px" value="" onblur="CygnusInitiationValidation.validateField(this);" />
</div> </div>
</div> </div>
<div class="widget"> <div class="widget">
@@ -181,10 +188,10 @@
</div> </div>
<div class="inputcontainer"> <div class="inputcontainer">
<div class="divselect" id="divapptype" style="width:135px;"> <div class="divselect" id="divapptype" style="width:135px;">
<select id="apptype" name="apptype" style="width:153px" onchange="ToggleChks((this.value.toUpperCase()!='APPLICANT' && this.value.toUpperCase()!='-1'),'sradd!C0L!soadd!C0L!spadd!C0L!','!C0L!')" onblur="validate(this,'t','');"> <select id="apptype" name="apptype" style="width:153px" onchange="ToggleChks((this.value.toUpperCase()!='APPLICANT' && this.value.toUpperCase()!='-1'),['sradd','soadd','spadd'])" onblur="CygnusInitiationValidation.validateField(this);">
<option value="-1" selected>SELECT</option> <option value="-1" selected>SELECT</option>
<c:choose> <c:choose>
<c:when test="${not empty model}"><c:forEach items="${model.options}" var="option"><c:if test="${fn:startsWith(option.key, 'applicationType.')}"><option value="${fn:substringAfter(option.key, 'applicationType.')}"><c:out value="${option.value}" /></option></c:if></c:forEach></c:when> <c:when test="${not empty model}"><c:forEach items="${model.options['applicationType.']}" var="option"><option value="${option.value}"><c:out value="${option.label}" /></option></c:forEach></c:when>
<c:otherwise><c:forEach items="${typelist}" var="type"><option value="${type[0]}"><c:out value="${type[1]}" /></option></c:forEach></c:otherwise> <c:otherwise><c:forEach items="${typelist}" var="type"><option value="${type[0]}"><c:out value="${type[1]}" /></option></c:forEach></c:otherwise>
</c:choose> </c:choose>
</select> </select>
@@ -200,7 +207,7 @@
<select id="category" name="category" style="width:133px"> <select id="category" name="category" style="width:133px">
<option value="-1" selected>SELECT</option> <option value="-1" selected>SELECT</option>
<c:choose> <c:choose>
<c:when test="${not empty model}"><c:forEach items="${model.options}" var="option"><c:if test="${fn:startsWith(option.key, 'category.')}"><option value="${fn:substringAfter(option.key, 'category.')}"><c:out value="${option.value}" /></option></c:if></c:forEach></c:when> <c:when test="${not empty model}"><c:forEach items="${model.options['category.']}" var="option"><option value="${option.value}"><c:out value="${option.label}" /></option></c:forEach></c:when>
<c:otherwise><c:forEach items="${catlist}" var="cat"><option value="${cat[0]}"><c:out value="${cat[1]}" /></option></c:forEach></c:otherwise> <c:otherwise><c:forEach items="${catlist}" var="cat"><option value="${cat[0]}"><c:out value="${cat[1]}" /></option></c:forEach></c:otherwise>
</c:choose> </c:choose>
</select> </select>
@@ -261,10 +268,10 @@
<div class="title"> <div class="title">
<img class="matrix-title-icon" src="/matrix/images/resdet.png" /> <img class="matrix-title-icon" src="/matrix/images/resdet.png" />
<span class="matrix-title-text">Residence Details</span> <span class="matrix-title-text">Residence Details</span>
<div class="divchk" id="ctrldiv"> <div class="divchk ctrldiv">
<input type="checkbox" id="rv" name="rv" onclick="HandleClick(this)" />RVR&nbsp; <input type="checkbox" id="rv" name="rv" onclick="HandleClick(this)" />RVR&nbsp;
<input type="checkbox" id="sradd" name="rv" onclick="return FindSameDet(this,'R','rphone')" /><span id="sradd">Same Resi</span> <input type="checkbox" id="sradd" name="sradd" onclick="return FindSameDet(this,'R','rphone')" /><span id="sradd-label">Same Resi</span>
<input type="checkbox" id="rtv" name="rv" onclick="HandleClick(this)" /><span id="rtv">RTV</span> <input type="checkbox" id="rtv" name="rtv" onclick="HandleClick(this)" /><span id="rtv-label">RTV</span>
</div> </div>
</div> </div>
<!-- --> <!-- -->
@@ -311,7 +318,7 @@
<option value="-1">Select</option> <option value="-1">Select</option>
<option value="Unknown">Unknown</option> <option value="Unknown">Unknown</option>
<c:choose> <c:choose>
<c:when test="${not empty model}"><c:forEach items="${model.options}" var="option"><c:if test="${fn:startsWith(option.key, 'city.')}"><option value="${fn:substringAfter(option.key, 'city.')}"><c:out value="${option.value}" /></option></c:if></c:forEach></c:when> <c:when test="${not empty model}"><c:forEach items="${model.options['city.']}" var="option"><option value="${option.value}"><c:out value="${option.label}" /></option></c:forEach></c:when>
<c:otherwise><c:forEach items="${citylist}" var="city"><option value="${city[0]}"><c:out value="${city[1]}" /></option></c:forEach></c:otherwise> <c:otherwise><c:forEach items="${citylist}" var="city"><option value="${city[0]}"><c:out value="${city[1]}" /></option></c:forEach></c:otherwise>
</c:choose> </c:choose>
</select> </select>
@@ -369,11 +376,11 @@
<div class="title"> <div class="title">
<img class="matrix-title-icon" src="/matrix/images/optmale.png" /> <img class="matrix-title-icon" src="/matrix/images/optmale.png" />
<span class="matrix-title-text">Office Details</span> <span class="matrix-title-text">Office Details</span>
<div class="divchk" id="ctrldiv"> <div class="divchk ctrldiv">
<input type="checkbox" id="ov" onclick="HandleClick(this)" />OVR&nbsp; <input type="checkbox" id="ov" onclick="HandleClick(this)" />OVR&nbsp;
<input type="checkbox" id="rco" style="display:none" onclick="HandleClick(this)" /><span id="rco">RCO&nbsp;</span> <input type="checkbox" id="rco" style="display:none" onclick="HandleClick(this)" /><span id="rco-label">RCO&nbsp;</span>
<input type="checkbox" id="soadd" onclick="return FindSameDet(this,'O','ophone')" /><span id="soadd">Same Office</span> <input type="checkbox" id="soadd" onclick="return FindSameDet(this,'O','ophone')" /><span id="soadd-label">Same Office</span>
<input type="checkbox" id="otv" onclick="HandleClick(this)" /><span id="otv">OTV</span> <input type="checkbox" id="otv" onclick="HandleClick(this)" /><span id="otv-label">OTV</span>
</div> </div>
</div> </div>
<!-- --> <!-- -->
@@ -429,7 +436,7 @@
<option value="-1">Select</option> <option value="-1">Select</option>
<option value="Unknown">Unknown</option> <option value="Unknown">Unknown</option>
<c:choose> <c:choose>
<c:when test="${not empty model}"><c:forEach items="${model.options}" var="option"><c:if test="${fn:startsWith(option.key, 'city.')}"><option value="${fn:substringAfter(option.key, 'city.')}"><c:out value="${option.value}" /></option></c:if></c:forEach></c:when> <c:when test="${not empty model}"><c:forEach items="${model.options['city.']}" var="option"><option value="${option.value}"><c:out value="${option.label}" /></option></c:forEach></c:when>
<c:otherwise><c:forEach items="${citylist}" var="city"><option value="${city[0]}"><c:out value="${city[1]}" /></option></c:forEach></c:otherwise> <c:otherwise><c:forEach items="${citylist}" var="city"><option value="${city[0]}"><c:out value="${city[1]}" /></option></c:forEach></c:otherwise>
</c:choose> </c:choose>
</select> </select>
@@ -470,7 +477,7 @@
</div> </div>
<br > <br >
<div class="inputcontainer" style="padding:1px"> <div class="inputcontainer" style="padding:1px">
<input type="text" id="department" name="designation" maxlength="50" style="width:100px" value="" onblur="validate(this,'f','SplInstruction')" /> <input type="text" id="department" name="department" maxlength="50" style="width:100px" value="" onblur="validate(this,'f','SplInstruction')" />
</div> </div>
</div> </div>
<div class="widget" style="margin-left:2px"> <div class="widget" style="margin-left:2px">
@@ -487,8 +494,10 @@
Office Phone-Extn Office Phone-Extn
</div> </div>
<br > <br >
<div class="inputcontainer" style="padding:1px"> <div class="inputcontainer matrix-phone-extension" style="padding:1px">
<input type="text" id="ophone" name="ophone" maxlength="25" style="width:100px" value="" onblur="validate(this,document.getElementById('otv').checked ? 't':'f','Phone')" />-<input type="text" id="extension" name="extension" style="width:23px" maxlength="10" value="" onblur="validate(this,'f','Extension')" /> <input type="text" id="ophone" name="ophone" maxlength="25" value="" onblur="validate(this,document.getElementById('otv').checked ? 't':'f','Phone')" />
<span aria-hidden="true">-</span>
<input type="text" id="extension" name="extension" maxlength="10" value="" aria-label="Office phone extension" onblur="validate(this,'f','Extension')" />
</div> </div>
</div> </div>
</td> </td>
@@ -505,11 +514,11 @@
<div class="title"> <div class="title">
<img class="matrix-title-icon" src="/matrix/images/resdet.png" /> <img class="matrix-title-icon" src="/matrix/images/resdet.png" />
<span class="matrix-title-text">Property Details</span> <span class="matrix-title-text">Property Details</span>
<div class="divchk" id="ctrldiv"> <div class="divchk ctrldiv">
<input type="checkbox" id="pv" onclick="HandleClick(this)" />PVR&nbsp; <input type="checkbox" id="pv" onclick="HandleClick(this)" />PVR&nbsp;
<input type="checkbox" id="rcp" style="display:none" onclick="HandleClick(this)" /><span id="rcp">RCP&nbsp;</span> <input type="checkbox" id="rcp" style="display:none" onclick="HandleClick(this)" /><span id="rcp-label">RCP&nbsp;</span>
<input type="checkbox" id="ocp" style="display:none" onclick="HandleClick(this)" /><span id="ocp">OCP&nbsp;</span> <input type="checkbox" id="ocp" style="display:none" onclick="HandleClick(this)" /><span id="ocp-label">OCP&nbsp;</span>
<input type="checkbox" id="spadd" onclick="return FindSameDet(this,'P','ppincode')" /><span id="spadd">Same Property</span> <input type="checkbox" id="spadd" onclick="return FindSameDet(this,'P','ppincode')" /><span id="spadd-label">Same Property</span>
</div> </div>
</div> </div>
<!-- --> <!-- -->
@@ -524,7 +533,7 @@
</div> </div>
<br > <br >
<div class="inputcontainer" style="padding:1px"> <div class="inputcontainer" style="padding:1px">
<input type="text" id="paddr1" name="paddr1" readonly="readonly" maxlength="40" style="width:90px" value="" onblur="validate(this,document.getElementById('rv').checked ? 't':'f','SplInstruction')" /> <input type="text" id="paddr1" name="paddr1" readonly="readonly" maxlength="40" style="width:90px" value="" onblur="CygnusInitiationValidation.validateField(this);" />
</div> </div>
</div> </div>
<div class="widget" style="margin-left:2px"> <div class="widget" style="margin-left:2px">
@@ -556,7 +565,7 @@
<option value="-1">Select</option> <option value="-1">Select</option>
<option value="Unknown">Unknown</option> <option value="Unknown">Unknown</option>
<c:choose> <c:choose>
<c:when test="${not empty model}"><c:forEach items="${model.options}" var="option"><c:if test="${fn:startsWith(option.key, 'city.')}"><option value="${fn:substringAfter(option.key, 'city.')}"><c:out value="${option.value}" /></option></c:if></c:forEach></c:when> <c:when test="${not empty model}"><c:forEach items="${model.options['city.']}" var="option"><option value="${option.value}"><c:out value="${option.label}" /></option></c:forEach></c:when>
<c:otherwise><c:forEach items="${citylist}" var="city"><option value="${city[0]}"><c:out value="${city[1]}" /></option></c:forEach></c:otherwise> <c:otherwise><c:forEach items="${citylist}" var="city"><option value="${city[0]}"><c:out value="${city[1]}" /></option></c:forEach></c:otherwise>
</c:choose> </c:choose>
</select> </select>
@@ -579,7 +588,7 @@
</div> </div>
<br > <br >
<div class="inputcontainer" style="padding:1px"> <div class="inputcontainer" style="padding:1px">
<input type="text" id="ppincode" name="colp_pincode" readonly="readonly" maxlength="6" style="width:45px" value="" onblur="validate(this,document.getElementById('rv').checked ? 't':'f','Pincode')" /> <input type="text" id="ppincode" name="colp_pincode" readonly="readonly" maxlength="6" style="width:45px" value="" onblur="CygnusInitiationValidation.validateField(this);" />
</div> </div>
</div> </div>
<div class="widget" style="margin-left:2px"> <div class="widget" style="margin-left:2px">
@@ -605,7 +614,7 @@
<div class="title"> <div class="title">
<img class="matrix-title-icon" src="/matrix/images/ref.png" /> <img class="matrix-title-icon" src="/matrix/images/ref.png" />
<span class="matrix-title-text">Reference Details</span> <span class="matrix-title-text">Reference Details</span>
<div class="divchk" id="ctrldiv"> <div class="divchk ctrldiv">
<input type="checkbox" id="refv" name="refv" onclick="HandleClick(this)" />Ref Check&nbsp; <input type="checkbox" id="refv" name="refv" onclick="HandleClick(this)" />Ref Check&nbsp;
</div> </div>
</div> </div>
@@ -670,7 +679,7 @@
<div class="title"> <div class="title">
<img class="matrix-title-icon" src="/matrix/images/documents.png" /> <img class="matrix-title-icon" src="/matrix/images/documents.png" />
<span class="matrix-title-text">Document Details</span> <span class="matrix-title-text">Document Details</span>
<div class="divchk" id="ctrldiv"> <div class="divchk ctrldiv">
<input type="checkbox" name="docv" id="docv" />Doc VR&nbsp; <input type="checkbox" name="docv" id="docv" />Doc VR&nbsp;
</div> </div>
</div> </div>
@@ -689,19 +698,17 @@
</c:if> </c:if>
<input type="hidden" id="uuid" name="uuid" value="${pageDocumentCaseId}" /> <input type="hidden" id="uuid" name="uuid" value="${pageDocumentCaseId}" />
<input type="hidden" id="case_id" name="case_id" value="" /> <input type="hidden" id="case_id" name="case_id" value="" />
<input type="hidden" id="company_id" name="company_id" value="${Sessvals.getCompanyID()}" /> <input type="hidden" id="company_id" name="company_id" value="${sessionScope.userSession.companyId}" />
<input type="hidden" id="branch_id" name="branch_id" value="${Sessvals.getBranchID()}" /> <input type="hidden" id="branch_id" name="branch_id" value="${sessionScope.userSession.branchId}" />
<input type="hidden" id="status" name="status" value="" /> <input type="hidden" id="status" name="status" value="" />
<!-- --> <!-- -->
<input type="hidden" id="invalidfields" value="0" />
<c:if test="${pageFormMode gt 0}"> <c:if test="${pageFormMode gt 0}">
<div style="position:fixed;text-align:right;bottom:0px;width:980px;" class="buttonbar"> <div style="position:fixed;text-align:right;bottom:0px;width:980px;" class="buttonbar">
<input type="hidden" id="invalidfields" value="0" />
<input type="button" class="button" name="btnfirst" style="margin-left:5px;margin-top:-2px;float:left;width:80px" value="" id="btnfirst" accesskey="F" onclick="findRecord(1)" /> <input type="button" class="button" name="btnfirst" style="margin-left:5px;margin-top:-2px;float:left;width:80px" value="" id="btnfirst" accesskey="F" onclick="findRecord(1)" />
<input type="button" class="button" name="btnprev" style="margin-top:-2px;float:left;width:80px" value="" id="btnprev" accesskey="P" onclick="findRecord(2)" /> <input type="button" class="button" name="btnprev" style="margin-top:-2px;float:left;width:80px" value="" id="btnprev" accesskey="P" onclick="findRecord(2)" />
<input type="button" class="button" name="btnnext" style="margin-top:-2px;float:left;width:80px" value="" id="btnnext" accesskey="N" onclick="findRecord(3)" /> <input type="button" class="button" name="btnnext" style="margin-top:-2px;float:left;width:80px" value="" id="btnnext" accesskey="N" onclick="findRecord(3)" />
<input type="button" class="button" name="btnlast" style="margin-top:-2px;float:left;width:80px" value="" id="btnlast" accesskey="L" onclick="findRecord(4)" /> <input type="button" class="button" name="btnlast" style="margin-top:-2px;float:left;width:80px" value="" id="btnlast" accesskey="L" onclick="findRecord(4)" />
<input type="button" class="button" name="btnsave" style="float:right" value="Save" id="btnsave" accesskey="S" onclick="return ValidateSubmitForm('casedetails');" /> <input type="button" class="button" name="btnsave" style="float:right" value="Save" id="btnsave" accesskey="S" onclick="return CygnusInitiation.save(event);" />
<c:if test="${pageFormMode!=2}"> <c:if test="${pageFormMode!=2}">
<input type="button" class="button" name="btnadd" style="float:right" value="Add" id="btnadd" accesskey="A" onclick="return AddNewRecord();" /> <input type="button" class="button" name="btnadd" style="float:right" value="Add" id="btnadd" accesskey="A" onclick="return AddNewRecord();" />
</c:if> </c:if>
@@ -710,9 +717,9 @@
</form> </form>
<input type="hidden" id="formmode" name="formmode" value="${pageFormMode}" /> <input type="hidden" id="formmode" name="formmode" value="${pageFormMode}" />
<input type="hidden" id="usid" name="usid" value="${pageUserId}" /> <input type="hidden" id="usid" name="usid" value="${pageUserId}" />
<c:if test="${not empty model.errorDetails}"> <c:if test="${not empty model.messageDetails}">
<span id="page-error-code" hidden><c:out value="${model.errorDetails.errorCode}" /></span> <span id="page-error-code" hidden><c:out value="${model.messageDetails.code}" /></span>
<span id="page-error-message" hidden><c:out value="${model.errorDetails.message}" /></span> <span id="page-error-message" hidden><c:out value="${model.messageDetails.message}" /></span>
</c:if> </c:if>
</div> </div>
</div> </div>
@@ -720,6 +727,7 @@
<!-- Page Load Javascript --> <!-- Page Load Javascript -->
<script language="javascript" type="text/javascript"> <script language="javascript" type="text/javascript">
(function () { (function () {
CygnusInitiationValidation.bind(document.getElementById("casedetails"));
var sectionFields = document.querySelectorAll(".model-visible-section"); var sectionFields = document.querySelectorAll(".model-visible-section");
if (sectionFields.length > 0) { if (sectionFields.length > 0) {
document.getElementById("visiblecontents").value = Array.prototype.map.call( document.getElementById("visiblecontents").value = Array.prototype.map.call(
@@ -728,10 +736,13 @@
} }
InitPage(); InitPage();
var errorCode = document.getElementById("page-error-code"); var code = document.getElementById("page-error-code");
var errorMessage = document.getElementById("page-error-message"); var errorMessage = document.getElementById("page-error-message");
if (errorCode && errorMessage) { if (code && errorMessage) {
CallMessage(errorCode.textContent + ":error:" + errorMessage.textContent, 3000, 200, 300); CygnusNotifications.show({
type: "danger", code: code.textContent,
message: errorMessage.textContent, duration: 3000
});
} }
}()); }());
</script> </script>

View File

@@ -1,329 +0,0 @@
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@page language="java" session="true" %>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Cygnus 1.0 | Document Initiation </title>
<script language="javascript" src="/matrix/js/lib/constants.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/jquery1.7.2.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/uifuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ajax.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ajax-dynamic-list.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/appjs/punchingdoc.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/validator.js?ver=2" type="text/javascript"></script>
<link href="/matrix/css/button.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/div.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/textbox.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/select.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/table.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/autocomplete.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/bootstrap-5.3.8.min.css" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-v2.css?v=6" rel="stylesheet" type="text/css" />
<link href="/matrix/css/matrix-shell-v2.css?v=7" rel="stylesheet" type="text/css" />
<link href="/matrix/css/tool-workspace-v3.css?v=2" rel="stylesheet" type="text/css" />
<link href="/matrix/css/punch-workspace-v3.css?v=1" rel="stylesheet" type="text/css" />
<link href="/matrix/css/add-cases-v4.css?v=5" rel="stylesheet" type="text/css" />
<script src="/matrix/js/bootstrap-5.3.8.bundle.min.js" defer></script>
<script src="/matrix/js/matrix-shell-v2.js" defer></script>
<link href="/matrix/css/matrix-frame-dialog.css?v=6" rel="stylesheet" type="text/css" />
<script src="/matrix/js/matrix-frame-dialog.js?v=2" defer></script>
<script src="/matrix/js/matrix-accessibility-v1.js?v=1" defer></script>
<link href="/matrix/css/matrix-theme-v2.css?v=4" rel="stylesheet" type="text/css" />
</head>
<body class="matrix-v2 matrix-shell matrix-tool-workspace matrix-punch-workspace matrix-add-cases">
<div id='PageFrame'>
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
<%-- Shared shell owns ${Sessvals.menuHtml}. --%>
<div id="formcontainer" class="matrix-tool-workspace__content">
<form method="post" name="docdetails" id="docdetails" >
<!-- Common Details (Section1) Visible for all portfolios-->
<div>
<!-- Title -->
<div class="title matrix-form-title">
<img class="matrix-title-icon" src="/matrix/images/commondet.png" align="absmiddle" />
<span class="matrix-title-text matrix-form-title__heading">Common Details <span id='recfound'></span></span>
<label class="matrix-form-title__field">Skip To <input type="text" class="textbox" style="width:30px" onkeypress="return NumberOnly(event)" onblur="GotoRecord(this)"></label>
<label class="matrix-form-title__field">Search by File No <input type="text" class="textbox" style="width:200px" onblur="SearchRecord(this)"></label>
<!-- Checkbox for AUTO CUT diabled for now -->
<!-- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" name="autocut" id="autocut" />&nbsp;Automatic Cut-Off -->
<div class="divselect matrix-form-title__end" id="divportfolio" style="width:167px;">
<select id="portfolio_id" name="portfolio_id" style="width:185px" onchange="SubmitForm('docadd','_parent','docdetails')">
<option value="-1" selected >SELECT PORTFOLIO</option>
<c:forEach items="${portlist}" var="port">
<option value="${port[0]}">${port[1]}</option>
</c:forEach>
</select>
</div>
</div>
<!-- -->
<!-- Form (Section1) -->
<div id="FormPanel1" class="FormPanel">
<table align="center" class="matrix-form-controls" width="99%">
<tr>
<td>
<div style="height:auto;width:16px;float:right;margin-top:4px;">
<div id="btnbedit" onclick="EditBasicDetails()" title="edit basic details" style="background:url('/matrix/images/edit_form.png');height:auto;width:16px;cursor:pointer;margin-top:2px">&nbsp;</div>
<div id="btnbsave" onclick="SaveBasicDetails()" title="save details" style="background:url('/matrix/images/disk.png');height:auto;width:16px;cursor:pointer;margin-top:2px">&nbsp;</div>
<div id="btnbcancel" onclick="CancelEdit()" title="cancel" style="background:url('/matrix/images/msgerror.png');height:auto;width:16px;cursor:pointer;margin-top:6px">&nbsp;</div>
</div>
<div class="widget">
<div class="lblcontainer">
Appl No.
</div>
<div class="inputcontainer">
<input type="text" id="applno" name="applno" maxlength="25" style="width:150px;text-transform:uppercase" value="" disabled="disabled" onblur="if(validate(this,'t','AlphaNumeric')){FindSameDet(this,'A','customername');}" />
</div>
</div>
<div class="widget">
<div class="lblcontainer">
Name
</div>
<div class="inputcontainer">
<input type="text" id="customername" name="customername" maxlength="100" style="width:275px" value="" onblur="validate(this,'t','AlphaSpace');" disabled="disabled" />
</div>
</div>
<div class="widget">
<div class="lblcontainer">
DOB
</div>
<div class="inputcontainer">
<input type="text" id="dob" name="dob" maxlength="10" style="width:80px" value="" onkeydown="return addSlashes(this,event)" onblur="validate(this,'f','Date')" disabled="disabled" />
</div>
</div>
<div class="widget">
<div class="lblcontainer">
Loan Amt
</div>
<div class="inputcontainer">
<input type="text" id="loanamount" name="loanamount" maxlength="15" style="width:115px" value="" onblur="validate(this,'f','LoanAmount');" disabled="disabled" />
</div>
</div>
<div class="widget">
<div class="lblcontainer">
Branch
</div>
<div class="inputcontainer">
<div class="divselect" id="divbranch" style="width:235px;">
<select id="bank_branch_id" name="bank_branch_id" style="width:253px" onblur="validate(this,'t','');" disabled="disabled">
<option value="-1" selected >SELECT</option>
<c:forEach items="${branchlist}" var="brnch">
<option value="${brnch[0]}">${brnch[1]}</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="widget">
<div class="lblcontainer">
Product
</div>
<div class="inputcontainer">
<div class="divselect" id="divproduct" style="width:132px;">
<select id="product" name="product" style="width:150px" onblur="validate(this,'t','');" disabled="disabled">
<option value="-1" selected >SELECT</option>
<c:forEach items="${prodlist}" var="prod">
<option value="${prod[0]}">${prod[1]}</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="widget">
<div class="lblcontainer">
App Type
</div>
<div class="inputcontainer">
<div class="divselect" id="divapptype" style="width:135px;">
<select id="apptype" name="apptype" style="width:153px" onblur="validate(this,'t','');" disabled="disabled">
<option value="-1" selected>SELECT</option>
<c:forEach items="${typelist}" var="type">
<option value="${type[0]}">${type[1]}</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="widget">
<div class="lblcontainer">
Category
</div>
<div class="inputcontainer">
<div class="divselect" id="divcategory" style="width:115px;">
<select id="category" name="category" style="width:133px" disabled="disabled">
<option value="-1" selected>SELECT</option>
<c:forEach items="${catlist}" var="cat">
<option value="${cat[0]}">${cat[1]}</option>
</c:forEach>
</select>
</div>
</div>
</div>
${dynamichtml}
<input type="button" class="button" name="btnsave" style="float:right" value="Add Docs" id="btnsave" onclick="return AddDocs();" />
</td>
</tr>
</table>
</div>
<!-- -->
</div>
<!-- -->
<!-- Document Details Visible for portfolios in which document verification could be done-->
<div id="section7">
<!-- Title -->
<div class="title">
<img class="matrix-title-icon" src="/matrix/images/documents.png" />
<span class="matrix-title-text">Document Details</span>
</div>
<!-- -->
<!-- Form (Section1) -->
<div id="FormPanel1" class="FormPanel">
<table align="center" class="matrix-form-controls" width="99%">
<tr>
<td>
<div class="widget">
<div class="lblcontainer">
Document
</div>
<div class="inputcontainer">
<div class="divselect" id="divdoctype" style="width:170px;">
<select id="doctype" name="doctype" style="width:188px" onchange="changeLabel(this)" onblur="validate(this,'t','')">
<option value="-1" uniqueidentifier="Unique No." sprovider="Service Provider" validuno="xxx" ymon="A.Y/Month" validymon="" defsprovider="" genlist="0" selected>SELECT</option>
<c:forEach items="${doclist}" var="doc">
<option value="${doc[0]}" uniqueidentifier="${doc[2]}" sprovider="${doc[3]}" validuno="${doc[4]}" ymon="${doc[5]}" validymon="${doc[6]}" defsprovider="${doc[7]}" genlist="${doc[8]}">${doc[1]}</option>
</c:forEach>
</select>
</div>
</div>
</div>
<div class="widget">
<div class="lblcontainer">
Name
</div>
<div class="inputcontainer">
<input type="text" id="docholdername" name="docholdername" maxlength="100" style="width:200px" value="" onblur="validate(this,'t','AlphaSpace');" />
</div>
</div>
<div class="widget">
<div class="lblcontainer" id="sprovider">
Serivce Provider
</div>
<div class="inputcontainer">
<input type="text" id="serviceprovider" name="serviceprovider" maxlength="100" style="width:200px" value="" onblur="validate(this,'t','SplInstruction');" />
<input type="hidden" id="bank_id" name="serviceprovider_hidden" value="0" />
<input type="hidden" id="serviceprovider_citylist" name="serviceprovider_citylist" value="0" />
</div>
</div>
<div class="widget">
<div class="lblcontainer" id="uniqueidentifier">
Unique No.
</div>
<div class="inputcontainer">
<input type="text" id="uniqueno" name="uniqueno" maxlength="50" style="width:140px" value="" />
</div>
</div>
<div class="widget">
<div class="lblcontainer" id="yearmon">
A.Y/Month
</div>
<div class="inputcontainer">
<input type="text" id="yearmonth" name="yearmonth" maxlength="100" style="width:180px" value="" />
</div>
</div>
<div class="widget">
<div class="lblcontainer">
Location
</div>
<div class="inputcontainer">
<div class="divselect" id="divcity" style="width:120px;" >
<select id="city" name="city" style="width:138px" onblur="validate(this,'t','');">
<option value="-1" selected>SELECT</option>
<option value="CITY" selected>CITY</option>
<option value="SATELLITE CITY">SATELLITE CITY</option>
<option value="OUT STATION">OUT STATION</option>
</select>
</div>
</div>
</div>
<div class="widget">
<div class="lblcontainer">
Vendor
</div>
<div class="inputcontainer">
<div class="divselect" id="divvendor" style="width:120px;">
<select id="vendor_id" name="vendor_id" style="width:138px" onblur="validate(this,'f','');">
<option value="-1" selected>SELECT</option>
</select>
</div>
</div>
</div>
${docdynamichtml}
<input type="button" class="button" name="btnadd" style="float:right" value="Add" id="btnadd" onclick="return AddNewDoc();" />
</td>
</tr>
</table>
</div>
<div id="FormPanel2" class="FormPanel">
<table border="0" cellspacing="0" width="100%" id="casetable">
<thead class="thead">
<tr title="Row Title" id="rowtitle">
<td style="font-size:12px;width:20px">S.No</td>
<td style="font-size:12px;width:150px">Name</td>
<td style="font-size:12px;width:150px">Document</td>
<td style="font-size:12px;width:150px">Provider</td>
<td style="font-size:12px;width:150px">Unique No.</td>
<td style="font-size:12px;width:100px">Extra</td>
<td style="font-size:12px;width:50px">Location</td>
<td style="font-size:12px;width:50px">Vendor</td>
<td style="font-size:12px">Action</td>
</tr>
</thead>
</table>
</div>
<!-- -->
</div>
<input type="hidden" id="dynamicfields" name="dynamicfields" value="${dynamicfields}" />
<input type="hidden" id="docdynamicfields" name="dynamicfields" value="${docdynamicfields}" />
<input type="hidden" id="uuid" name="uuid" value="" />
<input type="hidden" id="case_id" name="case_id" value="" />
<input type="hidden" id="company_id" name="company_id" value="${Sessvals.getCompanyID()}" />
<input type="hidden" id="branch_id" name="branch_id" value="${Sessvals.getBranchID()}" />
<input type="hidden" id="status" name="status" value="" />
<input type="hidden" id="docv" name="docv" value="0" />
<!-- -->
<input type="hidden" id="invalidfields" value="0" />
<c:if test="${formmode gt 0}">
<div style="position:fixed;text-align:right;bottom:0px;width:980px;" class="buttonbar">
<input type="hidden" id="invalidfields" value="0" />
<input type="button" class="button" name="btnfirst" style="margin-left:5px;margin-top:-2px;float:left;width:80px" value="" id="btnfirst" accesskey="F" onclick="findRecord(1)" />
<input type="button" class="button" name="btnprev" style="margin-top:-2px;float:left;width:80px" value="" id="btnprev" accesskey="P" onclick="findRecord(2)" />
<input type="button" class="button" name="btnnext" style="margin-top:-2px;float:left;width:80px" value="" id="btnnext" accesskey="N" onclick="findRecord(3)" />
<input type="button" class="button" name="btnlast" style="margin-top:-2px;float:left;width:80px" value="" id="btnlast" accesskey="L" onclick="findRecord(4)" />
<input type="button" class="button" name="btnadd" style="float:right" value="Add New Record" id="btnadd" accesskey="A" onclick="return AddNewRecord();" />
</div>
</c:if>
</form>
<input type="hidden" id="formmode" name="formmode" value="${formmode}" />
<input type="hidden" id="usid" name="usid" value="${usid}" />
</div>
</div>
</body>
<!-- Page Load Javascript -->
<script language="javascript" type="text/javascript">
InitPage('${portfolio_id}');
</script>
<!-- -->
<!-- Process Message -->
<c:if test="${not empty msg}">
<script language="javascript" type="text/javascript"> CallMessage('${msg}',3000,200,300); </script>
</c:if>
<!-- -->
</html>

View File

@@ -14,7 +14,7 @@
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/appjs/cutoff.js" type="text/javascript"></script> <script src="/matrix/js/edp/cutoff/cutoff.js?v=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />

View File

@@ -14,7 +14,7 @@
<script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/lib/jsfuncs.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/msgdialog.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/ui/select.js" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/appjs/cutoff.js" type="text/javascript"></script> <script src="/matrix/js/edp/cutoff/cutoff.js?v=1" type="text/javascript"></script>
<script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script> <script language="javascript" src="/matrix/js/validator.js" type="text/javascript"></script>
<link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" /> <link href="/matrix/css/matrix.css" rel="stylesheet" type="text/css" />

View File

@@ -6,13 +6,15 @@
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" /> <meta name="viewport" content="width=device-width, initial-scale=1" />
<link href="<c:url value='/css/bootstrap-5.3.8.min.css' />" rel="stylesheet" /> <link href="<c:url value='/css/bootstrap-5.3.8.min.css' />" rel="stylesheet" />
<link href="<c:url value='/css/matrix-v2.css' />" rel="stylesheet" /> <link href="<c:url value='/css/matrix-v2.css?v=6' />" rel="stylesheet" />
<link href="<c:url value='/css/matrix-shell-v2.css' />" rel="stylesheet" /> <link href="<c:url value='/css/matrix-shell-v2.css?v=7' />" rel="stylesheet" />
<link href="<c:url value='/css/matrix-theme-v2.css' />" rel="stylesheet" /> <link href="<c:url value='/css/matrix-frame-dialog.css?v=6' />" rel="stylesheet" />
<link href="<c:url value='/css/matrix-theme-v2.css?v=4' />" rel="stylesheet" />
<script src="<c:url value='/js/matrix-shell-v2.js' />" defer></script> <script src="<c:url value='/js/matrix-shell-v2.js' />" defer></script>
<title>Cygnus 1.0 | <c:out value="${empty errorDetails.title ? 'Page unavailable' : errorDetails.title}" /></title> <script src="<c:url value='/js/matrix-frame-dialog.js?v=2' />" defer></script>
<title>Cygnus 1.0 | <c:out value="${empty messageDetails.title ? 'Page unavailable' : messageDetails.title}" /></title>
</head> </head>
<body class="matrix-v2 matrix-shell matrix-error-page matrix-error-page--${empty errorDetails.httpStatus ? 404 : errorDetails.httpStatus}"> <body class="matrix-v2 matrix-shell matrix-error-page matrix-error-page--${empty messageDetails.httpStatus ? 404 : messageDetails.httpStatus}">
<c:choose> <c:choose>
<c:when test="${not empty Sessvals and not empty Sessvals.menuHtml}"> <c:when test="${not empty Sessvals and not empty Sessvals.menuHtml}">
<%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %> <%@ include file="/WEB-INF/app/fragments/app-shell-header.jspf" %>
@@ -25,20 +27,20 @@
<main class="matrix-error-layout" id="mainContent"> <main class="matrix-error-layout" id="mainContent">
<section class="matrix-error-card" role="alert" aria-labelledby="errorTitle"> <section class="matrix-error-card" role="alert" aria-labelledby="errorTitle">
<div class="matrix-error-card__status" aria-hidden="true"> <div class="matrix-error-card__status" aria-hidden="true">
<span><c:out value="${empty errorDetails.httpStatus ? 404 : errorDetails.httpStatus}" /></span> <span><c:out value="${empty messageDetails.httpStatus ? 404 : messageDetails.httpStatus}" /></span>
</div> </div>
<div class="matrix-error-card__content"> <div class="matrix-error-card__content">
<span class="matrix-error-card__eyebrow"> <span class="matrix-error-card__eyebrow">
Error <c:out value="${empty errorDetails.errorCode ? 'HTTP-404' : errorDetails.errorCode}" /> Error <c:out value="${empty messageDetails.code ? 'HTTP-404' : messageDetails.code}" />
</span> </span>
<h1 id="errorTitle"> <h1 id="errorTitle">
<c:out value="${empty errorDetails.title ? 'Page unavailable' : errorDetails.title}" /> <c:out value="${empty messageDetails.title ? 'Page unavailable' : messageDetails.title}" />
</h1> </h1>
<p class="matrix-error-card__message"> <p class="matrix-error-card__message">
<c:out value="${empty errorDetails.message ? 'The requested page is unavailable.' : errorDetails.message}" /> <c:out value="${empty messageDetails.message ? 'The requested page is unavailable.' : messageDetails.message}" />
</p> </p>
<c:if test="${not empty errorDetails.description}"> <c:if test="${not empty messageDetails.description}">
<p class="matrix-error-card__description"><c:out value="${errorDetails.description}" /></p> <p class="matrix-error-card__description"><c:out value="${messageDetails.description}" /></p>
</c:if> </c:if>
<div class="matrix-error-card__actions"> <div class="matrix-error-card__actions">
@@ -55,9 +57,9 @@
</c:choose> </c:choose>
</div> </div>
<c:if test="${not empty errorDetails.referenceId}"> <c:if test="${not empty messageDetails.referenceId}">
<p class="matrix-error-card__reference"> <p class="matrix-error-card__reference">
Reference ID: <code><c:out value="${errorDetails.referenceId}" /></code> Reference ID: <code><c:out value="${messageDetails.referenceId}" /></code>
</p> </p>
</c:if> </c:if>
</div> </div>

Some files were not shown because too many files have changed in this diff Show More