Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static void FixThisBrokenShit(Args _args)
- {
- FileName fileName = "C:\\incorrect_ax_captured_orders.csv";
- CommaIo csvFile;
- container readCon;
- SalesId salesId;
- Amount actuallyCaptured;
- Amount weThoughtWeCaptured;
- Amount owedCustomer;
- SalesTable salesTable;
- jsCustPaymTable custPaymTable;
- jsCCSettlementTable settlementTable;
- PSDjsCCLitleProcessor litleProcessor;
- jsCCOnlineTransResult refundResult;
- ;
- csvFile = new CommaIo(filename,'r');
- csvFile.inFieldDelimiter(',');
- if (csvFile)
- {
- readCon = csvFile.read();
- while (csvFile.status() == IO_Status::OK)
- {
- readCon = csvFile.read();
- salesId = strreplace(strreplace(conpeek(readCon, 1),"\"","")," ","");
- if (salesId != "0")
- {
- weThoughtWeCaptured = str2num(strreplace(conpeek(readCon,8),"\"",""));
- actuallyCaptured = str2num(strreplace(conpeek(readCon,9),"\"",""));
- owedCustomer = str2num(strreplace(conpeek(readCon,10),"\"",""));
- if (owedCustomer <= 0.00)
- {
- error(strfmt("%1 - Customer owes us",salesId));
- }
- // Do a refund
- else
- {
- select salesTable where salesTable.SalesId == salesId;
- select count(recId) from custPaymTable where custPaymTable.RefTableId == salesTable.TableId
- && custPaymTable.RefRecId == salesTable.RecId
- && custPaymTable.PaymMode == 'CreditCard';
- if (custPaymTable.RecId > 1)
- {
- error(strfmt("%1 has multiple payments", salesId));
- }
- else
- {
- ttsbegin;
- select forupdate custPaymTable where custPaymTable.RefTableId == salesTable.TableId
- && custPaymTable.RefRecId == salesTable.RecId
- && custPaymTable.PaymMode == 'CreditCard';
- if (custPaymTable.PostedCreditAmount == weThoughtWeCaptured)
- {
- custPaymTable.PostedCreditAmount += owedCustomer;
- }
- else
- {
- error(strfmt("%1 - PostedCreditAmount != weThoughtWeCaptured", salesId));
- }
- custPaymTable.update();
- ttscommit;
- // Process the refund
- // -- Create a new Settlement Record for the refund
- ttsbegin;
- settlementTable.SettlementType = jsCCSettlementType::Credit;
- settlementTable.Status = jsCCSettlementStatus::PendingApproval;
- settlementTable.jsCustPaymTableRecID = custPaymTable.RecId;
- settlementTable.CCProcessor = jsCCProcessor::PSDLitle;
- settlementTable.Amount = abs(custPaymTable.getUnpostedAmount());
- settlementTable.EffectiveDate = today();
- settlementTable.CCVendor = custPaymTable.CCVendor;
- settlementTable.CCNum = custPaymTable.CCNum;
- settlementTable.CCExpirationMonth = custPaymTable.CCExpirationMonth;
- settlementTable.CCExpirationYear = custPaymTable.CCExpirationYear;
- settlementTable.RefRecId = custPaymTable.RefRecId;
- settlementTable.RefTableId = custPaymTable.RefTableId;
- settlementTable.insert();
- ttscommit;
- litleProcessor = new PSDjsCCLitleProcessor();
- refundResult = litleProcessor.onlineCredit(settlementTable);
- if (refundResult == jsCCOnlineTransResult::Successful)
- {
- ttsbegin;
- settlementTable.Status = jsCCSettlementStatus::Successful;
- settlementTable.update();
- custPaymTable.PostedDebitAmount -= owedCustomer;
- custPaymTable.update();
- ttscommit;
- }
- else
- {
- ttsbegin;
- settlementTable.Status = jsCCSettlementStatus::Failed;
- settlementTable.update();
- ttscommit;
- error(strfmt("%1 - Refund attempt failed.", salesId));
- }
- }
- }
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment