コンバータ(全銀フォーマット to みずほCSV) (Converter (ZENGIN to MizuhoCSV))
みずほ銀行の総合振込ファイルを生成します。全国銀行協会が規定する”全銀フォーマット”のファイルから、”みずほビジネスWeb”用の『金額ファイル』を生成します。各行は「”顧客コード1″(10桁数字),”支払金額”(10桁数字),0」で構成されます。「みずほビジネスWEB」はインターネット経由でみずほ銀行に接続し預金口座の取引明細照会や振込振替などを行えるサービス。初期契約料≪無料≫、月間基本料金≪3000円+税≫
https://support.questetra.com/ja/addons/converter-zengin-to-mizuhocsv/
2019-07-08 (C) Questetra, Inc. (MIT License)
Configs
  • A: 全銀ファイル が格納されているファイル型データを選択してください(複数添付はサポート外) *
  • B: みずほCSV が格納されるファイル型データを選択してください (更新) *
  • Bx: 別名保存したい場合はファイル名をセットしてください #{EL}
Script
//////// START "main()" ////////
main();
function main(){ 


//// == Config Retrieving / 工程コンフィグの参照 ==
const dataIdA = configs.get( "conf_DataIdA" ) + "";
const dataIdB = configs.get( "conf_DataIdB" ) + "";
const saveAs  = configs.get( "conf_SaveAs" ) + "";
// 'java.lang.String' (String Obj) to javascript primitive 'string'

let fileName = "";
if( saveAs === "" ){
  fileName = "Mizuho.csv";
}else{
  fileName = saveAs;
}


//// == Data Retrieving / ワークフローデータの参照 ==
var myFiles = engine.findDataByNumber( dataIdA ); 
var upFiles = engine.findDataByNumber( dataIdB ); 
// java.util.ArrayList
if (myFiles === null || myFiles.size() != 1) {
  throw new Error( "\n One-file attachment is only valid. \n" );
}
if (upFiles === null ) {
  upFiles = new java.util.ArrayList();
}

//// == Calculating / 演算 ==
/// Read Lines
let myLineCounter = 0;
let allText       = "";
fileRepository.readFile(myFiles.get(0), "Shift_JIS", function(line) {
  allText += line;
  myLineCounter++;
});
engine.log( "#Line of Text-File: " + myLineCounter );

/// Remove CRLF
allText = allText.replace(/\r?\n/g, "");

/// Divide into 120 characters each
let arrRecords = allText.match(/[\s\S]{120}/g);
if (arrRecords === null || !arrRecords[0].startsWith("1") ) {
  throw new Error( "\n Not a ZENGIN file \n" );
}

/// Generate CSV
let csvText = "";
for( let i = 0; i < arrRecords.length; i++ ){
  if( arrRecords[i].startsWith("2") ){
    engine.log( i + " is a data record" );
    csvText += arrRecords[i].slice( 20, 23 );
    csvText += arrRecords[i].slice( 43, 50 );
    csvText += ",";
    csvText += arrRecords[i].slice( 80, 90 );
    csvText += ",0";
    csvText += "\n";
  }
}

/// Generate CSV files
csvText = csvText.trim(); // remove last "\n"
let arrCsvText = csvText.split("\n");
let numOfFiles = Math.ceil( arrCsvText.length / 20 );
engine.log( "# of Output Files: " + numOfFiles );

/// Add to Files Array
for( let i = 0; i < numOfFiles; i++ ){
  const csvFileText = arrCsvText.slice( i*20, i*20+20 ).join("\n");
  if( i !== 0 ){ fileName = fileName.replace(/(\.[\w\d]+)$/i, "-"+(i+1)+"$1");}
  upFiles.add( new com.questetra.bpms.core.event.scripttask.NewQfile(
    fileName, "text/comma-separated-values; charset=Shift_JIS", csvFileText ));
}

//// == Data Updating / ワークフローデータへの代入 ==
engine.setDataByNumber( dataIdB, upFiles );

} //////// END "main()" ////////

Download

Capture

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください