Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import com.atlassian.jira.component.ComponentAccessor;
- import com.atlassian.jira.issue.Issue;
- import com.atlassian.jira.issue.CustomFieldManager;
- import com.atlassian.jira.issue.IssueManager;
- import com.atlassian.jira.issue.fields.CustomField;
- import com.atlassian.jira.issue.fields.FieldManager;
- import org.apache.commons.lang.WordUtils;
- import javax.xml.parsers.DocumentBuilderFactory;
- import javax.xml.parsers.DocumentBuilder;
- import org.xml.sax.InputSource;
- import org.w3c.dom.Document;
- import org.apache.commons.io.IOUtils;
- import org.apache.commons.lang.StringUtils;
- import com.atlassian.jira.bc.issue.IssueService;
- import com.atlassian.jira.issue.IssueInputParameters;
- import com.atlassian.crowd.embedded.api.User;
- import com.atlassian.jira.issue.util.IssueChangeHolder
- import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
- import com.atlassian.jira.issue.ModifiedValue
- IssueManager issueManager = ComponentAccessor.getIssueManager();
- Issue issue = issueManager.getIssueByKeyIgnoreCase("WORK-57876");
- CustomFieldManager customFieldManager = ComponentAccessor.getCustomFieldManager();
- CustomField transIdField = customFieldManager.getCustomFieldObjectByName("Transaction ID (NMI Only)");
- CustomField refNumField = customFieldManager.getCustomFieldObjectByName("Reference # (ACH Only)");
- CustomField nmiChargeTotal = customFieldManager.getCustomFieldObject("customfield_12904")
- CustomField info = customFieldManager.getCustomFieldObject("customfield_12903")
- CustomField npsTotal = customFieldManager.getCustomFieldObject("customfield_15000")
- CustomField npsInfo = customFieldManager.getCustomFieldObject("customfield_14402")
- CustomField customerName = customFieldManager.getCustomFieldObjectByName("Customer Name");
- //CustomField customerEmail = customFieldManager.getCustomFieldObjectByName("Customer Email");
- String nmiInfo = "";
- String achInfo = "";
- Double total = 0;
- Double nmiTotal = 0;
- Double achTotal = 0;
- //loop through all transaction IDs here
- String transId = (String)issue.getCustomFieldValue(transIdField);
- transId = transId?.trim()
- //log.error("Custy name: " + customerName)
- //log.error("Transaction ID: " + transId);
- String refNum = (String)issue.getCustomFieldValue(refNumField);
- refNum = refNum?.trim()
- //log.error("Reference #: " + refNum);
- if(refNum!=null ){ //&& 'ACH' in cfValues['Payment Method']*.value
- List<String> transactions = Arrays.asList(refNum.split("\\s*,\\s*"));
- log.error("transactions: " + transactions)
- for (String transaction : transactions){
- def urlString = "https://www.edebitdirect.com/app/api/v1/check"
- def queryString = "reference_number=" + transaction
- //log.error("queryString: " + queryString)
- def json = ("https://www.edebitdirect.com/app/api/v1/check?reference_number=" + transaction).toURL().getText(requestProperties: [Authorization: "apikey 587GQRA2U:cabf4743de4c81de138a79751fb3d67239ade3a9"])
- //log.error("json: " + json)
- achInfo += "Reference Number: " + StringUtils.substringBetween(json, 'reference_number": "', '",') + "\n";
- achInfo += "Customer name: " + StringUtils.substringBetween(json, 'customer_name": "', '",') + "\n";
- achInfo += "Date/Time Processed: " + StringUtils.substringBetween(json, 'created_date": "', '",') + "\n";
- achInfo += "Amount: " + StringUtils.substringBetween(json, 'amount": ', ',') + "\n";
- achInfo += "Memo: " + StringUtils.substringBetween(json, 'memo": "', '",') + "\n";
- achInfo += "\n";
- //log.error("achInfo: " + achInfo);
- if(StringUtils.substringBetween(json, 'amount": ', ',')!=null){
- achTotal += StringUtils.substringBetween(json, 'amount": ', ',').toDouble();
- }
- //log.error("achTotal: " + achTotal)
- }
- }
- if(refNum!=null ){ //&& 'ACH' in cfValues['Payment Method']*.value
- CustomField xmlResponseField = customFieldManager.getCustomFieldObjectByName("ACH Transaction Information");
- IssueService issueService = ComponentAccessor.getIssueService();
- //User user = ComponentAccessor.getJiraAuthenticationContext().getUser().getDirectoryUser();
- def user = ComponentAccessor.getJiraAuthenticationContext().getUser();
- //log.error("user: " + user);
- IssueInputParameters issueInputParameters = issueService.newIssueInputParameters();
- issueInputParameters.addCustomFieldValue("customfield_12907", achTotal.toString() ); //ACH Charge Total
- issueInputParameters.addCustomFieldValue("customfield_12906", achInfo ); //ACH Transaction INformaiton
- issueInputParameters.setSkipScreenCheck(true) ;
- IssueService.UpdateValidationResult updateValidationResult = issueService.validateUpdate( user, issue.getId(), issueInputParameters );
- //log.error("updateValidationResult: " + updateValidationResult);
- if (!updateValidationResult.isValid()) {
- log.error( updateValidationResult.getErrorCollection().getErrorMessages().toString() );
- }
- IssueService.IssueResult updateResult = issueService.update( user, updateValidationResult );
- if (!updateResult.isValid()) {
- log.error( updateValidationResult.getErrorCollection().getErrorMessages().toString() );
- }
- }
- if(transId!=null ){ // && 'NMI' in cfValues['Payment Method']*.value
- List<String> transactions = Arrays.asList(transId.split("\\s*,\\s*"));
- //log.error("transactions: " + transactions)
- for (String transaction : transactions){
- def urlString = "https://secure.nmi.com/api/query.php"
- def queryString = "username=JIRA&password=Salesteamjira1&transaction_id=" + transaction
- //log.error("queryString: " + queryString)
- def url = new URL(urlString)
- def connection = url.openConnection()
- connection.setRequestMethod("GET")
- connection.doOutput = true
- def writer = new OutputStreamWriter(connection.outputStream)
- writer.write(queryString)
- writer.flush()
- writer.close()
- connection.connect()
- def response = connection.content.text
- //log.error(response)
- nmiInfo += "Processor ID: " + StringUtils.substringBetween(response, "<processor_id>", "</processor_id>") + "\n";
- nmiInfo += "Transaction ID: " + StringUtils.substringBetween(response, "<transaction_id>", "</transaction_id>") + "\n";
- nmiInfo += "Agent: " + StringUtils.substringBetween(response, "<merchant_defined_field id=\"1\">", "</merchant_defined_field>") + "\n";
- nmiInfo += "Item: " + StringUtils.substringBetween(response, "<merchant_defined_field id=\"2\">", "</merchant_defined_field>") + "\n";
- nmiInfo += "First Name: " + StringUtils.substringBetween(response, "<first_name>", "</first_name>") + "\n";
- nmiInfo += "Last Name: " + StringUtils.substringBetween(response, "<last_name>", "</last_name>") + "\n";
- nmiInfo += "Email: " + StringUtils.substringBetween(response, "<email>", "</email>") + "\n";
- nmiInfo += "Phone: " + StringUtils.substringBetween(response, "<phone>", "</phone>") + "\n";
- nmiInfo += "Customer ID: " + StringUtils.substringBetween(response, "<customerid>", "</customerid>") + "\n";
- nmiInfo += "Amount: " + StringUtils.substringBetween(response, "<amount>", "</amount>") + "\n";
- nmiInfo += "Action Type: " + StringUtils.substringBetween(response, "<action_type>", "</action_type>") + "\n";
- nmiInfo += "Date: " + StringUtils.substringBetween(response, "<date>", "</date>") + "\n";
- nmiInfo += "Response Text: " + StringUtils.substringBetween(response, "<response_text>", "</response_text>") + "\n";
- nmiInfo += "Success: " + StringUtils.substringBetween(response, "<success>", "</success>") + "\n";
- nmiInfo += "\n"
- String responsetext = StringUtils.substringBetween(response, "<response_text>", "</response_text>")
- //log.error("nmiInfo: " + nmiInfo)
- if(StringUtils.substringBetween(response, "<amount>", "</amount>") !=null && responsetext!="Issuer Declined"){
- nmiTotal += StringUtils.substringBetween(response, "<amount>", "</amount>").toDouble();
- }
- //log.error("nmiTotal: " + nmiTotal)
- }
- }
- //return nmiTotal
- IssueChangeHolder changeHolder = new DefaultIssueChangeHolder();
- //issue.setCustomFieldvalue(nmiChargeTotal)
- nmiChargeTotal.updateValue(null, issue, new ModifiedValue(null, nmiTotal), changeHolder)
- IssueChangeHolder changeHolder2 = new DefaultIssueChangeHolder();
- //issue.setCustomFieldvalue(info, nmiInfo)
- info.updateValue(null, issue, new ModifiedValue(null, nmiInfo), changeHolder2)
- IssueChangeHolder changeHolder3 = new DefaultIssueChangeHolder();
- npsTotal.updateValue(null, issue, new ModifiedValue(null, null), changeHolder3)
- IssueChangeHolder changeHolder4 = new DefaultIssueChangeHolder();
- npsInfo.updateValue(null, issue, new ModifiedValue(null, null), changeHolder4)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement