/* * Created on Jan 13, 2005 * */ package is.idega.block.finance.business.li; import is.idega.block.finance.business.li.claims.Krafa; import is.idega.block.finance.business.li.claims.Krofur; import is.idega.block.finance.business.li.claims.LI_Innheimta_fyrirspurn_krofur; import is.idega.block.finance.business.li.claims.LI_Innheimta_fyrirspurn_krofur_svar; import is.idega.block.finance.business.li.claims.LI_Innheimta_krofur_stofna; import is.idega.block.finance.business.li.claims.Upphaed; import is.idega.block.finance.business.li.claims_delete.LI_Innheimta_krofur_eyda; import is.idega.block.finance.business.li.sign_in.LI_Innskra; import is.idega.block.finance.business.li.sign_in_answer.LIInnskraSvar; import is.idega.block.finance.business.li.sign_out.LIUtskra; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.math.BigDecimal; import java.util.Calendar; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.InputStreamRequestEntity; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.params.HttpMethodParams; import org.exolab.castor.types.Date; import org.exolab.castor.xml.MarshalException; import org.exolab.castor.xml.ValidationException; import com.idega.block.finance.business.BankFileManager; import com.idega.block.finance.business.BankInvoiceFileManager; import com.idega.block.finance.business.InvoiceDataInsert; import com.idega.block.finance.data.BankInfo; /** * @author birna * */ public class LIDataInsert /* extends Window */implements InvoiceDataInsert { private static String POST_METHOD = "https://b2b.fbl.is/lib2b.dll?processXML"; private static String SIGN_IN_SCHEMA = "https://b2b.fbl.is/schema/LI_Innskra.xsd"; private static String SIGN_OUT_SCHEMA = "https://b2b.fbl.is/schema/LIUtskra.xsd"; private static String CREATE_CLAIMS_SCHEMA = "https://b2b.fbl.is/schema/LI_Innheimta_krofur_stofna.xsd"; private static String GET_UPDATED_CLAIMS_SCHEMA = "https://b2b.fbl.is/schema/LI_Innheimta_fyrirspurn_krofur.xsd"; private static String DELETE_CLAIM_SCHEMA = "https://b2b.fbl.is/schema/LI_Innheimta_krofur_eyda.xsd"; private static String SIGN_IN = "iw_cache/signin.xml"; private static String CREATE_CLAIMS = "iw_cache/claims.xml"; private static String UPDATED_CLAIMS = "iw_cache/updclaims.xml"; private static String DELETE_CLAIM = "iw_cache/delclaim.xml"; private static String SIGN_OUT = "iw_cache/signout.xml"; private String emptyString = new String(); private String zeroString = new String(); public void createClaimsInBank(int batchNumber, BankInfo info) { BankFileManager bfm = new BankInvoiceFileManager(info); createClaimsInBank(batchNumber, bfm); } public void createClaimsInBank(int batchNumber, int groupId) { BankFileManager bfm = new BankInvoiceFileManager(groupId); createClaimsInBank(batchNumber, bfm); } private void createClaimsInBank(int batchNumber, BankFileManager bfm) { for (int i = 0; i < 200; i++) { emptyString += " "; zeroString += "0"; } Integer[] krofuNumer = bfm.getInvoiceNumbers(batchNumber); /* Integer[] krofuNumer = new Integer[2]; krofuNumer[0] = new Integer(1); krofuNumer[1] = new Integer(2);*/ LI_Innheimta_krofur_stofna stofnaKrofur = new LI_Innheimta_krofur_stofna(); Krofur krofur = new Krofur(); for (int i = 0; i < krofuNumer.length; i++) { int number = krofuNumer[i].intValue(); String numberString = String.valueOf(number); if (numberString.length() < 6) numberString = zeroString.substring(0, 6 - numberString .length()) + numberString; String batchString = String.valueOf(batchNumber); if (batchString.length() < 16) batchString = batchString + zeroString.substring(0, 16 - batchString.length()); Krafa krafa = new Krafa(); krafa.setKt_krofuhafa(bfm.getClaimantSSN());// "7101002090"); krafa.setBanki(bfm.getBankBranchNumber());// "0132"); krafa.setHofudbok(String.valueOf(bfm.getAccountBook()));// "66"); krafa.setNumer(numberString); krafa.setGjalddagi(new Date(bfm.getDueDate(number).getTime())); krafa.setKt_greidanda(bfm.getPayersSSN(number)); Calendar nidurfellingardagur = Calendar.getInstance();// bfm.getDueDate(number); nidurfellingardagur.add(Calendar.YEAR, 4); krafa .setNidurfellingardagur(new Date(nidurfellingardagur .getTime())); krafa.setAudkenni(bfm.getClaimantsAccountId());// "037"); Upphaed upphaed = new Upphaed(); // upphaed.setContent(new BigDecimal(100));// bfm.getAmount(number))); upphaed.setContent(BigDecimal.valueOf(Long.parseLong(bfm.getAmount(number)))); krafa.setUpphaed(upphaed); krafa.setTilvisunarnumer(batchString); // krafa.setEindagi(new Date(Calendar.getInstance().getTime()));// bfm.getFinalDueDate(number).getTime())); krafa.setEindagi(new Date(bfm.getFinalDueDate(number).getTime())); krafa.setAnnar_kostnadur(0); /* Fields not needed... */ /* * krafa.setSedilnumer("1234567");//bfm.getNoteNumber(number)); * krafa.setVidskiptanumer("6210779029");//bfm.getPayersSSN(number)); * krafa.setTilkynningar_og_greidslugjald_1(100);//(int)bfm.getNotificationAndPaymentFee1(number)); * krafa.setTilkynningar_og_greidslugjald_2(100);//(int)bfm.getNotificationAndPaymentFee2(number)); * krafa.setAnnar_kostnadur(100);//(int)bfm.getOtherCost(number)); * krafa.setAnnar_vanskila_kostnadur(100);//Integer.valueOf(bfm.getOtherOverdueCost(number)).intValue()); * //LI_IK_innborgunarregla_type.VALUE_1 is: "ekki ma greida inn a * krofu" (deposit on invoice not allowed) * krafa.setInnborgunarregla(LI_IK_innborgunarregla_type.VALUE_1);//bfm.getPaymentCode(number)); * //LI_IK_greidsluregla_type.VALUE_0 is: "ma greida eldri * gjalddaga" (payment allowed for older invoices) * krafa.setGreidsluregla(LI_IK_greidsluregla_type.VALUE_0);//bfm.getPaymentCode(number)); * Vanskilagjald vanskilagjald = new Vanskilagjald(); * vanskilagjald.setVidmidun(LI_IK_vidmidun_dags_type.EINDAGI); * vanskilagjald.setTegund_vanskilagjalds(LI_IK_tegund_afslattar_og_vanskilagjalds_type.VALUE_0); * krafa.setVanskilagjald(vanskilagjald); Drattarvextir * drattarvextir = new Drattarvextir(); drattarvextir.setProsent(new * BigDecimal(10));//bfm.getPenalIntrestProsent(number))); * //LI_IK_vaxtastofnkodi_type.VALUE_0 is: "upphaed" (amount) * drattarvextir.setVaxtastofn(LI_IK_vaxtastofnkodi_type.VALUE_0); * //ReglaType.VALUE_0 is: 360/360 * drattarvextir.setRegla(ReglaType.VALUE_0); * krafa.setDrattarvextir(drattarvextir); Gengiskrafa gengiskrafa = * new Gengiskrafa(); //GengistegundType.VALUE_0 is: "almennt gengi * vidskiptabanka" * gengiskrafa.setGengistegund(GengistegundType.VALUE_0); * //LI_IK_mynt_type.ISK is: ISK obviously! * gengiskrafa.setMynt(LI_IK_mynt_type.ISK); * //GengisbankiType.VALUE_1 is: Landsbankinn * gengiskrafa.setGengisbanki(GengisbankiType.VALUE_1); * //GengisreglaType.GJALDDAGAGENGI is: * gengiskrafa.setGengisregla(GengisreglaType.GJALDDAGAGENGI); * krafa.setGengiskrafa(gengiskrafa); Afslattur afslattur = new * Afslattur(); * afslattur.setVidmidun(LI_IK_vidmidun_dags_type.EINDAGI); * afslattur.setTegund_afslattar(LI_IK_tegund_afslattar_og_vanskilagjalds_type.VALUE_0); * krafa.setAfslattur(afslattur); Birtingarkerfi birtingarkerfi = * new Birtingarkerfi(); * birtingarkerfi.setTegund("A");//bfm.getDisplayFormType(number)); * birtingarkerfi.setSlod("");//bfm.getDisplayFormURL(number)); * krafa.setBirtingarkerfi(birtingarkerfi); */ krofur.addKrafa(krafa); } String sessionId = signIn(bfm); stofnaKrofur.setVersion(new BigDecimal("1.1")); stofnaKrofur.setSession_id(sessionId); stofnaKrofur.setKrofur(krofur); try { stofnaKrofur.marshal(new FileWriter(CREATE_CLAIMS), CREATE_CLAIMS_SCHEMA); sendRequest(CREATE_CLAIMS); signOut(sessionId); } catch (MarshalException e) { e.printStackTrace(); } catch (ValidationException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void getClaimStatusFromBank(int batchNumber, BankInfo info, java.util.Date from, java.util.Date to) { BankFileManager bfm = new BankInvoiceFileManager(info); getClaimStatusFromBank(batchNumber, bfm, from, to); } public void getClaimStatusFromBank(int batchNumber, int groupId, java.util.Date from, java.util.Date to) { BankFileManager bfm = new BankInvoiceFileManager(groupId); getClaimStatusFromBank(batchNumber, bfm, from, to); } private void getClaimStatusFromBank(int batchNumber, BankFileManager bfm, java.util.Date from, java.util.Date to) { LI_Innheimta_fyrirspurn_krofur fyrirspurn = new LI_Innheimta_fyrirspurn_krofur(); fyrirspurn.setKt_krofuhafa(bfm.getClaimantSSN());// "7101002090"); fyrirspurn.setGjalddagi_fra(new Date(from)); fyrirspurn.setGjalddagi_til(new Date(to)); LI_Innheimta_fyrirspurn_krofur_svar svar = new LI_Innheimta_fyrirspurn_krofur_svar(); String sessionId = signIn(bfm); fyrirspurn.setSession_id(sessionId); fyrirspurn.setVersion(new BigDecimal("1.1")); try { fyrirspurn.marshal(new FileWriter(UPDATED_CLAIMS), GET_UPDATED_CLAIMS_SCHEMA); // the InputStreamReader must be constructed with ISO-8859-1 // because the bank is returning that encoding, containing icelandic // characters! svar = (LI_Innheimta_fyrirspurn_krofur_svar) svar .unmarshal(new InputStreamReader( sendRequest(UPDATED_CLAIMS) .getResponseBodyAsStream(), "ISO-8859-1")); signOut(sessionId); } catch (MarshalException e) { e.printStackTrace(); } catch (ValidationException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } Krofur krofur = svar.getKrofur(); for (int i = 0; i < krofur.getKrafaCount(); i++) { Krafa krafa = krofur.getKrafa(i); bfm.setInvoiceStatus(krafa.getAstand().toString(), Integer.valueOf( krafa.getNumer()).intValue()); } } public void deleteClaim(BankInfo info, int claimNumber, java.util.Date dueDate, String payersSSN) { BankFileManager bfm = new BankInvoiceFileManager(info); deleteClaim(bfm, claimNumber, dueDate, payersSSN); } public void deleteClaim(int groupId, int claimNumber, java.util.Date dueDate, String payersSSN) { BankFileManager bfm = new BankInvoiceFileManager(groupId); deleteClaim(bfm, claimNumber, dueDate, payersSSN); } private void deleteClaim(BankFileManager bfm, int claimNumber, java.util.Date dueDate, String payersSSN) { LI_Innheimta_krofur_eyda delete = new LI_Innheimta_krofur_eyda(); is.idega.block.finance.business.li.claims_delete.Krofur krofur = new is.idega.block.finance.business.li.claims_delete.Krofur(); is.idega.block.finance.business.li.claims_delete.Krafa krafa = new is.idega.block.finance.business.li.claims_delete.Krafa(); krafa.setKt_krofuhafa(bfm.getClaimantSSN()); krafa.setBanki(bfm.getBankBranchNumber()); krafa.setHofudbok(String.valueOf(bfm.getAccountBook())); krafa.setNumer(String.valueOf(claimNumber)); krafa.setGjalddagi(new Date(dueDate)); krafa.setKt_greidanda(payersSSN); krofur.addKrafa(krafa); delete.setKrofur(krofur); String sessionId = signIn(bfm); delete.setSession_id(sessionId); delete.setVersion(new BigDecimal("1.1")); try { delete.marshal(new FileWriter(DELETE_CLAIM), DELETE_CLAIM_SCHEMA); sendRequest(DELETE_CLAIM); signOut(sessionId); } catch (MarshalException e) { e.printStackTrace(); } catch (ValidationException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } private String signIn(BankFileManager bfm) { LI_Innskra innskra = new LI_Innskra(); innskra.setNotandanafn(bfm.getUsername()); innskra.setLykilord(bfm.getPassword()); innskra.setVersion(new BigDecimal("1.1")); LIInnskraSvar svar = new LIInnskraSvar(); try { innskra.marshal(new FileWriter(SIGN_IN), SIGN_IN_SCHEMA); svar = (LIInnskraSvar) svar.unmarshal(new InputStreamReader( sendRequest(SIGN_IN).getResponseBodyAsStream())); } catch (MarshalException e) { e.printStackTrace(); } catch (ValidationException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return svar.getSeta(); } private void signOut(String sessionId) { LIUtskra utskra = new LIUtskra(); utskra.setVersion(new BigDecimal("1.1")); utskra.setSeta(sessionId); try { utskra.marshal(new FileWriter(SIGN_OUT), SIGN_OUT_SCHEMA); sendRequest(SIGN_OUT); } catch (MarshalException e) { e.printStackTrace(); } catch (ValidationException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * */ private PostMethod sendRequest(String fileName) { HttpClient client = new HttpClient(); PostMethod post = new PostMethod(POST_METHOD); post.getParams().setBooleanParameter( HttpMethodParams.USE_EXPECT_CONTINUE, true); try { //post.setRequestBody(new FileInputStream(fileName)); post.setRequestEntity(new InputStreamRequestEntity(new FileInputStream(fileName))); client.executeMethod(post); System.out.println("responseString: " + post.getResponseBodyAsString()); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e2) { e2.printStackTrace(); } finally { post.releaseConnection(); } return post; } }