Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const { config } = require("./config");
- const fs = require("fs");
- const fileContent = fs.readFileSync("sber.txt", "utf8");
- class Deal {
- constructor(INN, client, date, sum) {
- this.INN = INN;
- this.client = client;
- this.date = date;
- this.sum = sum;
- }
- }
- let strArr = get_array(fileContent);
- console.log(parse(strArr));
- function is_substring(str, query) {
- return str.indexOf(query) != -1;
- }
- function get_array(fileContent) {
- function is_not_IP(str) {
- return !(is_substring(str, "Плательщик") && is_substring(get_value_from_str(str), "ИП "))
- }
- let strArr = fileContent.split('\n');
- let indexStart = 0;
- let indexEnd = 0;
- for (let i = 0; i < strArr.length; i++)
- {
- let str = strArr[i];
- if (is_substring(str, "КонецРасчСчет"))
- indexStart = i;
- if (is_substring(str, "КонецФайла"))
- indexEnd = i;
- }
- return strArr.slice(indexStart, indexEnd).filter(str => is_not_IP(str));
- }
- //парсим весь документ
- function parse(strArr) {
- let dealArr = new Array();
- const splitedArr = split_arr(strArr);
- splitedArr.forEach(array => dealArr.push(parse_one_deal(array)));
- return dealArr.filter(x => x != undefined);
- //парсим одну сделку
- function parse_one_deal(array) {
- let inn = "";
- let client = "";
- let date = "";
- let sum = 0;
- let flag = true;
- array.forEach(str => {
- if(is_substring(str, "ПлательщикИНН="))
- inn = get_value_from_str(str);
- if(is_substring(str, "Плательщик="))
- client = get_value_from_str(str);
- if(is_substring(str, "Дата="))
- date = get_value_from_str(str);
- if(is_substring(str, "Сумма="))
- sum = get_value_from_str(str);
- });
- //проверяем содержится ли инн в конфиге
- config.payers.forEach(payer => {
- if (payer == inn) flag = false;
- });
- if (flag)
- return new Deal(inn, client, date, sum);
- }
- }
- //получаем строку после знака =
- function get_value_from_str(str) {
- return str.split('=')[1];
- }
- function split_arr(strArr) {
- let splitedArr = new Array();
- let start = 0;
- let end = 0;
- let indicator = 0;
- for (let i = 0; i < strArr.length; i++) {
- let str = strArr[i];
- if (is_substring(str, "Номер=")) {
- start = i;
- indicator++;
- }
- if (is_substring(str, "КонецДокумента")) {
- end = i;
- indicator++;
- }
- if (indicator == 2) {
- indicator = 0;
- splitedArr.push(strArr.slice(start, end));
- }
- }
- return splitedArr;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement