You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

335 lines
20 KiB

  1. using Swift.DAL.BL.Remit.ExchangeRate;
  2. using Swift.web.Component.Tab;
  3. using Swift.web.Library;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Data;
  7. using System.Text;
  8. namespace Swift.web.Remit.ExchangeRate.ExRateTreasury
  9. {
  10. public partial class CopySummary : System.Web.UI.Page
  11. {
  12. private ExRateReportDao obj = new ExRateReportDao();
  13. private readonly StaticDataDdl _sdd = new StaticDataDdl();
  14. private readonly SwiftTab _tab = new SwiftTab();
  15. private const string GridName = "grd_cs";
  16. protected void Page_Load(object sender, EventArgs e)
  17. {
  18. Authenticate();
  19. if (!IsPostBack)
  20. {
  21. LoadTab();
  22. }
  23. LoadGrid();
  24. }
  25. private string GetApplyAgent()
  26. {
  27. return GetStatic.ReadQueryString("applyAgent", "");
  28. }
  29. private string GetApplyFor()
  30. {
  31. return GetStatic.ReadQueryString("applyFor", "");
  32. }
  33. private string GetExRateTreasuryIds()
  34. {
  35. return GetStatic.ReadSession("exRateTreasuryIds", "");
  36. }
  37. private string autoSelect(string str1, string str2)
  38. {
  39. if (str1 == str2)
  40. return "selected=\"selected\"";
  41. else
  42. return "";
  43. }
  44. private void Authenticate()
  45. {
  46. _sdd.CheckSession();
  47. }
  48. private string GetIsFw()
  49. {
  50. return GetStatic.ReadQueryString("isFw", "");
  51. }
  52. private void LoadTab()
  53. {
  54. var isFw = GetIsFw();
  55. var queryStrings = "?isFw=" + isFw;
  56. _tab.NoOfTabPerRow = 8;
  57. _tab.TabList = new List<TabField>
  58. {
  59. new TabField("Treasury Rate", "List.aspx" + queryStrings),
  60. new TabField("Add New", "Manage.aspx" + queryStrings),
  61. new TabField("Approve", "ApproveList.aspx" + queryStrings),
  62. new TabField("Reject", "RejectList.aspx" + queryStrings),
  63. new TabField("My changes", "MyChangeList.aspx" + queryStrings),
  64. new TabField("Copy Rate", "CopyAgentWiseRate.aspx" + queryStrings, true),
  65. };
  66. divTab.InnerHtml = _tab.CreateTab();
  67. }
  68. private string GetPagingBlock(int _total_record, int _page, int _page_size)
  69. {
  70. var str = new StringBuilder("<input type = \"hidden\" name=\"hdd_curr_page\" id = \"hdd_curr_page\" value=\"" + _page.ToString() + "\">");
  71. str.Append("<tr><td colspan='37'><table width=\"100%\" cellspacing=\"2\" cellpadding=\"2\" border=\"0\">");
  72. str.Append("<td width=\"247\" class=\"GridTextNormal\" nowrap='nowrap'>Result :&nbsp;<b>" + _total_record.ToString() + "</b>&nbsp;records&nbsp;");
  73. str.Append("<select name=\"ddl_per_page\" onChange=\"submit_form();\">");
  74. str.Append("<option value=\"10\"" + autoSelect("10", _page_size.ToString()) + ">10</option>");
  75. str.Append("<option value=\"20\"" + autoSelect("20", _page_size.ToString()) + ">20</option>");
  76. str.Append("<option value=\"30\"" + autoSelect("30", _page_size.ToString()) + ">30</option>");
  77. str.Append("<option value=\"40\"" + autoSelect("40", _page_size.ToString()) + ">40</option>");
  78. str.Append("<option value=\"50\"" + autoSelect("50", _page_size.ToString()) + ">50</option>");
  79. str.Append("<option value=\"100\"" + autoSelect("100", _page_size.ToString()) + ">100</option>");
  80. str.Append("</select>&nbsp;&nbsp;per page&nbsp;&nbsp;");
  81. str.AppendLine("<select name=\"" + GridName + "_ddl_pageNumber\" onChange=\"nav(this.value);\">");
  82. int remainder = _total_record % _page_size;
  83. int total_page = (_total_record - remainder) / _page_size;
  84. if (remainder > 0)
  85. total_page++;
  86. for (var i = 1; i <= total_page; i++)
  87. {
  88. str.AppendLine("<option value=\"" + i + "\"" + autoSelect(i.ToString(), _page.ToString()) + ">" + i + "</option>");
  89. }
  90. str.Append("</td>");
  91. str.AppendLine("<td width=\"100%\" align='right'>");
  92. if (_page > 1)
  93. str.AppendLine("<img style = \"cursor:pointer\" onclick =\"Nav(" + (_page - 1) + ", '" + GridName + "');\" title='Go to Previous page(Page : " + (_page - 1) + ")' src='" + GetStatic.GetUrlRoot() + "/images/prev.gif' border='0'>&nbsp;&nbsp;&nbsp;");
  94. else
  95. str.AppendLine("<img src='" + GetStatic.GetUrlRoot() + "/images/disprev.gif' border='0'>&nbsp;&nbsp;&nbsp;");
  96. if (_page * _page_size < _total_record)
  97. str.AppendLine("<img style = \"cursor:pointer\" onclick =\"Nav(" + (_page + 1) + ", '" + GridName + "');\" title='Go to Next page(Page : " + (_page + 1) + ")' src='" + GetStatic.GetUrlRoot() + "/images/next.gif' border='0'>&nbsp;&nbsp;&nbsp;");
  98. else
  99. str.AppendLine("<img src='" + GetStatic.GetUrlRoot() + "/images/disnext.gif' border='0'>&nbsp;&nbsp;&nbsp;");
  100. //str.AppendLine("&nbsp; <img title = 'Export to Excel' style = 'cursor:pointer' onclick = \"DownloadGrid('" + GetStatic.GetUrlRoot() + "');\" src='" + GetStatic.GetUrlRoot() + "/images/excel.gif' border='0'>");
  101. str.AppendLine("</td>");
  102. str.AppendLine("</tr></table></td></tr>");
  103. return str.ToString();
  104. }
  105. private string loadPagingBlock(DataTable dtPaging)
  106. {
  107. string pagingTable = "";
  108. foreach (DataRow row in dtPaging.Rows)
  109. {
  110. pagingTable = GetPagingBlock(int.Parse(row["totalRow"].ToString()), int.Parse(row["pageNumber"].ToString()), int.Parse(row["pageSize"].ToString()));
  111. }
  112. return pagingTable;
  113. }
  114. private void LoadGrid()
  115. {
  116. var dt = obj.GetCopySummary(GetStatic.GetUser(), GetExRateTreasuryIds(), GetApplyAgent(), GetApplyFor());
  117. var html = new StringBuilder();
  118. html.Append("<table id=\"rateTable\" class=\"exTable\" width=\"100%\" cellspacing=\"0\" cellpadding=\"2\" border=\"0\">");
  119. html.Append("<tr class=\"hdtitle\">");
  120. html.Append("<th colspan=\"2\" rowspan=\"2\" class=\"headingTH\"><center>Send</center></th>");
  121. html.Append("<th colspan=\"2\" rowspan=\"2\" class=\"headingTH\"><center>Receive</center></th>");
  122. html.Append("<th rowspan=\"3\" class=\"headingTH\">Service Type</th>");
  123. html.Append("<th rowspan=\"3\" class=\"headingTH\">Send<br/>Curr.</th>");
  124. html.Append("<th rowspan=\"3\" class=\"headingTH\">Receive<br/>Curr.</th>");
  125. html.Append("<th colspan=\"8\" class=\"headingTH\"><center>Head Office<span id=\"agentfxs\" onclick=\"ShowAgentFxCol();\" title=\"Show Agent Fx\"><span><img src=\"../../../images/expandright-icon.png\" border=\"0\" /></span></span></center></th>");
  126. html.Append("<th rowspan=\"2\" colspan=\"2\" class=\"headingTH\" ondblclick=\"HideAgentFxCol();\" style=\"cursor: pointer;\"><center><span id=\"agentfxh\" onclick=\"HideAgentFxCol();\" title=\"Hide Agent Fx\"><span><img src=\"../../../images/collapseleft-icon.png\" border=\"0\" /></span></span>Agent FX<span id=\"tolerances\" onclick=\"ShowToleranceCol();\" title=\"Show Tolerance\"><span><img src=\"../../../images/expandright-icon.png\" border=\"0\" /></span></span></center></th>");
  127. html.Append("<th colspan=\"3\" class=\"headingTH\" ondblclick=\"HideToleranceCol();\" style=\"cursor: pointer;\"><center><span id=\"toleranceh\" onclick=\"HideToleranceCol();\" title=\"Hide Tolerance\"><span><img src=\"../../../images/collapseleft-icon.png\" border=\"0\" /></span></span>Tolerance<span id=\"sendingagents\" onclick=\"ShowSendingAgentCol();\" title=\"Show Sending Agent\"><span><img src=\"../../../images/expandright-icon.png\" border=\"0\" /></span></span></center></th>");
  128. html.Append("<th colspan=\"6\" class=\"headingTH\" ondblclick=\"HideSendingAgentCol();\" style=\"cursor: pointer;\"><center><span id=\"sendingagenth\" onclick=\"HideSendingAgentCol();\" title=\"Hide Sending Agent\"><span><img src=\"../../../images/collapseleft-icon.png\" border=\"0\" /></span></span>Sending Agent<span id=\"customertols\" onclick=\"ShowCustomerTolCol();\" title=\"Show Customer Tol.\"><span><img src=\"../../../images/expandright-icon.png\" border=\"0\" /></span></span></center></th>");
  129. html.Append("<th colspan=\"2\" rowspan=\"2\" class=\"headingTH\" ondblclick=\"HideCustomerTolCol();\" style=\"cursor: pointer;\"><center><span id=\"customertolh\" onclick=\"HideCustomerTolCol();\" title=\"Hide Customer Tol.\"><span><img src=\"../../../images/collapseleft-icon.png\" border=\"0\" /></span></span>Cust. Tol.</center></th>");
  130. html.Append("<th colspan=\"3\" class=\"headingTH\"><center>Cross Rate</center></th>");
  131. html.Append("<th rowspan=\"3\" class=\"headingTH\">Last Update/Approve</th>");
  132. html.Append("</tr><tr class=\"hdtitle\">");
  133. //Head Office
  134. html.Append("<th colspan=\"4\" class=\"headingTH\"><center>USD vs Send Curr.</center></th>");
  135. html.Append("<th colspan=\"4\" class=\"headingTH\"><center>USD vs Receive Curr.</center></th>");
  136. //Tolerance
  137. html.Append("<th rowspan=\"2\" class=\"headingTH\"><center>On</center></th>");
  138. html.Append("<th colspan=\"2\" class=\"headingTH\"><center>Agent</center></th>");
  139. //Sending Agent
  140. html.Append("<th colspan=\"3\" class=\"headingTH\"><center>USD vs Send Curr.</center></th>");
  141. html.Append("<th colspan=\"3\" class=\"headingTH\"><center>USD vs Receive Curr.</center></th>");
  142. //Customer
  143. html.Append("<th colspan=\"3\" class=\"headingTH\"><center>Send Curr. vs Receive Curr.</center></th>");
  144. html.Append("</tr>");
  145. html.Append("</tr><tr class=\"hdtitle\">");
  146. html.Append("<th class=\"headingTH\">Country</th>");
  147. html.Append("<th class=\"headingTH\">Agent<div class=\"headingAgent\"></div></th>");
  148. html.Append("<th class=\"headingTH\">Country</th>");
  149. html.Append("<th class=\"headingTH\">Agent<div class=\"headingAgent\"></div></th>");
  150. //Head Office
  151. html.Append("<th class=\"thhorate\">Rate</th>");
  152. html.Append("<th class=\"thhorate\">Margin(I)</th>");
  153. html.Append("<th class=\"thhorate\">Margin</th>");
  154. html.Append("<th class=\"thhorate\">Offer</th>");
  155. html.Append("<th class=\"thhorate\">Rate</th>");
  156. html.Append("<th class=\"thhorate\">Margin(I)</th>");
  157. html.Append("<th class=\"thhorate\">Margin</th>");
  158. html.Append("<th class=\"thhorate\">Offer</th>");
  159. //Agent FX
  160. html.Append("<th class=\"thagentFx\">Value</th>");
  161. html.Append("<th class=\"agentFx\">Type</th>");
  162. //Tolerance
  163. html.Append("<th class=\"headingTH\">Min</th>");
  164. html.Append("<th class=\"headingTH\">Max</th>");
  165. //Sending Agent
  166. html.Append("<th class=\"thsendagentrate\">Rate</th>");
  167. html.Append("<th class=\"thsendagentrate\">Margin</th>");
  168. html.Append("<th class=\"thsendagentrate\">Offer</th>");
  169. html.Append("<th class=\"thsendagentrate\">Rate</th>");
  170. html.Append("<th class=\"thsendagentrate\">Margin</th>");
  171. html.Append("<th class=\"thsendagentrate\">Offer</th>");
  172. //Cust. Tol.
  173. html.Append("<th class=\"thcustomertol\">Min</th>");
  174. html.Append("<th class=\"thcustomertol\">Max</th>");
  175. //Customer
  176. html.Append("<th class=\"thcustomerrate\">Max Rate</th>");
  177. html.Append("<th class=\"thcustomerrate\">Agent Rate</th>");
  178. html.Append("<th class=\"thcustomerrate\">Customer Rate</th>");
  179. html.Append("</tr>");
  180. var i = 0;
  181. var countryName = "";
  182. foreach (DataRow dr in dt.Rows)
  183. {
  184. var id = dr["exRateTreasuryId"].ToString();
  185. if (GetApplyFor().ToLower() == "c")
  186. {
  187. if (countryName != dr["pCountryName"].ToString())
  188. {
  189. html.Append(
  190. "<tr class=\"trcountry\"><td colspan=\"37\" class=\"tdcountry\" style=\"cursor: pointer\" onclick=\"CheckGroup(this,'" + dr["pCountryCode"] + "');\"><b>Receiving Country : " + GetStatic.GetCountryFlag(dr["pCountryCode"].ToString()) +
  191. dr["pCountryName"] + "</b></td></tr>");
  192. countryName = dr["pCountryName"].ToString();
  193. }
  194. }
  195. else
  196. {
  197. if (countryName != dr["cCountryName"].ToString())
  198. {
  199. html.Append(
  200. "<tr class=\"trcountry\"><td colspan=\"37\" class=\"tdcountry\" style=\"cursor: pointer\" onclick=\"CheckGroup(this,'" + dr["cCountryCode"] + "');\"><b>Sending Country : " + GetStatic.GetCountryFlag(dr["cCountryCode"].ToString()) +
  201. dr["cCountryName"] + "</b></td></tr>");
  202. countryName = dr["cCountryName"].ToString();
  203. }
  204. }
  205. html.Append(++i % 2 == 1 ? "<tr id=\"row_" + id + "\"" + AppendRowSelectionProperty("selectedbg", "oddbg", "GridOddRowOver") + ">" : "<tr id=\"row_" + id + "\"" + AppendRowSelectionProperty("selectedbg", "evenbg", "GridEvenRowOver") + ">");
  206. html.Append("<td nowrap=\"nowrap\">" + GetStatic.GetCountryFlag(dr["cCountryCode"].ToString()) + dr["cCountryName"] + "</td>");
  207. html.Append("<td>" + dr["cAgentName"] + "</td>");
  208. html.Append("<td nowrap=\"nowrap\">" + GetStatic.GetCountryFlag(dr["pCountryCode"].ToString()) + dr["pCountryName"] + "</td>");
  209. html.Append("<td>" + dr["pAgentName"] + "</td>");
  210. html.Append("<td>" + dr["tranType"] + "</td>");
  211. html.Append("<td>" + dr["cCurrency"] + "</td>");
  212. html.Append("<td>" + dr["pCurrency"] + "</td>");
  213. //Head Office Rate, Margin, Offer to Agent
  214. html.Append("<td class=\"tdhorate\">" + dr["cRate"] + "</td>");
  215. html.Append(ComposeLabel(dr, "cMargin", "tdhorate", true));
  216. html.Append(ComposeLabel(dr, "cHoMargin", "tdhorate", true));
  217. html.Append("<td class=\"tdhorate\">" + (Convert.ToDecimal(dr["cRate"]) + Convert.ToDecimal(dr["cMargin"]) + Convert.ToDecimal(dr["cHoMargin"])) + "</td>");
  218. html.Append("<td class=\"tdhorate\">" + dr["pRate"] + "</td>");
  219. html.Append(ComposeLabel(dr, "pMargin", "tdhorate", true));
  220. html.Append(ComposeLabel(dr, "pHoMargin", "tdhorate", true));
  221. html.Append("<td class=\"tdhorate\">" + (Convert.ToDecimal(dr["pRate"]) - Convert.ToDecimal(dr["pMargin"]) - Convert.ToDecimal(dr["pHoMargin"])) + "</td>");
  222. //Agent Fx
  223. html.Append("<td class=\"tdagentfx\">" + dr["sharingValue"] + "</td>");
  224. html.Append("<td class=\"tdagentfx\">" + dr["sharingType"] + "</td>");
  225. //Tolerance
  226. html.Append("<td class=\"tdagenttol\">" + dr["toleranceOn"] + "</td>");
  227. html.Append("<td class=\"tdagenttol\">" + dr["agentTolMin"] + "</td>");
  228. html.Append("<td class=\"tdagenttol\">" + dr["agentTolMax"] + "</td>");
  229. //Sending Agent Rate, Margin, Offer to Customer
  230. html.Append("<td class=\"tdsendagentrate\">" + (Convert.ToDecimal(dr["cRate"]) + Convert.ToDecimal(dr["cMargin"]) + Convert.ToDecimal(dr["cHoMargin"])) + "</td>");
  231. html.Append(ComposeLabel(dr, "cAgentMargin", "tdsendagentrate", true));
  232. html.Append(ComposeLabelWithValue((Convert.ToDecimal(dr["cRate"]) + Convert.ToDecimal(dr["cMargin"]) + Convert.ToDecimal(dr["cHoMargin"]) + Convert.ToDecimal(dr["cAgentMargin"])).ToString(), "tdsendagentrate", true));
  233. html.Append("<td class=\"tdsendagentrate\">" + (Convert.ToDecimal(dr["pRate"]) - Convert.ToDecimal(dr["pMargin"]) - Convert.ToDecimal(dr["pHoMargin"])) + "</td>");
  234. html.Append(ComposeLabel(dr, "pAgentMargin", "tdsendagentrate", true));
  235. html.Append(ComposeLabelWithValue((Convert.ToDecimal(dr["pRate"]) - Convert.ToDecimal(dr["pMargin"]) - Convert.ToDecimal(dr["pHoMargin"]) - Convert.ToDecimal(dr["pAgentMargin"])).ToString(), "tdsendagentrate", true));
  236. //Customer Tol
  237. html.Append("<td class=\"tdcustomertol\">" + dr["customerTolMin"] + "</td>");
  238. html.Append("<td class=\"tdcustomertol\">" + dr["customerTolMax"] + "</td>");
  239. //Customer
  240. html.Append("<td class=\"tdcustomerrate\">" + dr["maxCrossRate"] + "</td>");
  241. html.Append("<td class=\"tdcustomerrate\">" + dr["crossRate"] + "</td>");
  242. html.Append("<td class=\"tdcustomerrate\">" + dr["customerRate"] + "</td>");
  243. html.Append("<td nowrap='nowrap'>" + dr["modifiedBy"] + " " + dr["modifiedDate"] + "<br/>" + dr["approvedBy"] + " " + dr["approvedDate"] + "</td>");
  244. html.Append("</tr>");
  245. }
  246. html.Append("</table>");
  247. rpt_grid.InnerHtml = html.ToString();
  248. GetStatic.CallBackJs1(Page, "Show Hide", "ShowHideDetail();");
  249. }
  250. private string AppendRowSelectionProperty(string rowSelectedClass, string defaultClass, string onhoverclass)
  251. {
  252. return " class=\"" + defaultClass + "\" ondblclick=\"if(this.className=='" + rowSelectedClass + "'){this.className='" + defaultClass + "';}else{this.className='" + rowSelectedClass + "';}\" onMouseOver=\"if(this.className=='" + defaultClass + "'){this.className='" + onhoverclass + "';}\" onMouseOut=\"if(this.className=='" + rowSelectedClass + "'){}else{this.className='" + defaultClass + "';}\" ";
  253. }
  254. private string ComposeLabel(DataRow dr, string valueField, string cssClass, bool showDistinctMinusValue)
  255. {
  256. var html = new StringBuilder();
  257. var styleAttr = "";
  258. if (showDistinctMinusValue)
  259. {
  260. styleAttr = Convert.ToDouble(dr[valueField]) < 0
  261. ? " style=\"color: red !important;\" "
  262. : " style=\"color: green !important;\" ";
  263. }
  264. html.Append("<td class=\"" + cssClass + "\" " + styleAttr + ">" + dr[valueField] + "</td>");
  265. return html.ToString();
  266. }
  267. private string ComposeLabelWithValue(string value, string cssClass, bool showDistinctMinusValue)
  268. {
  269. var html = new StringBuilder();
  270. var styleAttr = "";
  271. if (showDistinctMinusValue)
  272. {
  273. styleAttr = Convert.ToDouble(value) < 0
  274. ? " style=\"color: red !important;\" "
  275. : " style=\"color: green !important;\" ";
  276. }
  277. html.Append("<td class=\"" + cssClass + "\" " + styleAttr + ">" + value + "</td>");
  278. return html.ToString();
  279. }
  280. protected void btnHidden_Click(object sender, EventArgs e)
  281. {
  282. LoadGrid();
  283. }
  284. protected void countryOrderBy_SelectedIndexChanged(object sender, EventArgs e)
  285. {
  286. LoadGrid();
  287. }
  288. }
  289. }