Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2019
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.35 KB | None | 0 0
  1. let dropdown = document.getElementById('id');
  2. const filter = document.querySelector('#filter');
  3. dropdown.selectedIndex = 0;
  4.  
  5. function addInvoiceProduct() {
  6. for (var item of invoiceProducts) {
  7. const list = document.getElementById('products-list');
  8. const row = document.createElement('tr');
  9. var addProductID = item.id;
  10. var addProductName = item.pivot.product_name == null ? item.name : item.pivot.product_name;
  11. var addProductSymbol = item.pivot.product_name == null ? '- ' + item.symbol : ' ';
  12. var addProductPurchasePrice = item.pivot.purchase_price == null ? '0' : item.pivot.purchase_price;
  13. var addProductNetPrice = item.pivot.net_unit_price;
  14. var addProductQuantity = item.pivot.quantity;
  15.  
  16. if (item.is_gift == '1') {
  17.  
  18. row.innerHTML = `
  19. <td style="display:none;"><input type="hidden" value="${addProductID}"></td>
  20. <td bgcolor="#0066FF"> <input class="product-name" style="width:400px;" type="text" value="${addProductName} ${addProductSymbol}"></td>
  21. <td><input class="netUnitPrice" type="text" value="${addProductNetPrice}"></td>
  22. <td><input class="purchasePrice" type="text" value="${addProductPurchasePrice}"></td>
  23. <td><input class="quantity" type="number" value="${addProductQuantity}" min="1" max="300" required></td>
  24. <td><a href="#" class="delete">X</a></td>
  25. `;
  26. } else {
  27. row.innerHTML = `
  28. <td style="display:none;"><input type="hidden" value="${addProductID}"></td>
  29. <td> <input class="product-name" type="text" style="width:400px;" value="${addProductName} ${addProductSymbol}"></td>
  30. <td><input class="netUnitPrice" type="text" value="${addProductNetPrice}"></td>
  31. <td><input class="purchasePrice" type="text" value="${addProductPurchasePrice}"></td>
  32. <td><input class="quantity" type="number" value="${addProductQuantity}" min="1" max="300" required></td>
  33. <td><a href="#" class="delete">X</a></td>
  34. `;
  35. }
  36. list.appendChild(row);
  37. }
  38. }
  39.  
  40. if (invoiceProducts) {
  41. addInvoiceProduct();
  42. }
  43.  
  44. let url = '/api/customer/products/' + customerID;
  45.  
  46. fetch(url)
  47. .then(
  48. function (response) {
  49. if (response.status !== 200) {
  50. console.warn('Wygląda na to, że jest jakis problem, error nr: ' +
  51. response.status);
  52. return;
  53. }
  54.  
  55. response.json().then(function (data) {
  56.  
  57. let option;
  58. dropdown.length = 0;
  59.  
  60.  
  61. for (var item of data) {
  62. option = document.createElement('option');
  63. option.className = 'products';
  64. option.text = item.name + ' ' + item.symbol;
  65. option.value = item.id;
  66. option.dataset.name = item.name;
  67. option.dataset.symbol = item.symbol;
  68. option.dataset.purchasePrice = item.pivot.purchase_customer_price;
  69. option.dataset.netUnitPrice = item.pivot.selling_customer_price;
  70. option.dataset.isGift = item.is_gift;
  71. option.dataset.quantity = item.quantity;
  72. dropdown.add(option);
  73.  
  74. }
  75. });
  76. }
  77. )
  78. .catch(function (err) {
  79. console.error('Fetch Error -', err);
  80. });
  81.  
  82.  
  83.  
  84. filter.addEventListener('keyup', filterProducts);
  85.  
  86.  
  87. function filterProducts(e) {
  88. const text = e.target.value.toLowerCase();
  89. //pobieramy wszystkie itemy bo tu mamy liste
  90. products = document.querySelectorAll('.products');
  91. products.forEach(function (product) {
  92. const item = product.firstChild.textContent;
  93. if (item.toLocaleLowerCase().indexOf(text) != -1) {
  94. product.style.display = 'block';
  95. } else {
  96. product.style.display = 'none';
  97. }
  98. });
  99. }
  100.  
  101.  
  102. dropdown.addEventListener('dblclick', addRow);
  103.  
  104. function addRow() {
  105. let selectedProduct = dropdown.options[dropdown.selectedIndex];
  106.  
  107. var addProduct = selectedProduct.value;
  108. var addProductName = selectedProduct.dataset.name;
  109. var addProductSymbol = selectedProduct.dataset.symbol;
  110. var addProductPurchasePrice = selectedProduct.dataset.purchasePrice;
  111. var addProductNetPrice = selectedProduct.dataset.netUnitPrice;
  112. var addProductGift = selectedProduct.dataset.isGift;
  113. var addProductQuantity = '0';
  114.  
  115. const list = document.getElementById('products-list');
  116. const row = document.createElement('tr');
  117.  
  118.  
  119. if (addProductGift == '1') {
  120. row.innerHTML = `
  121. <td style="display:none;"><input type="hidden" value="${addProduct}"></td>
  122. <td bgcolor="#0066FF"> <input class="product-name" style="width:400px;" type="text" value="${addProductName} - ${addProductSymbol}" style="min-width:1px;"></td>
  123. <td><input class="netUnitPrice" type="text" value="${addProductNetPrice}"></td>
  124. <td><input class="purchasePrice" type="text" value="${addProductPurchasePrice}"></td>
  125. <td><input class="quantity" type="number" value="${addProductQuantity}" min="1" max="300" required></td>
  126. <td><a href="#" class="delete">X</a></td>
  127. `;
  128. } else {
  129. row.innerHTML = `
  130. <td style="display:none;"><input type="hidden" value="${addProduct}"></td>
  131. <td> <input class="product-name" style="width:400px;" type="text" value="${addProductName} - ${addProductSymbol}" style="width:400px;"></td>
  132. <td><input class="netUnitPrice" type="text" value="${addProductNetPrice}"></td>
  133. <td><input class="purchasePrice" type="text" value="${addProductPurchasePrice}"></td>
  134. <td><input class="quantity" type="number" value="${addProductQuantity}" min="1" max="300" required></td>
  135. <td><a href="#" class="delete">X</a></td>
  136. `;
  137. }
  138. list.appendChild(row);
  139. }
  140.  
  141. const addAll = document.querySelector('#addAll');
  142. addAll.addEventListener('click', addAllProducts);
  143.  
  144. function addAllProducts() {
  145. for (var item of customerProducts) {
  146. var addProduct = item.id;
  147. var addProductName = item.name;
  148. var addProductSymbol = item.symbol;
  149. var addProductPurchasePrice = item.pivot.purchase_customer_price;
  150. var addProductNetPrice = item.pivot.selling_customer_price;
  151. var addProductGift = item.is_gift;
  152. var addProductQuantity = '0';
  153.  
  154. const list = document.getElementById('products-list');
  155. const row = document.createElement('tr');
  156.  
  157.  
  158. if (addProductGift == '1') {
  159. row.innerHTML = `
  160. <td style="display:none;"><input type="hidden" value="${addProduct}"></td>
  161. <td bgcolor="#0066FF"> <input class="product-name" style="width:400px;" type="text" value="${addProductName} - ${addProductSymbol}" style="min-width:1px;"></td>
  162. <td><input class="netUnitPrice" type="text" value="${addProductNetPrice}"></td>
  163. <td><input class="purchasePrice" type="text" value="${addProductPurchasePrice}"></td>
  164. <td><input class="quantity" type="number" value="${addProductQuantity}" min="1" max="300" required></td>
  165. <td><a href="#" class="delete">X</a></td>
  166. `;
  167. } else {
  168. row.innerHTML = `
  169. <td style="display:none;"><input type="hidden" value="${addProduct}"></td>
  170. <td> <input class="product-name" style="width:400px;" type="text" value="${addProductName} - ${addProductSymbol}" style="width:400px;"></td>
  171. <td><input class="netUnitPrice" type="text" value="${addProductNetPrice}"></td>
  172. <td><input class="purchasePrice" type="text" value="${addProductPurchasePrice}"></td>
  173. <td><input class="quantity" type="number" value="${addProductQuantity}" min="1" max="300" required></td>
  174. <td><a href="#" class="delete">X</a></td>
  175. `;
  176. }
  177. list.appendChild(row);
  178. }
  179. }
  180.  
  181. document.getElementById('products-list').addEventListener('click', e => {
  182. if (!e.target.classList.contains('delete')) {
  183. return;
  184. }
  185. e.preventDefault();
  186.  
  187. e.target.parentNode.parentNode.remove();
  188. });
  189.  
  190. if (updateInvoice) {
  191.  
  192.  
  193.  
  194. document.querySelector('#sendProductsForm').addEventListener('submit', function (event) {
  195. event.target.querySelector('[type = "submit"]').disabled = true;
  196.  
  197. event.preventDefault();
  198.  
  199. let customer_prices = [...document.querySelectorAll('#products-list tr')].reduce((previousValue, currentValue) => {
  200. const productId = currentValue.querySelector('input[type=hidden]').value;
  201. const productName = currentValue.querySelector('.product-name').value;
  202. const productSymbol = currentValue.querySelector('.product-name').value;
  203. const productQuantity = Number(currentValue.querySelector('.quantity').value);
  204.  
  205. if (previousValue.hasOwnProperty(productId)) {
  206. previousValue[productId].quantity += productQuantity;
  207. } else {
  208. previousValue[productId] = {
  209. product_name: productName,
  210. quantity: productQuantity,
  211. purchase_price: currentValue.querySelector('.purchasePrice').value,
  212. net_unit_price: currentValue.querySelector('.netUnitPrice').value,
  213.  
  214. }
  215. }
  216. return previousValue;
  217. }, {});
  218. let customerID = document.getElementById('customer_id').value;
  219.  
  220. let comments = document.querySelector('#comments').value;
  221. let payTerm = document.querySelector('#payTerm').value;
  222. let payType = document.querySelector('#payType');
  223. let selectedPayType = payType.options[payType.selectedIndex].value;
  224. var payload = {
  225. customerID: customerID,
  226. payTypeSend: selectedPayType,
  227. payTermSend: payTerm,
  228. comments: comments,
  229. customer_prices: customer_prices,
  230. invoice_products: invoiceProducts,
  231.  
  232. };
  233.  
  234. let token = document.querySelector('meta[name="csrf-token"]').getAttribute('content');
  235. let url = '/api/customer/invoice/update/' + invoiceId;
  236.  
  237. fetch(url, {
  238. method: "PUT",
  239. body: JSON.stringify(payload),
  240. headers: {
  241. "Content-Type": "application/json",
  242. "credentials": "same-origin",
  243. "X-CSRF-TOKEN": token
  244. }
  245. })
  246. .then(res => res.json())
  247. .then(response => console.log('Success:', JSON.stringify(response)))
  248. .then(res => window.location.href = ("/invoices/list/" + customerID))
  249. .catch(error => console.error(`Error: {error}`))
  250.  
  251.  
  252.  
  253. });
  254.  
  255.  
  256.  
  257. } else if (proForma) {
  258.  
  259. const save = document.querySelector('#sendProductsForm');
  260. save.addEventListener('submit', saveProducts);
  261.  
  262. function saveProducts(event) {
  263. event.preventDefault();
  264.  
  265. let customer_prices = [...document.querySelectorAll('#products-list tr')].reduce((previousValue, currentValue) => {
  266. const productId = currentValue.querySelector('input[type=hidden]').value;
  267. const productName = currentValue.querySelector('.product-name').value;
  268. const productSymbol = currentValue.querySelector('.product-name').value;
  269. const productQuantity = Number(currentValue.querySelector('.quantity').value);
  270.  
  271. if (previousValue.hasOwnProperty(productId)) {
  272. previousValue[productId].quantity += productQuantity;
  273. } else {
  274. previousValue[productId] = {
  275. product_name: productName,
  276. quantity: productQuantity,
  277. purchase_price: currentValue.querySelector('.purchasePrice').value,
  278. net_unit_price: currentValue.querySelector('.netUnitPrice').value,
  279.  
  280. }
  281. }
  282. return previousValue;
  283. }, {});
  284.  
  285. console.log(customer_prices);
  286.  
  287. let comments = document.querySelector('#comments').value;
  288.  
  289. let payTerm = document.querySelector('#payTerm');
  290. let selectedPayTerm = payTerm.options[payTerm.selectedIndex].value;
  291. let payType = document.querySelector('#payType');
  292. let selectedPayType = payType.options[payType.selectedIndex].value;
  293.  
  294. var payload = {
  295. payTypeSend: selectedPayType,
  296. payTermSend: selectedPayTerm,
  297. comments: comments,
  298. customer_prices: customer_prices,
  299. invoice_products: invoiceProducts,
  300.  
  301. };
  302.  
  303. let token = document.querySelector('meta[name="csrf-token"]').getAttribute('content');
  304. let url = '/api/customer/invoice/pro-forma/create/' + customerID;
  305.  
  306. fetch(url, {
  307. method: "POST",
  308. body: JSON.stringify(payload),
  309. headers: {
  310. "Content-Type": "application/json",
  311. "credentials": "same-origin",
  312. "X-CSRF-TOKEN": token
  313. }
  314. })
  315. .then(res => res.json())
  316. .then(response => console.log('Success:', JSON.stringify(response)))
  317. .then(res => window.location.href = ("/invoices/list/" + customerID))
  318. .catch(error => console.error(`Error: {error}`))
  319.  
  320. }
  321.  
  322. } else {
  323.  
  324. document.querySelector('#sendProductsForm').addEventListener('submit', function (event) {
  325. event.target.querySelector('[type = "submit"]').disabled = true;
  326.  
  327. event.preventDefault();
  328.  
  329.  
  330. let customer_prices = [...document.querySelectorAll('#products-list tr')].reduce((previousValue, currentValue) => {
  331. const productId = currentValue.querySelector('input[type=hidden]').value;
  332. const productName = currentValue.querySelector('.product-name').value;
  333. const productSymbol = currentValue.querySelector('.product-name').value;
  334. const productQuantity = Number(currentValue.querySelector('.quantity').value);
  335.  
  336. if (previousValue.hasOwnProperty(productId)) {
  337. previousValue[productId].quantity += productQuantity;
  338. } else {
  339. previousValue[productId] = {
  340. product_name: productName,
  341. quantity: productQuantity,
  342. purchase_price: currentValue.querySelector('.purchasePrice').value,
  343. net_unit_price: currentValue.querySelector('.netUnitPrice').value,
  344.  
  345. }
  346. }
  347. return previousValue;
  348. }, {});
  349.  
  350. console.log(customer_prices);
  351.  
  352. let comments = document.querySelector('#comments').value;
  353. let payTerm = document.querySelector('#payTerm');
  354. let selectedPayTerm = payTerm.options[payTerm.selectedIndex].value;
  355. let payType = document.querySelector('#payType');
  356. let selectedPayType = payType.options[payType.selectedIndex].value;
  357.  
  358. var payload = {
  359. payTypeSend: selectedPayType,
  360. payTermSend: selectedPayTerm,
  361. comments: comments,
  362. customer_prices: customer_prices,
  363. invoice_products: invoiceProducts,
  364.  
  365. };
  366.  
  367. let token = document.querySelector('meta[name="csrf-token"]').getAttribute('content');
  368. let url = '/api/customer/invoice/create/' + customerID;
  369.  
  370. fetch(url, {
  371. method: "POST",
  372. body: JSON.stringify(payload),
  373. headers: {
  374. "Content-Type": "application/json",
  375. "credentials": "same-origin",
  376. "X-CSRF-TOKEN": token
  377. }
  378. })
  379. .then(res => res.json())
  380. .then(res => {
  381. window.location.href = "/";
  382. window.open(res.url);
  383. })
  384. .catch(error => console.error(`Error: {error}`))
  385.  
  386. });
  387. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement