Guest User

Untitled

a guest
Jun 23rd, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.22 KB | None | 0 0
  1. static void FixThisBrokenShit(Args _args)
  2. {
  3. FileName fileName = "C:\\incorrect_ax_captured_orders.csv";
  4. CommaIo csvFile;
  5. container readCon;
  6. SalesId salesId;
  7. Amount actuallyCaptured;
  8. Amount weThoughtWeCaptured;
  9. Amount owedCustomer;
  10. SalesTable salesTable;
  11. jsCustPaymTable custPaymTable;
  12. jsCCSettlementTable settlementTable;
  13. PSDjsCCLitleProcessor litleProcessor;
  14. jsCCOnlineTransResult refundResult;
  15. ;
  16. csvFile = new CommaIo(filename,'r');
  17. csvFile.inFieldDelimiter(',');
  18.  
  19. if (csvFile)
  20. {
  21. readCon = csvFile.read();
  22. while (csvFile.status() == IO_Status::OK)
  23. {
  24. readCon = csvFile.read();
  25. salesId = strreplace(strreplace(conpeek(readCon, 1),"\"","")," ","");
  26. if (salesId != "0")
  27. {
  28. weThoughtWeCaptured = str2num(strreplace(conpeek(readCon,8),"\"",""));
  29. actuallyCaptured = str2num(strreplace(conpeek(readCon,9),"\"",""));
  30. owedCustomer = str2num(strreplace(conpeek(readCon,10),"\"",""));
  31.  
  32. if (owedCustomer <= 0.00)
  33. {
  34. error(strfmt("%1 - Customer owes us",salesId));
  35. }
  36. // Do a refund
  37. else
  38. {
  39. select salesTable where salesTable.SalesId == salesId;
  40. select count(recId) from custPaymTable where custPaymTable.RefTableId == salesTable.TableId
  41. && custPaymTable.RefRecId == salesTable.RecId
  42. && custPaymTable.PaymMode == 'CreditCard';
  43.  
  44. if (custPaymTable.RecId > 1)
  45. {
  46. error(strfmt("%1 has multiple payments", salesId));
  47. }
  48. else
  49. {
  50. ttsbegin;
  51. select forupdate custPaymTable where custPaymTable.RefTableId == salesTable.TableId
  52. && custPaymTable.RefRecId == salesTable.RecId
  53. && custPaymTable.PaymMode == 'CreditCard';
  54.  
  55. if (custPaymTable.PostedCreditAmount == weThoughtWeCaptured)
  56. {
  57. custPaymTable.PostedCreditAmount += owedCustomer;
  58. }
  59. else
  60. {
  61. error(strfmt("%1 - PostedCreditAmount != weThoughtWeCaptured", salesId));
  62. }
  63. custPaymTable.update();
  64.  
  65. ttscommit;
  66.  
  67. // Process the refund
  68. // -- Create a new Settlement Record for the refund
  69. ttsbegin;
  70. settlementTable.SettlementType = jsCCSettlementType::Credit;
  71. settlementTable.Status = jsCCSettlementStatus::PendingApproval;
  72. settlementTable.jsCustPaymTableRecID = custPaymTable.RecId;
  73. settlementTable.CCProcessor = jsCCProcessor::PSDLitle;
  74. settlementTable.Amount = abs(custPaymTable.getUnpostedAmount());
  75. settlementTable.EffectiveDate = today();
  76. settlementTable.CCVendor = custPaymTable.CCVendor;
  77. settlementTable.CCNum = custPaymTable.CCNum;
  78. settlementTable.CCExpirationMonth = custPaymTable.CCExpirationMonth;
  79. settlementTable.CCExpirationYear = custPaymTable.CCExpirationYear;
  80. settlementTable.RefRecId = custPaymTable.RefRecId;
  81. settlementTable.RefTableId = custPaymTable.RefTableId;
  82. settlementTable.insert();
  83. ttscommit;
  84.  
  85. litleProcessor = new PSDjsCCLitleProcessor();
  86. refundResult = litleProcessor.onlineCredit(settlementTable);
  87.  
  88. if (refundResult == jsCCOnlineTransResult::Successful)
  89. {
  90. ttsbegin;
  91. settlementTable.Status = jsCCSettlementStatus::Successful;
  92. settlementTable.update();
  93.  
  94. custPaymTable.PostedDebitAmount -= owedCustomer;
  95. custPaymTable.update();
  96. ttscommit;
  97. }
  98. else
  99. {
  100. ttsbegin;
  101. settlementTable.Status = jsCCSettlementStatus::Failed;
  102. settlementTable.update();
  103. ttscommit;
  104. error(strfmt("%1 - Refund attempt failed.", salesId));
  105. }
  106. }
  107. }
  108. }
  109. }
  110. }
  111.  
  112. }
Add Comment
Please, Sign In to add comment