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.

392 lines
15 KiB

  1. using Swift.DAL.BL.Remit.ExchangeRate;
  2. using Swift.DAL.SwiftDAL;
  3. using Swift.web.Component.Tab;
  4. using Swift.web.Library;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.Web.UI.WebControls;
  9. namespace Swift.web.Remit.ExchangeRate.ExRateTreasury
  10. {
  11. public partial class Manage : System.Web.UI.Page
  12. {
  13. private ExRateTreasuryDao obj = new ExRateTreasuryDao();
  14. private readonly StaticDataDdl _sdd = new StaticDataDdl();
  15. private readonly SwiftTab _tab = new SwiftTab();
  16. private const string ViewFunctionId = "30012300";
  17. private const string AddEditFunctionId = "30012310";
  18. private const string DeleteFunctionId = "30012320";
  19. protected void Page_Load(object sender, EventArgs e)
  20. {
  21. Authenticate();
  22. if (!IsPostBack)
  23. {
  24. PopulateDdl();
  25. LoadTab();
  26. SetDefaultValue();
  27. }
  28. agentTolMax.Attributes.Add("onblur", "CalcRate()");
  29. }
  30. protected string GetIsFw()
  31. {
  32. return GetStatic.ReadQueryString("isFw", "");
  33. }
  34. private void LoadTab()
  35. {
  36. var isFw = GetIsFw();
  37. var queryStrings = "?isFw=" + isFw;
  38. _tab.NoOfTabPerRow = 8;
  39. _tab.TabList = new List<TabField>
  40. {
  41. new TabField("Treasury Rate", "List.aspx" + queryStrings),
  42. new TabField("Add New", "", true),
  43. new TabField("Approve", "ApproveList.aspx" + queryStrings),
  44. new TabField("Reject", "RejectList.aspx" + queryStrings),
  45. new TabField("My changes", "MyChangeList.aspx" + queryStrings),
  46. new TabField("Copy Rate", "CopyAgentWiseRate.aspx" + queryStrings),
  47. };
  48. divTab.InnerHtml = _tab.CreateTab();
  49. }
  50. #region Method
  51. private void SetDefaultValue()
  52. {
  53. cHoMargin.Text = "0";
  54. cAgentMargin.Text = "0";
  55. pHoMargin.Text = "0";
  56. pAgentMargin.Text = "0";
  57. agentTolMin.Text = "0";
  58. agentTolMax.Text = "0";
  59. customerTolMin.Text = "0";
  60. customerTolMax.Text = "0";
  61. }
  62. private void MakeNumericTextBox()
  63. {
  64. Misc.MakeNumericTextbox(ref agentTolMin);
  65. Misc.MakeNumericTextbox(ref agentTolMax);
  66. Misc.MakeNumericTextbox(ref customerTolMin);
  67. Misc.MakeNumericTextbox(ref customerTolMax);
  68. }
  69. protected long GetId()
  70. {
  71. return GetStatic.ReadNumericDataFromQueryString("exRateTreasuryId");
  72. }
  73. private void Authenticate()
  74. {
  75. _sdd.CheckAuthentication(ViewFunctionId + "," + AddEditFunctionId + "," + DeleteFunctionId);
  76. btnSave.Visible = _sdd.HasRight(AddEditFunctionId);
  77. }
  78. #region PopulateDropDown
  79. private void PopulateDdl()
  80. {
  81. LoadSendingCountry(ref cCountry);
  82. LoadReceivingCountry(ref pCountry);
  83. LoadAgent(ref cAgent, cCountry.Text);
  84. LoadAgent(ref pAgent, pCountry.Text);
  85. LoadCurrency(ref cCurrency, cCountry.Text);
  86. LoadCurrency(ref pCurrency, pCountry.Text);
  87. }
  88. #endregion PopulateDropDown
  89. private void Update()
  90. {
  91. //var effectiveFrom = GetDateTime(effectiveFromDate.Text, effectiveFromTime.Text);
  92. //var effectiveTo = GetDateTime(effectiveToDate.Text, effectiveToTime.Text);
  93. var dbResult = obj.Insert(GetStatic.GetUser(), tranType.Text, cCurrency.Text, cCountry.Text, cAgent.Text, pCurrency.Text,
  94. pCountry.Text, pAgent.Text, agentTolMax.Text,
  95. cHoMargin.Text, cAgentMargin.Text, pHoMargin.Text, pAgentMargin.Text, sharingType.Text, sharingValue.Text,
  96. toleranceOn.Text, agentTolMin.Text, agentTolMax.Text, customerTolMin.Text, customerTolMax.Text);
  97. ManageMessage(dbResult);
  98. }
  99. private void ManageMessage(DbResult dbResult)
  100. {
  101. if (dbResult.ErrorCode != "0")
  102. {
  103. GetStatic.AlertMessage(Page, dbResult.Msg);
  104. return;
  105. }
  106. GetStatic.WriteSession("exRateTreasuryIds", dbResult.Id);
  107. Response.Redirect("ModifySummary.aspx");
  108. /*
  109. GetStatic.SetMessage(dbResult);
  110. if (dbResult.ErrorCode == "0")
  111. {
  112. Response.Redirect("List.aspx");
  113. }
  114. else
  115. {
  116. GetStatic.AlertMessage(Page);
  117. }
  118. * */
  119. }
  120. private void LoadSendingCountry(ref DropDownList ddl)
  121. {
  122. var sql = "EXEC proc_countryMaster @flag = 'scl'";
  123. _sdd.SetDDL(ref ddl, sql, "countryId", "countryName", "", "Select");
  124. }
  125. private void LoadReceivingCountry(ref DropDownList ddl)
  126. {
  127. var sql = "EXEC proc_countryMaster @flag = 'rclNepalOnly'";
  128. _sdd.SetDDL(ref ddl, sql, "countryId", "countryName", "", "Select");
  129. }
  130. private void LoadCurrency(ref DropDownList ddl, string countryId)
  131. {
  132. var sql = "EXEC proc_countryCurrency @flag='cl', @countryId=" + _sdd.FilterString(countryId);
  133. _sdd.SetDDL(ref ddl, sql, "currencyId", "currencyCode", "", "Select");
  134. }
  135. private void LoadAgent(ref DropDownList ddl, string countryId)
  136. {
  137. var sql = "EXEC proc_agentMaster @flag = 'alc', @agentCountryId = " + _sdd.FilterString(countryId);
  138. _sdd.SetDDL(ref ddl, sql, "agentId", "agentName", "", "All");
  139. }
  140. private void LoadTranType(ref DropDownList ddl, string countryId)
  141. {
  142. var sql = "EXEC proc_dropDownLists @flag = 'recModeByCountry', @param = " + _sdd.FilterString(pCountry.Text);
  143. _sdd.SetDDL(ref tranType, sql, "serviceTypeId", "typeTitle", "", "Any");
  144. }
  145. private void LoadCurrencyRate(string currencyCode, string countryId, string agentId, string rateType)
  146. {
  147. var dr = obj.SelectCurrencyRate(GetStatic.GetUser(), currencyCode, countryId, agentId, rateType);
  148. if (dr == null)
  149. {
  150. switch (rateType)
  151. {
  152. case "C":
  153. cRate.Text = "";
  154. cMargin.Text = "";
  155. cOffer.Text = "";
  156. cRateFactor.Value = "";
  157. lblCRateFactor.Text = "";
  158. break;
  159. case "P":
  160. pRate.Text = "";
  161. pMargin.Text = "";
  162. pOffer.Text = "";
  163. pRateFactor.Value = "";
  164. lblPRateFactor.Text = "";
  165. break;
  166. }
  167. return;
  168. }
  169. var costRate = 0.0;
  170. var margin = 0.0;
  171. switch (rateType)
  172. {
  173. case "C":
  174. cRate.Text = dr["costRate"].ToString();
  175. cMargin.Text = dr["margin"].ToString();
  176. costRate = Convert.ToDouble(dr["costRate"]);
  177. margin = Convert.ToDouble(dr["margin"]);
  178. cRateFactor.Value = dr["factor"].ToString();
  179. lblCRateFactor.Text = dr["factorName"].ToString();
  180. switch (cRateFactor.Value)
  181. {
  182. case "M":
  183. {
  184. var offer = costRate + margin;
  185. cOffer.Text = offer.ToString();
  186. }
  187. break;
  188. case "D":
  189. {
  190. var offer = costRate - margin;
  191. cOffer.Text = offer.ToString();
  192. }
  193. break;
  194. }
  195. break;
  196. case "P":
  197. pRate.Text = dr["costRate"].ToString();
  198. pMargin.Text = dr["margin"].ToString();
  199. costRate = Convert.ToDouble(dr["costRate"]);
  200. margin = Convert.ToDouble(dr["margin"]);
  201. pRateFactor.Value = dr["factor"].ToString();
  202. lblPRateFactor.Text = dr["factorName"].ToString();
  203. switch (cRateFactor.Value)
  204. {
  205. case "M":
  206. {
  207. var offer = costRate - margin;
  208. pOffer.Text = offer.ToString();
  209. }
  210. break;
  211. case "D":
  212. {
  213. var offer = costRate + margin;
  214. pOffer.Text = offer.ToString();
  215. }
  216. break;
  217. }
  218. break;
  219. }
  220. }
  221. #endregion Method
  222. protected void btnSave_Click(object sender, EventArgs e)
  223. {
  224. Update();
  225. }
  226. protected void cCountry_SelectedIndexChanged(object sender, EventArgs e)
  227. {
  228. LoadAgent(ref cAgent, cCountry.Text);
  229. LoadCurrency(ref cCurrency, cCountry.Text);
  230. cCountry.Focus();
  231. }
  232. protected void pCountry_SelectedIndexChanged(object sender, EventArgs e)
  233. {
  234. LoadTranType(ref tranType, pCountry.Text);
  235. LoadAgent(ref pAgent, pCountry.Text);
  236. LoadCurrency(ref pCurrency, pCountry.Text);
  237. pCountry.Focus();
  238. }
  239. protected void cAgent_SelectedIndexChanged(object sender, EventArgs e)
  240. {
  241. LoadCurrencyRate(cCurrency.SelectedItem.Text, cCountry.Text, cAgent.Text, "C");
  242. CalcCrossRates();
  243. cAgent.Focus();
  244. }
  245. protected void pAgent_SelectedIndexChanged(object sender, EventArgs e)
  246. {
  247. LoadCurrencyRate(pCurrency.SelectedItem.Text, pCountry.Text, pAgent.Text, "P");
  248. CalcCrossRates();
  249. pAgent.Focus();
  250. }
  251. protected void cCurrency_SelectedIndexChanged(object sender, EventArgs e)
  252. {
  253. LoadCurrencyRate(cCurrency.SelectedItem.Text, cCountry.Text, cAgent.Text, "C");
  254. GetCollRateMask();
  255. GetCrossRateMask();
  256. CalcCrossRates();
  257. cCurrency.Focus();
  258. }
  259. protected void pCurrency_SelectedIndexChanged(object sender, EventArgs e)
  260. {
  261. LoadCurrencyRate(pCurrency.SelectedItem.Text, pCountry.Text, pAgent.Text, "P");
  262. GetCrossRateMask();
  263. CalcCrossRates();
  264. pCurrency.Focus();
  265. }
  266. private void CalcCrossRates()
  267. {
  268. if (!string.IsNullOrEmpty(cCurrency.Text) && !string.IsNullOrEmpty(pCurrency.Text))
  269. GetStatic.CallBackJs1(Page, "Calc Cross Rate", "CalcRate();");
  270. }
  271. private void GetCrossRateMask()
  272. {
  273. var sql = "EXEC proc_exRateTreasury @flag = 'crdm', @cCurrency = " + _sdd.FilterString(cCurrency.Text) +
  274. ", @pCurrency = " + _sdd.FilterString(pCurrency.Text);
  275. rateMaskAd.Value = obj.GetSingleResult(sql);
  276. }
  277. protected void btnViewCrossRate_Click(object sender, EventArgs e)
  278. {
  279. CalculateCrossRate();
  280. //MakeNumericTextBox();
  281. }
  282. private void CalculateCrossRate()
  283. {
  284. pnlCrossRate.Visible = true;
  285. var cRateVal = Convert.ToDouble(cRate.Text);
  286. var cOfferVal = Convert.ToDouble(cOffer.Text);
  287. var cAgentOfferVal = Convert.ToDouble(Convert.ToDecimal(cOfferVal) + Convert.ToDecimal(cHoMargin.Text));
  288. var cCustomerOfferVal = Convert.ToDouble(Convert.ToDecimal(cOfferVal) + Convert.ToDecimal(cHoMargin.Text) + Convert.ToDecimal(cAgentMargin.Text));
  289. var pRateVal = Convert.ToDouble(pRate.Text);
  290. var pOfferVal = Convert.ToDouble(pOffer.Text);
  291. var pAgentOfferVal = Convert.ToDouble(Convert.ToDecimal(pOfferVal) - Convert.ToDecimal(pHoMargin.Text));
  292. var pCustomerOfferVal = Convert.ToDouble(Convert.ToDecimal(pOfferVal) - Convert.ToDecimal(pHoMargin.Text) - Convert.ToDecimal(pAgentMargin.Text));
  293. var afterDecimalValue = string.IsNullOrEmpty(rateMaskAd.Value) ? 0 : Convert.ToInt16(rateMaskAd.Value);
  294. var cRateBeforeDecimalValue = string.IsNullOrEmpty(maskColBD.Value) ? 0 : Convert.ToInt16(maskColBD.Value);
  295. var cRateAfterDecimalValue = string.IsNullOrEmpty(maskColAD.Value) ? 0 : Convert.ToInt16(maskColAD.Value);
  296. var maxCrossRateVal = 0.0;
  297. var crossRateVal = 0.0;
  298. var customerRateVal = 0.0;
  299. var toleranceVal = string.IsNullOrEmpty(agentTolMax.Text) ? 0.0 : Convert.ToDouble(agentTolMax.Text);
  300. var costVal = 0.0;
  301. Decimal marginVal = 0;
  302. maxCrossRateVal = pRateVal / cRateVal;
  303. maxCrossRateVal = GetStatic.RoundOff(maxCrossRateVal, 0, afterDecimalValue);
  304. crossRateVal = pAgentOfferVal / cAgentOfferVal;
  305. crossRateVal = GetStatic.RoundOff(crossRateVal, 0, afterDecimalValue);
  306. customerRateVal = pCustomerOfferVal / cCustomerOfferVal;
  307. customerRateVal = GetStatic.RoundOff(customerRateVal, 0, afterDecimalValue);
  308. costVal = pRateVal / (crossRateVal + toleranceVal);
  309. costVal = GetStatic.RoundOff(costVal, cRateBeforeDecimalValue, cRateAfterDecimalValue);
  310. marginVal = Convert.ToDecimal(costVal) - Convert.ToDecimal(cRateVal);
  311. maxCrossRate.Text = maxCrossRateVal.ToString();
  312. crossRate.Text = crossRateVal.ToString();
  313. customerRate.Text = customerRateVal.ToString();
  314. cost.Text = costVal.ToString();
  315. margin.Text = marginVal.ToString();
  316. if (marginVal < 0)
  317. margin.ForeColor = System.Drawing.Color.Red;
  318. else
  319. margin.ForeColor = System.Drawing.Color.Green;
  320. GetStatic.ResizeFrame(Page);
  321. }
  322. private void GetCollRateMask()
  323. {
  324. var obj = new DefExRateDao();
  325. DataRow dr = obj.SelectRateMask(GetStatic.GetUser(), cCurrency.Text, cRateFactor.Value);
  326. if (dr == null)
  327. return;
  328. maskColBD.Value = dr["maskBD"].ToString();
  329. maskColAD.Value = dr["maskAD"].ToString();
  330. }
  331. /*
  332. private void getPayRateMask()
  333. {
  334. DataRow dr = obj.SelectRateMask(GetStatic.GetUser(), pCurrency.Text, pRateFactor.Value);
  335. if (dr == null)
  336. return;
  337. maskPayBD.Value = dr["maskBD"].ToString();
  338. maskPayAD.Value = dr["maskAD"].ToString();
  339. pCurrHOMargin.Attributes.Add("onblur", "CalcPaymentOfferMask(this," + maskPayBD.Value + "," + maskPayAD.Value + ")");
  340. pCurrAgentMargin.Attributes.Add("onblur", "CalcPaymentOfferMask(this," + maskPayBD.Value + "," + maskPayAD.Value + ")");
  341. }
  342. * */
  343. }
  344. }