Untitled
unknown
plain_text
2 years ago
17 kB
14
Indexable
package com.dwidasa.engine.service.impl.view;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.dwidasa.engine.dao.TransactionDao;
import com.dwidasa.engine.model.Teller;
import com.dwidasa.engine.model.Transaction;
import com.dwidasa.engine.model.view.BaseView;
import com.dwidasa.engine.model.view.KeyValueView;
import com.dwidasa.engine.model.view.MpnPaymentView;
import com.dwidasa.engine.service.CacheManager;
import com.dwidasa.engine.service.TellerService;
import com.dwidasa.engine.service.view.MessageCustomizer;
import com.dwidasa.engine.service.view.MpnPaymentViewService;
import com.dwidasa.engine.util.RandomGenerator;
@Service("mpnPaymentViewService")
public class MpnPaymentViewServiceImpl extends PaymentViewServiceImpl implements MpnPaymentViewService {
@Autowired
private CacheManager cacheManager;
@Autowired
private TransactionDao transactionDao;
@Autowired
protected TellerService tellerService;
public MpnPaymentViewServiceImpl() {
super();
setInquiryMessageCustomizer(new InquiryMessageCustomizer());
setTransactionMessageCustomizer(new TransactionMessageCustomizer());
setTransactionTimeoutMessageCustomizer(new TransactionTimeoutMessageCustomizer());
}
@Override
public void composeReprint(BaseView view, Transaction transaction,
Transaction ot) {
MpnPaymentView tv = (MpnPaymentView) view;
transaction.setFreeData1(tv.getBit48());
transaction.setFreeData5(tv.getCustomerReference());
if (tv.getBit120() == null) {
tv.setBit120("");
}
transaction.setFreeData4("BILLER.MPN2.REINQ");
transaction.setFreeData2(tv.getBit120());//bit 120 dipakai untuk kirim user teller
transaction.setValueDate(tv.getSettlementDate());
transaction.setStan(new BigDecimal(tv.getStan()));
transaction.setReferenceNumber(tv.getReferenceNumber());
transaction.setFreeData6(tv.getBit63());
transaction.setFreeData7(tv.getNamaBranch());
transaction.setTglBit12(tv.getTransactionDate());
}
@Override
public Boolean decomposeReprint(BaseView view, Transaction transaction) {
MpnPaymentView tv = (MpnPaymentView) view;
getInquiryMessageCustomizer().decompose(view, transaction);
String bit48 = transaction.getFreeData1();
if (tv.getCustomerReference().startsWith("0") || tv.getCustomerReference().startsWith("1") ||
tv.getCustomerReference().startsWith("2") || tv.getCustomerReference().startsWith("3")) { //DJP
int bit48Length = bit48.length();
tv.setNtpn(bit48.substring(241, bit48Length).trim());
} else if (tv.getCustomerReference().startsWith("4") || tv.getCustomerReference().startsWith("5") ||
tv.getCustomerReference().startsWith("6")) { //DJBC
tv.setNtpn(bit48.substring(118,134).trim());
} else if (tv.getCustomerReference().startsWith("7") || tv.getCustomerReference().startsWith("8") ||
tv.getCustomerReference().startsWith("9")) { //DJA
tv.setNtpn(bit48.substring(61,77).trim());
}
tv.setStan(transaction.getStan().toString());
tv.setResponseCode(transaction.getResponseCode());
tv.setReferenceNumber(transaction.getReferenceNumber());
transaction.setApprovalNumber(tv.getNtpn());
return Boolean.TRUE;
}
private class InquiryMessageCustomizer implements MessageCustomizer {
private InquiryMessageCustomizer() {
}
public void compose(BaseView view, Transaction transaction) {
MpnPaymentView tv = (MpnPaymentView) view;
transaction.setFreeData5(tv.getCustomerReference());
if (tv.getBit120() == null) {
tv.setBit120("");
}
transaction.setFreeData2(tv.getBit120());//bit 120 dipakai untuk kirim user teller
transaction.setFreeData4("BILLER.MPN2.INQ");
if (tv.getBit56().equals("BILLER.MPN2.REINQ")) transaction.setFreeData4("BILLER.MPN2.REINQ");
//save settlement date
String cutOffMpn = cacheManager.getParameterValue("MPN_CUT_OFF");
int hh = Integer.parseInt(cutOffMpn.substring(0, cutOffMpn.indexOf(":")));
int mm = Integer.parseInt(cutOffMpn.substring(cutOffMpn.indexOf(":") + 1));
DateTime cutOff = new DateTime().withTime(hh, mm, 0, 0);
DateTime tanggalBuku = new DateTime().withTime(0, 0, 0, 0);
Calendar calendar = Calendar.getInstance();
//hari senin-jumat
String[] strDays = new String[]{
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thusday",
"Friday",
"Saturday"
};
//Day_OF_WEEK starts from 1 while array index starts from 0
System.out.println("Current day is : " +strDays[calendar.get(Calendar.DAY_OF_WEEK) - 1]);
System.out.println("current cut off is : "+cutOff.toDate());
if (transaction.getTransactionDate().after(cutOff.toDate())) {
if(strDays[calendar.get(Calendar.DAY_OF_WEEK) - 1].equals("Friday")){
tanggalBuku = tanggalBuku.plusDays(3);
}
else
if(strDays[calendar.get(Calendar.DAY_OF_WEEK) - 1].equals("Saturday")){
tanggalBuku = tanggalBuku.plusDays(2);
}
else{
tanggalBuku = tanggalBuku.plusDays(1);
}
}
tv.setSettlementDate(tanggalBuku.toDate());
transaction.setValueDate(tanggalBuku.toDate());
transaction.setFreeData6(tv.getKodeBranch());
transaction.setFreeData7(tv.getNamaBranch());
System.out.println("ini tes coba accountType = "+tv.getAccountType());
if(tv.getAccountType().equals("10")) {
transaction.setMerchantType("7012");//pembayaran mpn cash
}else if(tv.getAccountType().equals("40")) {
transaction.setMerchantType("7016");//pembayaran mpn overbook
}
String referenceNumber = RandomGenerator.generateRrnMpn(12);
transaction.setReferenceNumber(referenceNumber);
// tv.setReferenceNumber(referenceNumber);
System.out.println("refNumber : "+transaction.getReferenceNumber());
}
public Boolean decompose(Object view, Transaction transaction) {
MpnPaymentView tv = (MpnPaymentView) view;
String bit48 = transaction.getFreeData1();
tv.setBit48(bit48);
tv.setAmount(transaction.getTransactionAmount());
List<KeyValueView> inquiryList = new ArrayList<KeyValueView>();
tv.setInquiryList(inquiryList);
if (tv.getCustomerReference().startsWith("0") || tv.getCustomerReference().startsWith("1") ||
tv.getCustomerReference().startsWith("2") || tv.getCustomerReference().startsWith("3")) { //DJP
inquiryList.add(new KeyValueView("npwp", bit48.substring(0,16).trim()));
inquiryList.add(new KeyValueView("namaWajibPajak", bit48.substring(16,141).trim()));
inquiryList.add(new KeyValueView("alamatWajibPajak", bit48.substring(141,191).trim()));
inquiryList.add(new KeyValueView("jumlahDetail", bit48.substring(191,193).trim()));
// inquiryList.add(new KeyValueView("kodeJenisSetoran", bit48.substring(121,124).trim()));
// inquiryList.add(new KeyValueView("masaPajak", bit48.substring(124,132).trim()));
// inquiryList.add(new KeyValueView("nomorSk", bit48.substring(132,147).trim()));
// inquiryList.add(new KeyValueView("nop", bit48.substring(147,165).trim()));
} else if (tv.getCustomerReference().startsWith("4") || tv.getCustomerReference().startsWith("5") ||
tv.getCustomerReference().startsWith("6")) { //DJBC
inquiryList.add(new KeyValueView("namaWajibBayar", bit48.substring(0,50).trim()));
inquiryList.add(new KeyValueView("idWajibBayar", bit48.substring(50,70).trim()));
inquiryList.add(new KeyValueView("jenisDokumen", bit48.substring(70,72).trim()));
inquiryList.add(new KeyValueView("nomorDokumen", bit48.substring(72,102).trim()));
inquiryList.add(new KeyValueView("tanggalDokumen", bit48.substring(102,112).trim()));
inquiryList.add(new KeyValueView("kodeKppbc", bit48.substring(112,118).trim()));
} else if (tv.getCustomerReference().startsWith("7") || tv.getCustomerReference().startsWith("8") ||
tv.getCustomerReference().startsWith("9")) { //DJA
inquiryList.add(new KeyValueView("namaWajibBayar", bit48.substring(0,50).trim()));
inquiryList.add(new KeyValueView("kl", bit48.substring(50,53).trim()));
inquiryList.add(new KeyValueView("unitEselonI", bit48.substring(53,55).trim()));
inquiryList.add(new KeyValueView("kodeSatker", bit48.substring(55,61).trim()));
}
tv.setTotal(tv.getAmount().add(tv.getFee()));
//tv.setKodeBranch(transaction.getFreeData6());
tv.setReferenceNumber(transaction.getReferenceNumber());
System.out.println("refNumber dec:"+tv.getReferenceNumber());
return Boolean.TRUE;
}
}
private class TransactionMessageCustomizer implements MessageCustomizer {
private TransactionMessageCustomizer() {
}
public void compose(BaseView view, Transaction transaction) {
MpnPaymentView tv = (MpnPaymentView) view;
transaction.setFreeData1(tv.getBit48());
transaction.setFreeData5(tv.getCustomerReference());
transaction.setTransactionAmount(tv.getTotal());//set amount di bit4
transaction.setTransactionAmountBit5(tv.getTotal());//set amount di bit5
if (tv.getBit120() == null) {
tv.setBit120("");
}
System.out.print("++++++++++++++++++++++++++ "+ tv.getUserTeller() +" +++++++++++++++++++++++++\n");
Teller teller = tellerService.get(tv.getUserTeller());
transaction.setFreeData1(tv.getBit48());
// transaction.setFreeData2(tv.getBit120());//bit 120 dipakai untuk kirim user teller
transaction.setFreeData2(StringUtils.rightPad(teller.getUsername(), 10) + StringUtils.rightPad(teller.getPassword(), 15)+ StringUtils.rightPad(teller.getBranchCode(), 11));
transaction.setFreeData4("BILLER.MPN2.POS");
//save settlement date
String cutOffMpn = cacheManager.getParameterValue("MPN_CUT_OFF");
int hh = Integer.parseInt(cutOffMpn.substring(0, cutOffMpn.indexOf(":")));
int mm = Integer.parseInt(cutOffMpn.substring(cutOffMpn.indexOf(":") + 1));
DateTime cutOff = new DateTime().withTime(hh, mm, 0, 0);
DateTime tanggalBuku = new DateTime().withTime(0, 0, 0, 0);
Calendar calendar = Calendar.getInstance();
//hari senin-jumat
String[] strDays = new String[]{
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thusday",
"Friday",
"Saturday"
};
//Day_OF_WEEK starts from 1 while array index starts from 0
System.out.println("Current day is : " +strDays[calendar.get(Calendar.DAY_OF_WEEK) - 1]);
if (transaction.getTransactionDate().after(cutOff.toDate())) {
if(strDays[calendar.get(Calendar.DAY_OF_WEEK) - 1].equals("Friday")){
tanggalBuku = tanggalBuku.plusDays(3);
}
else
if(strDays[calendar.get(Calendar.DAY_OF_WEEK) - 1].equals("Saturday")){
tanggalBuku = tanggalBuku.plusDays(2);
}
else{
tanggalBuku = tanggalBuku.plusDays(1);
}
}
tv.setSettlementDate(tanggalBuku.toDate());
transaction.setValueDate(tanggalBuku.toDate());
transaction.setFreeData6(tv.getKodeBranch());
transaction.setFreeData7(tv.getNamaBranch());
if(tv.getAccountType().equals("10")) {//pembayaran mpn cash
transaction.setMerchantType("7012");
}else if(tv.getAccountType().equals("40")) {//pembayaran mpn overbook
transaction.setMerchantType("7016");
}
String referenceNumber = RandomGenerator.generateRrnMpn(12);
transaction.setReferenceNumber(referenceNumber);
tv.setReferenceNumber(referenceNumber);
}
public Boolean decompose(Object view, Transaction transaction) {
MpnPaymentView tv = (MpnPaymentView) view;
getInquiryMessageCustomizer().decompose(view, transaction);
String bit48 = transaction.getFreeData1();
//String bit63 = transaction.getFreeData6();
if (tv.getCustomerReference().startsWith("0") || tv.getCustomerReference().startsWith("1") ||
tv.getCustomerReference().startsWith("2") || tv.getCustomerReference().startsWith("3")) { //DJP
int bit48Length = bit48.length();
tv.setNtpn(bit48.substring(241, bit48Length).trim());
} else if (tv.getCustomerReference().startsWith("4") || tv.getCustomerReference().startsWith("5") ||
tv.getCustomerReference().startsWith("6")) { //DJBC
tv.setNtpn(bit48.substring(118,134).trim());
} else if (tv.getCustomerReference().startsWith("7") || tv.getCustomerReference().startsWith("8") ||
tv.getCustomerReference().startsWith("9")) { //DJA
tv.setNtpn(bit48.substring(61,77).trim());
}
tv.setStan(transaction.getStan().toString());
tv.setResponseCode(transaction.getResponseCode());
tv.setReferenceNumber(transaction.getReferenceNumber());
tv.setNoArsipCore(transaction.getFreeData4());
//tv.setKodeBranch(bit63.toString().trim());
//save settlement date
// String cutOffMpn = cacheManager.getParameterValue("MPN_CUT_OFF");
// int hh = Integer.parseInt(cutOffMpn.substring(0, cutOffMpn.indexOf(":")));
// int mm = Integer.parseInt(cutOffMpn.substring(cutOffMpn.indexOf(":") + 1));
// DateTime cutOff = new DateTime().withTime(hh, mm, 0, 0);
// DateTime tanggalBuku = new DateTime().withTime(0, 0, 0, 0);
// if (transaction.getTransactionDate().after(cutOff.toDate())) {
// tanggalBuku = tanggalBuku.plusDays(1);
// }
// tv.setSettlementDate(tanggalBuku.toDate());
// transaction.setValueDate(tanggalBuku.toDate());
// transaction.setApprovalNumber(tv.getNtpn());
tv.setSettlementDate(transaction.getValueDate());
transaction.setApprovalNumber(tv.getNtpn());
return Boolean.TRUE;
}
}
private class TransactionTimeoutMessageCustomizer implements MessageCustomizer {
@Override
public void compose(BaseView view, Transaction transaction) {
// TODO Auto-generated method stub
}
@Override
public Boolean decompose(Object view, Transaction transaction) {
MpnPaymentView tv = (MpnPaymentView) view;
tv.setStan(transaction.getStan().toString());
tv.setNoArsipCore(transaction.getFreeData4());
return null;
}
}
}
Editor is loading...