All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cl.transbank.pos.responses.SaleResponse Maven / Gradle / Ivy

package cl.transbank.pos.responses;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Collections;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import static cl.transbank.pos.helper.StringUtils.*;

public class SaleResponse {

    private static final Logger logger = LogManager.getLogger(SaleResponse.class);

    public static final Map map;

    static {
        //los valores deben ser INTs. Si no, se caera en el inicializador estatico.
        // _NO_ usar un 0 antes del numero porque en java eso significa un numero octal
        Object[][] codePosition = {
                {"functionCode", 0},
                {"responseCode", 1},
                {"commerceCode", 2},
                {"terminalId", 3},
                {"ticket", 4},
                {"autorizationCode", 5},
                {"amount", 6},
                {"sharesNumber", 7},
                {"sharesAmount", 8},
                {"last4Digits", 9},
                {"operationNumber", 10},
                {"cardType", 11},
                {"accountingDate", 12},
                {"accountNumber", 13},
                {"cardBrand", 14},
                {"realDate", 15},
                {"realTime", 16},
                {"employeeId", 17},
                {"tip", 18}
        };
        Map values = Stream.of(codePosition).collect(Collectors.toMap(data -> (String)data[0], data -> (Integer) data[1]));
        map = Collections.unmodifiableMap(values);
    }

    private final int functionCode;
    private final int responseCode;
    private final int commerceCode;
    private final String terminalId;
    private final String ticket;
    private final String authorizationCode;
    private final int amount;
    private final int sharesNumber;
    private final int sharesAmount;
    private final int last4Digits;
    private final int operationNumber;
    private final String cardType;
    private final LocalDate accountingDate;
    private final long accountNumber;
    private final String cardBrand;
    private final LocalDateTime realDate;
    private final int employeeId;
    private final int tip;

    @Override
    public String toString() {
        return "SaleResponse{" +
                "isSuccesful=" + isSuccessful() +
                ", functionCode=" + functionCode +
                ", responseCode=" + responseCode +
                ", commerceCode=" + commerceCode +
                ", terminalId=" + terminalId +
                ", ticket=" + ticket +
                ", autorizationCode=" + authorizationCode +
                ", amount=" + amount +
                ", sharesNumber=" + sharesNumber +
                ", sharesAmount=" + sharesAmount +
                ", last4Digits=" + last4Digits +
                ", operationNumber=" + operationNumber +
                ", cardType=" + cardType +
                ", accountingDate=" + accountingDate +
                ", accountNumber=" + accountNumber +
                ", cardBrand=" + cardBrand +
                ", realDate=" + realDate +
                ", employeeId=" + employeeId +
                ", tip=" + tip +
                " }\n";
    }

    public SaleResponse(String saledata) {
        logger.debug("SaleResponse: string: " + saledata);
        saledata = saledata.substring(1); //the first character is a space

        String[] fields = saledata.split( "\\|");
        for(int index = 0; index < fields.length; index++) {
            logger.debug("fields[ " + index + " ] = " + fields[index] );
        }
        functionCode = parseInt( fields[map.get("functionCode")] );
        responseCode = parseInt( fields[map.get("responseCode")] );
        commerceCode = parseInt( fields[map.get("commerceCode")] );
        terminalId = fields[map.get("terminalId")];
        ticket = fields[map.get("ticket")];
        authorizationCode = fields[map.get("autorizationCode")];
        amount = parseInt( fields[map.get("amount")] );
        sharesNumber = parseInt( fields[map.get("sharesNumber")] );
        sharesAmount = parseInt( fields[map.get("sharesAmount")] );
        last4Digits = parseInt( fields[map.get("last4Digits")] );
        operationNumber = parseInt( fields[map.get("operationNumber")] );
        cardType = fields[map.get("cardType")];
        accountingDate = parseLocalDate(fields[map.get("accountingDate")]);
        accountNumber = parseLong( fields[map.get("accountNumber")] );
        cardBrand = fields[map.get("cardBrand")];
        realDate = parseLocalDateTime(fields[map.get("realDate")], fields[map.get("realTime")]);
        employeeId = parseInt( fields[map.get("employeeId")] );
        tip = parseInt( fields[map.get("tip")] );
    }

    public boolean isSuccessful() {
        return responseCode == 0;
    }

    public String getResponseMessage() {
        return ResponseCodes.getMessage(this.getResponseCode());
    }

    public int getFunctionCode() {
        return functionCode;
    }

    public int getResponseCode() {
        return responseCode;
    }

    public int getCommerceCode() {
        return commerceCode;
    }

    public String getTerminalId() {
        return terminalId;
    }

    public String getTicket() {
        return ticket;
    }

    public String getAuthorizationCode() {
        return authorizationCode;
    }

    public int getAmount() {
        return amount;
    }

    public int getSharesNumber() {
        return sharesNumber;
    }

    public int getSharesAmount() {
        return sharesAmount;
    }

    public int getLast4Digits() {
        return last4Digits;
    }

    public int getOperationNumber() {
        return operationNumber;
    }

    public String getCardType() {
        return cardType;
    }

    public LocalDate getAccountingDate() {
        return accountingDate;
    }

    public long getAccountNumber() {
        return accountNumber;
    }

    public String getCardBrand() {
        return cardBrand;
    }

    public LocalDateTime getRealDate() {
        return realDate;
    }

    public int getEmployeeId() {
        return employeeId;
    }

    public int getTip() {
        return tip;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy