Advertisement
Guest User

Untitled

a guest
Sep 15th, 2017
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.92 KB | None | 0 0
  1. module.exports.opalInventoryWF = ()=>{
  2. return new CronJob('0 33 * * * *', function() {
  3. console.log('Started Opal Inventory CronJob');
  4. const endpoint = process.env.ENDPOINT,
  5. warehouse = process.env.WAREHOUSE,
  6. user = process.env.USER,
  7. password = process.env.PASS;
  8. let itemArray = [],
  9. array = [],
  10. queryString = "redacted due to db schema exposure";
  11.  
  12. pool.getConnection((err,connection)=>{
  13. if(err){
  14. console.error(err);
  15. throw err;
  16. }
  17. console.log('querying');
  18. let query = connection.query(queryString);
  19. query.on('error',(err)=>{
  20. console.error(err);
  21. throw err;
  22. }).on('result',(row,index)=>{
  23. let sku = row.PRODUCT_ID,
  24. quantity = row.AVAILABLE_TO_PROMISE_TOTAL,
  25. disc = row.SUPPLIER_DISCONTINUATION_DATE,
  26. etd = row.ETD,
  27. osInv = row.AVAILABLE_TO_PROMISE_TOTAL,
  28. boq = row.SATP;
  29.  
  30. if(quantity >= 50){
  31. quantity = 50;
  32. }else if(quantity < 3){
  33. quantity = 0;
  34. }
  35. if(osInv < 3){
  36. osInv = 0;
  37. }
  38. if(quantity !== 0 && quantity >= 3 && !sku.includes('-606SW') && sku !== '200ACR201B-76096'){
  39. quantity = quantity - 3;
  40. }
  41.  
  42. if(osInv !== 0 && osInv >= 3 && !sku.includes('-606SW') && sku !== '200ACR201B-76096'){
  43. osInv = osInv - 3;
  44. }
  45.  
  46. if(quantity > 0){
  47. etd = '';
  48. boq = 0;
  49. }
  50. if(disc === 'TRUE' && quantity > 5){
  51. disc = false;
  52. }else if(disc === 'TRUE' && quantity < 5){
  53. disc = true;
  54. }else{
  55. disc = false;
  56. }
  57. if(quantity >= 0 && osInv >= 0 && disc === false){
  58. itemArray.push({sku,quantity,disc,etd,boq,osInv})
  59. }
  60. }).on('end',()=>{
  61. connection.release();
  62. writeArray = itemArray.slice(0),
  63. alteredArray = [];
  64. var csv = json2csv({data: writeArray,fields:fields}),
  65. timestamp = new Date(Date.now());
  66. timestamp = timestamp.getFullYear() + '-' +(timestamp.getMonth() + 1) + '-' + timestamp.getDate()+ ' '+timestamp.getHours() +':'+timestamp.getMinutes()+':'+timestamp.getSeconds();
  67. let fpath = './public/assets/archives/opalEdiInventory-'+timestamp+'.csv';
  68. fs.writeFile(fpath,csv,(err)=>{
  69. if(err){
  70. console.error('Error writing output csv: '+err);
  71. throw err;
  72. }
  73. console.log('output saved');
  74. let recipients = [redacted]
  75. send({
  76. to: recipients,
  77. subject: 'Inventory Export '+timestamp,
  78. files: [fpath]
  79. },
  80. function (err, res) {
  81. if(err){
  82. console.error('Error sending email: '+ err);
  83. throw err;
  84. }
  85. console.log('Email successfully sent response: '+res);
  86. });
  87. });
  88. console.log('Item Array Length: ' + itemArray.length);
  89. while(itemArray.length > 0){
  90. alteredArray = itemArray.splice(0,999);
  91. for(let i = 0; i < alteredArray.length; i++){
  92. jsonObjectArray.push({
  93. sku: alteredArray[i]['sku'],
  94. quantity: alteredArray[i]["quantity"],
  95. overstockquantity: alteredArray[i]["osInv"],
  96. warehouse: warehouse,
  97. isdiscontinued: alteredArray[i]["disc"],
  98. backorderdate: alteredArray[i]["etd"],
  99. backorderavailability: alteredArray[i]["boq"]
  100. });
  101. }
  102.  
  103. var jsonObject = {
  104. login: user,
  105. password: password,
  106. items: jsonObjectArray
  107. };
  108.  
  109. postOptions.url = endpoint;
  110. postOptions.body = JSON.stringify(jsonObject);
  111. funcArray.push({func:function(postOptions){request(postOptions,(err,res,body)=>{if(err){console.error(err);throw err;}console.log(body);})},vars:postOptions});
  112. jsonObjectArray.length = 0;
  113. }
  114. var mili = 180000;
  115. for(let i = 0;i < funcArray.length; i++){
  116. setTimeout(()=>{
  117. var d = JSON.parse(funcArray[i]['vars'].body);
  118. console.log(d);
  119. console.log('request '+ i);
  120. //funcArray[i]['func'](funcArray[i]['vars']);
  121. }, mili * i);
  122. }
  123. });
  124. });
  125. }, null, true, 'America/Los_Angeles');
  126. }
  127.  
  128. while(itemArray.length > 0){
  129. alteredArray = itemArray.splice(0,999);
  130. for(let i = 0; i < alteredArray.length; i++){
  131. jsonObjectArray.push({
  132. sku: alteredArray[i]['sku'],
  133. quantity: alteredArray[i]["quantity"],
  134. overstockquantity: alteredArray[i]["osInv"],
  135. warehouse: warehouse,
  136. isdiscontinued: alteredArray[i]["disc"],
  137. backorderdate: alteredArray[i]["etd"],
  138. backorderavailability: alteredArray[i]["boq"]
  139. });
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement