Advertisement
NikolayPaskulov

Untitled

Nov 7th, 2014
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.33 KB | None | 0 0
  1. var showReference = document.getElementById('show-reference'),
  2. firstDateInput = document.getElementById('firstDate'),
  3. table = document.getElementById('table'),
  4. secDateInput = document.getElementById('secDate'),
  5. output = [],
  6. cells = [];
  7.  
  8.  
  9. document.getElementById('save').onclick = function () {
  10. saveFile(output.join(''));
  11. }
  12.  
  13. function sendRequestToServer(arr, wanted) {
  14. var request = new XMLHttpRequest();
  15. request.onreadystatechange = function () {
  16. if (request.readyState == 4 && request.status == 200) {
  17. if (wanted == 'documents') {
  18. wanted = request.responseText;
  19. wanted = wanted.replace(/,\s+}|,}/g, '}');
  20. wanted = JSON.parse(wanted);
  21. console.log(wanted);
  22. wanted.sort(function (a, b) { return a.date - b.date });
  23. fillArray(wanted);
  24. }
  25. }
  26. }
  27. request.open("POST", "http://192.168.1.184:8000/pm", true);
  28. request.send(JSON.stringify(arr));
  29. }
  30.  
  31. function fillArray(arr) {
  32. var strArray = [],
  33. footerArray = [],
  34. footerFullSum = document.getElementById('footerFullSum');
  35. output = [];
  36. for (var i = 0; i < arr.length; i++) {
  37. var client = arr[i].partner.slice(arr[i].partner.lastIndexOf(':') + 1),
  38. date = arr[i].date.slice(6, 8) + '/' + arr[i].date.slice(4, 6) + '/' + arr[i].date.slice(0, 4),
  39. vat = Number(arr[i].vat).toFixed(2) || '&nbsp;',
  40. sumWithoutVat = ((Number(arr[i].sum) - Number(arr[i].vat)).toFixed(2)) || '&nbsp;';
  41. cells[i] = [];
  42. cells[i][0] = i + 1;
  43. cells[i][1] = '';
  44. cells[i][2] = arr[i].ВИДДОК;
  45. cells[i][3] = arr[i].docNumber;
  46. cells[i][4] = date;
  47. cells[i][5] = 'Идент. номер';
  48. cells[i][6] = client;
  49. cells[i][7] = arr[i].comment || '';
  50. cells[i][8] = '';
  51. cells[i][9] = (arr[i].type == 3) ? sumWithoutVat : '';
  52. cells[i][10] = (arr[i].type == 1) ? sumWithoutVat : '';
  53. cells[i][11] = (arr[i].type == 1) ? vat : '';
  54. cells[i][12] = (arr[i].type == 2) ? sumWithoutVat : '';
  55. cells[i][13] = (arr[i].type == 2) ? vat : '';
  56. cells[i][14] = '';
  57. cells[i][15] = (arr[i].type == 4) ? sumWithoutVat : '';
  58.  
  59. footerArray[0] = (arr[i].type == 4) ? (footerArray[0]) ? footerArray[0] + Number(sumWithoutVat) : 0 + Number(sumWithoutVat) : footerArray[0];
  60. footerArray[1] = (arr[i].type == 1) ? (footerArray[1]) ? footerArray[1] + Number(sumWithoutVat) : 0 + Number(sumWithoutVat) : footerArray[1];
  61. footerArray[2] = (arr[i].type == 1) ? (footerArray[2]) ? footerArray[2] + Number(vat) : 0 + Number(vat) : footerArray[2];
  62. footerArray[3] = (arr[i].type == 2) ? (footerArray[3]) ? footerArray[3] + Number(sumWithoutVat) : 0 + Number(sumWithoutVat) : footerArray[3];
  63. footerArray[4] = (arr[i].type == 2) ? (footerArray[4]) ? footerArray[4] + Number(vat) : 0 + Number(vat) : footerArray[4];
  64.  
  65. filloutput(cells[i]);
  66.  
  67. strArray.push('<div class="table-row">')
  68. for (var a = 0; a < cells[i].length; a++) {
  69. strArray.push('<div class="table-cell">' + cells[i][a] + '</div>');
  70. }
  71. strArray.push('</div>');
  72. }
  73. for (var f = 3; f < footerFullSum.childElementCount; f++) {
  74. footerFullSum.children[f].innerHTML = (footerArray[f - 3]) ? (footerArray[f - 3]).toFixed(2) : '&nbsp;';
  75. }
  76. table.innerHTML = strArray.join('');
  77. }
  78.  
  79. function filloutput(arr) {
  80. var NumberZDDS = document.getElementById('InZDDS').innerHTML;
  81. output.push(addingSymbol(NumberZDDS, 15) + addingSymbol(arr[1], 4) + addingSymbol(arr[0], 15) + addingSymbol(arr[2], 2) + addingSymbol(arr[3], 20) + addingSymbol(arr[4], 8) +
  82. addingSymbol(arr[5], 15) + addingSymbol(arr[6], 50) + addingSymbol(arr[7], 30) + addingSymbol(Number(arr[9]).toFixed(2), 15) + addingSymbol(Number(arr[10]).toFixed(2), 15) +
  83. addingSymbol(Number(arr[11]).toFixed(2), 15) + addingSymbol(Number(arr[12]).toFixed(2), 15) + addingSymbol(Number(arr[13]).toFixed(2), 15) + addingSymbol(Number(arr[14]).toFixed(2), 15) +
  84. addingSymbol(Number(arr[15]).toFixed(2), 15) + addingSymbol(arr[8], 2) + '\r\n');
  85.  
  86.  
  87. //(NumberZDDS.length < 15) ? output.push(NumberZDDS + addingSymbol(15 - NumberZDDS).length, ' ') : NumberZDDS; // ИН по ЗДДС
  88. //output.push(document.getElementById('DanPer').innerHTML); // Данъчен период
  89. //(String(arr[1]).length < 4) ? output.push(arr[1] + addingSymbol(4 - String(arr[1].length), ' ')) : output.push(arr[1]); // клон
  90. //(String(arr[0]).length < 15) ? output.push(arr[0] + addingSymbol(15 - String(arr[0]).length, ' ')) : output.push(arr[0]); // пореден номер
  91. //output.push(arr[2]); // вид на документа
  92. //(String(arr[3]).length < 20) ? output.push(arr[3] + addingSymbol(20 - String(arr[3].length), ' ')) : output.push(arr[3]); // Номер на документа
  93. //output.push(arr[4]); // дата на документа
  94. //(String(arr[5]).length < 15) ? output.push(arr[5] + addingSymbol(15 - String(arr[5].length), ' ')) : output.push(arr[5]); // ИН на лицето
  95. //(String(arr[6]).length < 50) ? output.push(arr[6] + addingSymbol(50 - String(arr[6].length), ' ')) : output.push(arr[6]); // Име на лицето
  96. //(String(arr[7]).length < 30) ? output.push(arr[7] + addingSymbol(30 - String(arr[7].length), ' ')) : output.push(arr[7]);// Вид на стоката
  97. //(String(arr[9]).length < 15 && String(arr[9]) == '') ? output.push(Number(arr[9].toFixed(2)) + addingSymbol(11 - String(arr[9].length), ' ')) : (String(arr[9]).length < 15 && String(arr[9]) != '')? output.push(arr[9] + addingSymbol(12 - String(arr[9].length))) : output.push(arr[9]) // ДО без ПДК
  98. //(String(arr[10]).length < 15) ? output.push(arr[10] + addingSymbol(15 - String(arr[10].length), ' ')) : output.push(arr[10]); // ДО с ПДК
  99. //(String(arr[11]).length < 15) ? output.push(arr[11] + addingSymbol(15 - String(arr[11].length), ' ')) : output.push(arr[11]); // ДДЗ с ПДК
  100. //(String(arr[12]).length < 15) ? output.push(arr[12] + addingSymbol(15 - String(arr[12].length), ' ')) : output.push(arr[12]); // ДО с ЧДК
  101. //(String(arr[13]).length < 15) ? output.push(arr[13] + addingSymbol(15 - String(arr[13].length), ' ')) : output.push(arr[13]); // ДДЗ с ЧДК
  102. //(String(arr[14]).length < 15) ? output.push(arr[14] + addingSymbol(15 - String(arr[14].length), ' ')) : output.push(arr[14]); // Годишни корекции по член 73
  103. //(String(arr[15]).length < 15) ? output.push(arr[15] + addingSymbol(15 - String(arr[15].length), ' ')) : output.push(arr[15]); // ДО тристранни операции
  104. //(String(arr[8]).length < 2) ? output.push(arr[8] + addingSymbol(2 - String(arr[8].length), ' ')) : output.push(arr[8]);// Доставка по чл. 163а
  105. //output.push('\r\n');
  106. }
  107.  
  108. showReference.onclick = checkIfDatesInputAreActive;
  109.  
  110. function checkIfDatesInputAreActive() {
  111. var firstDateArr = (firstDateInput.value).split('-'),
  112. secDateArr = (secDateInput.value).split('-');
  113. if (firstDateInput.value && secDateInput.value) {
  114. document.getElementById('DanPer').innerHTML = secDateArr[2] + secDateArr[1];
  115. //sending request for documents at given
  116. sendRequestToServer(['documents', 'ЛЕЙДИ СОФИЯ АД', firstDateArr.reverse().join(''), secDateArr.reverse().join(''), '', 'forward', '{"doc":"+ФЕ"}', 'false'], 'documents');
  117.  
  118. }
  119. }
  120.  
  121. function saveFile(obj) {
  122. var filename = 'POKUPKI.txt',
  123. blob = new Blob([obj], { type: 'text/plain' }),
  124. a = document.getElementById('a');
  125. a.href = webkitURL.createObjectURL(blob);
  126. a.download = filename;
  127. a.click();
  128. }
  129.  
  130.  
  131. function addingSymbol(str, num) {
  132. if (typeof str != 'string') str = String(str);
  133. var len = num - str.length,
  134. spaceArray = [str];
  135. for (var i = 0; i < len; i++) spaceArray.push(' ');
  136. return spaceArray.join('');
  137. }
  138.  
  139. var datePickerBtns = document.querySelectorAll('.open-date-picker');
  140. for (var i = 0; i < datePickerBtns.length; i++) {
  141. datePickerBtns[i].onclick = generateDateForm;
  142. }
  143.  
  144. function generateDateForm(ev) {
  145. var datePicker = document.getElementById('date-picker');
  146.  
  147. //Set the main structure of the date-picker element;
  148. datePicker.innerHTML = '<div><button>&#9668;</button><span></span><button>&#9658;</button></div><span class="hor-line"></span><div id="date-picker-week"><span>Sun</span>' +
  149. '<span>Mon</span><span>Tue</span><span>Wed</span><span>Thu</span><span>Fri</span><span>Sat</span></div><span class="hor-line"></span><div id="date-picker-days"></div>';
  150.  
  151. var monthNames = ["January", "February", "March", "April", "May", "June",
  152. "July", "August", "September", "October", "November", "December"],
  153. month = datePicker.querySelectorAll('span')[0],
  154. startOrEndDate = this.previousSibling,
  155. currentMonth = Number(startOrEndDate.value.substr(3, 2)) - 1,
  156. currentYear = Number(startOrEndDate.value.substr(6, 4));
  157.  
  158. if (datePicker.style.display == 'inline-block' && datePicker.style.left == Math.floor(this.offsetLeft - datePicker.offsetWidth / 2) + 'px') {
  159. datePicker.style.display = 'none';
  160. return;
  161. }
  162. datePicker.style.display = 'inline-block';
  163.  
  164. datePicker.style.left = Math.floor(this.offsetLeft - (datePicker.offsetWidth / 2)) + 'px';
  165. datePicker.style.top = (this.offsetTop + 23) + 'px';
  166. month.innerHTML = monthNames[currentMonth] + '&nbsp;-&nbsp;' + currentYear;
  167.  
  168. //Change months
  169. document.querySelectorAll('#date-picker button')[0].onclick = function () {
  170. if (currentMonth > 0) {
  171. currentMonth -= 1;
  172. }
  173. else {
  174. currentMonth = 11;
  175. currentYear -= 1;
  176. }
  177. month.innerHTML = monthNames[currentMonth] + '&nbsp;-&nbsp;' + currentYear;
  178. generateDays(currentMonth, currentYear);
  179. }
  180.  
  181. document.querySelectorAll('#date-picker button')[1].onclick = function () {
  182. if (currentMonth < 11) {
  183. currentMonth += 1;
  184. }
  185. else {
  186. currentMonth = 0;
  187. currentYear += 1;
  188. }
  189. month.innerHTML = monthNames[currentMonth] + '&nbsp;-&nbsp;' + currentYear;
  190. generateDays(currentMonth, currentYear);
  191. }
  192.  
  193. //Click on day to pick date
  194. datePicker.onclick = function (ev) {
  195. var target = (typeof (event) != 'undefined') ? event.srcElement : ev.target;
  196.  
  197. if (target.className == 'active-day') {
  198. var inputMonth = (Number(currentMonth) + 1 > 9) ? Number(currentMonth) + 1 : 0 + '' + (Number(currentMonth) + 1),
  199. inputDay = (target.innerHTML > 9) ? target.innerHTML : 0 + '' + target.innerHTML;
  200. startOrEndDate.value = inputDay + '-' + inputMonth + '-' + currentYear;
  201. datePicker.style.display = 'none';
  202. }
  203. }
  204.  
  205. //Add days from current month, previous month (if current month starts from week day different from Sunday)
  206. //and next month (if there is empty space at the end of the last row with days)
  207. function generateDays(chosenMonth, chosenYear) {
  208. var activeMonth = new Date(chosenYear, chosenMonth),
  209. currentMonthDays = getDaysInMonth(chosenMonth, chosenYear).length,
  210. prevMonthDays = getDaysInMonth(chosenMonth - 1, chosenYear).length,
  211. wrapper = [],
  212. nextMonthDays = 0;
  213.  
  214. for (var z = 0; z < activeMonth.getDay() ; z++) {
  215. wrapper.push('<span class="inactive-day">' + ((prevMonthDays + 1) - (activeMonth.getDay() - z)) + '</span>');
  216. nextMonthDays++;
  217. }
  218. for (var i = 1; i <= currentMonthDays; i++) {
  219. wrapper.push('<span class="active-day">' + i + '</span>');
  220. nextMonthDays++;
  221. }
  222. lastDaysLength = (nextMonthDays <= 35) ? 35 : 42;
  223. lastDaysLength = ((nextMonthDays + activeMonth.getDay()) == 28) ? 28 : lastDaysLength;
  224. for (var h = 1; h <= lastDaysLength - nextMonthDays; h++) {
  225. wrapper.push('<span class="inactive-day">' + h + '</span>');
  226. }
  227. document.getElementById('date-picker-days').innerHTML = wrapper.join('');
  228. }
  229. generateDays(currentMonth, currentYear);
  230.  
  231. //Get the number of days in month
  232. function getDaysInMonth(month, year) {
  233. var month = month;
  234. if (month < 0) {
  235. month = 11;
  236. year -= year;
  237. }
  238. var date = new Date(year, month, 1),
  239. days = [];
  240. while (date.getMonth() === month) {
  241. days.push(new Date(date));
  242. date.setDate(date.getDate() + 1);
  243. }
  244. return days;
  245. }
  246.  
  247. document.onclick = function (ev) {
  248. var target = (typeof (event) != 'undefined') ? event.srcElement : ev.target;
  249. while (target) {
  250. if (target.id == 'date-picker' || target.className == 'open-date-picker') {
  251. return;
  252. };
  253. target = target.parentNode
  254. }
  255. datePicker.style.display = 'none';
  256. }
  257. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement