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.

444 lines
22 KiB

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="VoucherEntry.aspx.cs" Inherits="Swift.web.BillVoucher.VoucherEntryWithTax.VoucherEntry" %>
  2. <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
  3. <%@ Register TagPrefix="uc1" TagName="SwiftTextBox" Src="~/Component/AutoComplete/SwiftTextBox.ascx" %>
  4. <!DOCTYPE html>
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head runat="server">
  7. <meta charset="utf-8" />
  8. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  9. <meta name="viewport" content="width=device-width, initial-scale=1" />
  10. <meta name="description" content="" />
  11. <meta name="author" content="" />
  12. <!--new css and js -->
  13. <!-- Bootstrap Core CSS -->
  14. <link href="/ui/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
  15. <link href="/ui/css/datepicker-custom.css" rel="stylesheet" />
  16. <link href="/js/jQuery/jquery-ui.css" rel="stylesheet" type="text/css" />
  17. <link href="/ui/css/style.css" type="text/css" rel="stylesheet" />
  18. <link href="/ui/font-awesome/css/font-awesome.min.css" rel="stylesheet" />
  19. <script type="text/javascript" src="/ui/js/jquery.min.js"></script>
  20. <script type="text/javascript" src="/ui/bootstrap/js/bootstrap.min.js"></script>
  21. <script src="/ui/js/pickers-init.js"></script>
  22. <script src="/ui/js/jquery-ui.min.js"></script>
  23. <!--page plugins-->
  24. <script src="/js/Swift_grid.js" type="text/javascript"> </script>
  25. <script src="/js/functions.js" type="text/javascript"> </script>
  26. <script src="/js/swift_autocomplete.js" type="text/javascript"></script>
  27. <script src="/js/swift_calendar.js"></script>
  28. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.mask/1.14.15/jquery.mask.min.js" type="text/javascript"></script>
  29. </head>
  30. <body>
  31. <form runat="server">
  32. <asp:HiddenField ID="hdnfileName1" runat="server" />
  33. <div class="page-wrapper">
  34. <div class="row">
  35. <div class="col-sm-12">
  36. <div class="page-title">
  37. <h1></h1>
  38. <ol class="breadcrumb">
  39. <li><a href="../../Front.aspx" target="mainFrame"><i class="fa fa-home"></i></a></li>
  40. <li><a href="#" onclick="return LoadModule('account')">Account</a></li>
  41. <li class="active"><a href="#">Bill & Voucher</a></li>
  42. <li class="active"><a href="VoucherEntry.aspx">Voucher Entry</a></li>
  43. </ol>
  44. </div>
  45. </div>
  46. </div>
  47. <div class="row">
  48. <div class="col-md-12">
  49. <div class="panel panel-default recent-activites">
  50. <div id="msg" visible="false" style="width: 74%;" class="alert alert-danger" runat="server">
  51. <span runat="server" id="mes"></span>
  52. </div>
  53. <div class="form-group alert alert-danger" id="divuploadMsg" runat="server" visible="false">
  54. </div>
  55. <div class="panel-heading">
  56. <h4 class="panel-title">Voucher Entry
  57. </h4>
  58. <div class="panel-actions">
  59. <a href="#" class="panel-action panel-action-toggle" data-panel-toggle></a><a href="#"
  60. class="panel-action panel-action-dismiss" data-panel-dismiss></a>
  61. </div>
  62. </div>
  63. <div class="panel-body">
  64. <div class="row">
  65. <div class="col-md-3 form-group">
  66. <label>Tax Percentage: </label>
  67. <input type="text" id="percentageTxt" value="10" class="form-control" />
  68. </div>
  69. <div class="col-md-3 form-group">
  70. <label>Saved Voucher Details: </label>
  71. <label id="savedVoucherDetail"></label>
  72. </div>
  73. </div>
  74. <div class="row">
  75. <div class="col-md-12 form-group">
  76. <table class="table table-responsive change">
  77. <tr>
  78. <th>Ledger</th>
  79. <th>Department</th>
  80. <th>Branch</th>
  81. <th>Amount</th>
  82. <th>Employee Name</th>
  83. <th>DR/CR</th>
  84. <th>Field1</th>
  85. <th></th>
  86. </tr>
  87. <tr>
  88. <td style="width: 300px !important">
  89. <uc1:SwiftTextBox ID="acInfo" runat="server" Category="acInfo" CssClass="autocomplete" Title="Blank for All" />
  90. </td>
  91. <td style="width: 155px !important">
  92. <asp:DropDownList ID="Department" runat="server" CssClass="form-control">
  93. </asp:DropDownList>
  94. </td>
  95. <td style="width: 200px !important">
  96. <asp:DropDownList ID="Branch" runat="server" CssClass="form-control">
  97. </asp:DropDownList>
  98. </td>
  99. <td style="width: 100px !important">
  100. <asp:TextBox ID="amt" placeholder="Enter Amount" runat="server" size="15" CssClass="form-control"></asp:TextBox>
  101. </td>
  102. <td style="width: 140px !important">
  103. <asp:TextBox ID="EmpName" placeholder="Enter Employee Name" runat="server" size="35" CssClass="form-control"></asp:TextBox>
  104. </td>
  105. <td style="width: 60px !important">
  106. <asp:DropDownList ID="dropDownDrCr" runat="server" Width="100%" CssClass="form-control">
  107. <asp:ListItem Value="cr" Selected="True">CR</asp:ListItem>
  108. <asp:ListItem Value="dr">DR</asp:ListItem>
  109. </asp:DropDownList>
  110. </td>
  111. <td style="width: 85px !important">
  112. <asp:TextBox ID="Field1" placeholder="Enter Field" runat="server" CssClass="form-control"></asp:TextBox>
  113. </td>
  114. <td style="width: 60px !important">
  115. <input type="button" value=" Add " id="btnAdd" class="btn btn-primary m-t-25" onclick="CheckFormValidation2();" />
  116. <asp:HiddenField ID="hdnRowId" runat="server" />
  117. </td>
  118. </tr>
  119. </table>
  120. </div>
  121. </div>
  122. <div class="row form-group ">
  123. <div class="col-md-12">
  124. <table class="table table-bordered table-striped table-hover" id="tblTempData">
  125. <thead>
  126. <tr>
  127. <th>S. No</th>
  128. <th>AC information</th>
  129. <th>Department</th>
  130. <th>Branch</th>
  131. <th>EmployeeName</th>
  132. <th>Type</th>
  133. <th>Amount</th>
  134. <th>Select</th>
  135. </tr>
  136. </thead>
  137. <tbody>
  138. </tbody>
  139. </table>
  140. </div>
  141. </div>
  142. <div class="row ">
  143. <div class="col-lg-2 col-md-2 form-group">
  144. <label class="control-label" for="">
  145. Voucher Type:
  146. </label>
  147. <asp:DropDownList ID="voucherType" runat="server" Width="100%" CssClass="form-control">
  148. </asp:DropDownList>
  149. </div>
  150. <div class="col-lg-2 col-md-2 form-group">
  151. <label class="control-label" for="">
  152. Voucher Date:</label>
  153. <div class="input-group m-b">
  154. <span class="input-group-addon">
  155. <i class="fa fa-calendar" aria-hidden="true"></i>
  156. </span>
  157. <asp:TextBox ID="transactionDate" onchange="return DateValidation('transactionDate','t')" MaxLength="10" runat="server" CssClass="form-control form-control-inline input-medium"></asp:TextBox>
  158. </div>
  159. </div>
  160. <div class="col-lg-2 col-md-2 form-group">
  161. <label class="control-label" for="">
  162. Cheque Number:
  163. </label>
  164. <asp:TextBox ID="chequeNo" runat="server" Width="100%" CssClass="form-control"></asp:TextBox>
  165. </div>
  166. <div class="col-lg-2 col-md-2 form-group">
  167. <label class="control-label" for="">
  168. Upload Image:
  169. </label>
  170. <asp:FileUpload ID="VImage" runat="server" />
  171. </div>
  172. <%--<div class="col-lg-2 col-md-2 form-group">
  173. <label class="control-label" for="">
  174. Import CSV:
  175. </label>
  176. <asp:FileUpload ID="fileUpload" runat="server" />
  177. <a href="../../SampleFile/VoucherEntry.csv">Voucher Sample</a>
  178. </div>
  179. <div class="col-lg-2 col-md-2 form-group">
  180. <br />
  181. <asp:Button ID="Button1" class="btn btn-primary" runat="server" Text="Upload File"/>
  182. </div>--%>
  183. </div>
  184. <div class="row form-group">
  185. <div class="col-md-12">
  186. <label class="control-label" for="">
  187. Narration:
  188. </label>
  189. <asp:TextBox ID="narrationField" runat="server" TextMode="MultiLine" MaxLength="300" Width="100%" CssClass="form-control"></asp:TextBox>
  190. </div>
  191. </div>
  192. <div class="row">
  193. <div class="form-group">
  194. <div class="col-md-4">
  195. <input type="button" value="Save voucher" id="btnSaveMainVoucher" class="btn btn-primary m-t-25" onclick="CheckFormValidation();" />
  196. <input type="button" value="Unsaved voucher" id="btnUnsavedVoucher" class="btn btn-primary m-t-25" onclick="PopulateTempData();" />
  197. </div>
  198. </div>
  199. </div>
  200. </div>
  201. </div>
  202. </div>
  203. </div>
  204. </div>
  205. </form>
  206. <script type="text/javascript">
  207. $(document).ready(function () {
  208. ShowCalFromToUpToToday("#transactionDate");
  209. $('#transactionDate').mask('0000-00-00');
  210. var allowDate = "<%=AllowChangeDate() %>";
  211. if (allowDate == "True") {
  212. ShowCalFromTo("#<% =transactionDate.ClientID %>", 1);
  213. }
  214. });
  215. function CheckFormValidation2() {
  216. DisableAllButtons();
  217. var reqField = "acInfo_aText,amt,";
  218. if (ValidRequiredField(reqField) == false) {
  219. EnableAllButtons();
  220. return false;
  221. }
  222. var data = new FormData();
  223. var amount = $('#amt').val();
  224. data.append('acInfo', $('#acInfo_aValue').val());
  225. data.append('amt', amount);
  226. data.append('dropDownDrCr', $('#dropDownDrCr').val());
  227. data.append('Department', $('#Department').val());
  228. data.append('Branch', $('#Branch').val());
  229. data.append('EmpName', $('#EmpName').val());
  230. data.append('Field1', $('#Field1').val());
  231. data.append('Percent', $('#percentageTxt').val());
  232. data.append('MethodName', 'SaveTemp');
  233. $.ajax({
  234. type: "POST",
  235. enctype: 'multipart/form-data',
  236. url: "/BillVoucher/VoucherEntryWithTax/VoucherEntry.aspx",
  237. data: data,
  238. processData: false,
  239. contentType: false,
  240. cache: false,
  241. success: function (data) {
  242. alert(data.Msg);
  243. if (data.ErrorCode == '0') {
  244. $('#acInfo_aSearch').val('');
  245. $('#acInfo_aText').val('');
  246. if ($('#dropDownDrCr').val() == 'cr') {
  247. $('#amt').val(GetReturnAmount(amount));
  248. $('#dropDownDrCr').val('dr');
  249. }
  250. else {
  251. $('#dropDownDrCr').val('cr');
  252. $('#amt').val('');
  253. }
  254. PopulateTempData();
  255. }
  256. EnableAllButtons();
  257. },
  258. error: function (e) {
  259. EnableAllButtons();
  260. alert(e);
  261. }
  262. });
  263. }
  264. function GetReturnAmount(amount) {
  265. amount = amount.replace(/,/g, "");
  266. var pcnt = $('#percentageTxt').val();
  267. var amt = parseFloat(amount) * (100 + parseFloat(pcnt)) / 100 * parseFloat(pcnt) / 100
  268. return CurrencyFormattedForTable(parseFloat(amount) - parseFloat(amt));
  269. }
  270. function PopulateTempData() {
  271. DisableAllButtons();
  272. var dataObject = {
  273. MethodName: 'PopulateTempData'
  274. };
  275. url = '';
  276. $.post(url, dataObject, function (data) {
  277. EnableAllButtons();
  278. var table = $('#tblTempData');
  279. table.find("tbody tr").remove();
  280. if (data.length == 0) {
  281. return;
  282. }
  283. var result = data;//jQuery.parseJSON(data);
  284. var count = 1, totalDr = 0, totalCR = 0, drCount = 0, crCount = 0;
  285. $.each(result, function (i, d) {
  286. if (d['part_tran_type'].toLowerCase() == 'dr') {
  287. drCount++;
  288. totalDr += parseFloat(d['tran_amt']);
  289. }
  290. else {
  291. crCount++;
  292. totalCR += parseFloat(d['tran_amt']);
  293. }
  294. var row = '<tr>';
  295. row += '<td>' + count + '</td>';
  296. row += '<td>' + d['acct_num'] + '</td>';
  297. row += '<td>' + d['DepartmentName'] + '</td>';
  298. row += '<td>' + d['agentName'] + '</td>';
  299. row += '<td>' + d['emp_name'] + '</td>';
  300. row += '<td>' + d['part_tran_type'] + '</td>';
  301. row += '<td>' + CurrencyFormattedForTable(parseFloat(d['tran_amt'])) + '</td>';
  302. row += '<td><div align="center"><span class="action-icon"><a class="btn btn-xs btn-primary" title="Delete" data-placement="top" data-toggle="tooltip" href="javascript:void(0)" data-original-title="Delete" style="text-decoration: none;" onclick="deleteRecord(\'' + d["tran_id"] + '\')" ><i class="fa fa-trash-o"></i></a></span></div></td>';
  303. row += '</tr>';
  304. table.append(row);
  305. count++;
  306. });
  307. table.append('<tr><td nowrap="nowrap" align="right" colspan="7" ><div align="right" style="font-size:12px !important"><strong>Total Dr</strong><span style="text-align:right; font-weight: bold;"> (' + drCount + '): &nbsp; &nbsp;' + CurrencyFormatted(totalDr) + '</span></div> </td></tr>');
  308. table.append('<tr><td nowrap="nowrap" align="right" colspan="7" ><div align="right" style="font-size:12px !important"><strong>Total Cr</strong><span style="text-align:right; font-weight: bold;"> (' + crCount + '): &nbsp; &nbsp;' + CurrencyFormatted(totalCR) + '</span></div> </td></tr>');
  309. }).fail(function () {
  310. EnableAllButtons();
  311. alert(result.Msg);
  312. });
  313. }
  314. function CheckFormValidation() {
  315. DisableAllButtons();
  316. var reqField = "voucherType,narrationField,transactionDate,";
  317. if (ValidRequiredField(reqField) == false) {
  318. EnableAllButtons();
  319. return false;
  320. }
  321. var data = new FormData();
  322. var vImage = $("#VImage").get(0).files[0];
  323. data.append('voucherType', $('#voucherType').val());
  324. data.append('narrationField', $('#narrationField').val());
  325. data.append('transactionDate', $('#transactionDate').val());
  326. data.append('chequeNo', $('#chequeNo').val());
  327. data.append('vImage', vImage);
  328. data.append('MethodName', 'SaveMainData');
  329. $.ajax({
  330. type: "POST",
  331. enctype: 'multipart/form-data',
  332. url: "/BillVoucher/VoucherEntryWithTax/VoucherEntry.aspx",
  333. data: data,
  334. processData: false,
  335. contentType: false,
  336. cache: false,
  337. success: function (data) {
  338. $('#savedVoucherDetail').html(data.Msg);
  339. PopulateTempData();
  340. EnableAllButtons();
  341. },
  342. error: function (e) {
  343. EnableAllButtons();
  344. alert(e);
  345. }
  346. });
  347. }
  348. function deleteRecord(rowId) {
  349. var dataObject = {
  350. MethodName: 'DeleteTemp',
  351. RowId: rowId
  352. };
  353. url = '';
  354. $.post(url, dataObject, function (data) {
  355. alert(data.Msg);
  356. PopulateTempData();
  357. }).fail(function () {
  358. alert(result.Msg);
  359. });
  360. }
  361. function DisableAllButtons() {
  362. $("#btnAdd").attr("disabled", true);
  363. $("#btnSaveMainVoucher").attr("disabled", true);
  364. $("#btnUnsavedVoucher").attr("disabled", true);
  365. }
  366. function EnableAllButtons() {
  367. $("#btnAdd").attr("disabled", false);
  368. $("#btnSaveMainVoucher").attr("disabled", false);
  369. $("#btnUnsavedVoucher").attr("disabled", false);
  370. }
  371. function CurrencyFormattedForTable(amount) {
  372. var i = parseFloat(amount);
  373. if (isNaN(i)) { i = 0.00; }
  374. var minus = '';
  375. if (i < 0) { minus = '-'; }
  376. i = Math.abs(i);
  377. i = parseInt((i + .005) * 100);
  378. i = i / 100;
  379. s = new String(i);
  380. if (s.indexOf('.') < 0) { s += '.00'; }
  381. if (s.indexOf('.') == (s.length - 2)) { s += '0'; }
  382. //s = minus + s;
  383. //if (amount < 0)
  384. // s = -1 * amount;
  385. return CommaFormattedForTable(s, amount);
  386. }
  387. function CommaFormattedForTable(amount, amountMain) {
  388. var delimiter = ",";
  389. var a = amount.split('.', 2);
  390. var d = a[1];
  391. var i = parseInt(a[0]);
  392. if (isNaN(i)) { return ''; }
  393. var minus = '';
  394. if (i < 0) { minus = '-'; }
  395. i = Math.abs(i);
  396. var n = new String(i);
  397. var a = [];
  398. while (n.length > 3) {
  399. var nn = n.substr(n.length - 3);
  400. a.unshift(nn);
  401. n = n.substr(0, n.length - 3);
  402. }
  403. if (n.length > 0) { a.unshift(n); }
  404. n = a.join(delimiter);
  405. if (d.length < 1) { amount = n; }
  406. else { amount = n + '.' + d; }
  407. amount = minus + amount;
  408. if (amountMain < 0)
  409. return "(" + amount + ")";
  410. else
  411. return amount;
  412. }
  413. </script>
  414. </body>
  415. </html>