@seidor-cloud-produtos/tax-core 0.0.9-beta5 → 0.0.9-beta7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{lib/index.ts → dist/index.d.ts} +2 -17
- package/dist/index.js +19 -0
- package/dist/taxReport/Block.d.ts +18 -0
- package/dist/taxReport/Block.js +37 -0
- package/dist/taxReport/CounterBlock.d.ts +7 -0
- package/dist/taxReport/CounterBlock.js +12 -0
- package/dist/taxReport/CounterRegister.d.ts +6 -0
- package/dist/taxReport/CounterRegister.js +34 -0
- package/dist/taxReport/Decorators.d.ts +31 -0
- package/dist/taxReport/Decorators.js +137 -0
- package/dist/taxReport/Register.d.ts +11 -0
- package/dist/taxReport/Register.js +43 -0
- package/dist/taxReport/ReportGenerator.d.ts +43 -0
- package/dist/taxReport/ReportGenerator.js +152 -0
- package/dist/taxReport/TagCounter.d.ts +8 -0
- package/dist/taxReport/TagCounter.js +38 -0
- package/dist/taxReport/TaxReport.d.ts +8 -0
- package/dist/taxReport/TaxReport.js +18 -0
- package/dist/taxReport/implementations/ConsoleOutput.d.ts +7 -0
- package/dist/taxReport/implementations/ConsoleOutput.js +15 -0
- package/dist/taxReport/implementations/MemoryPersist.d.ts +16 -0
- package/dist/taxReport/implementations/MemoryPersist.js +53 -0
- package/dist/taxReport/implementations/TaxRegisterGenerator.d.ts +21 -0
- package/dist/taxReport/implementations/TaxRegisterGenerator.js +84 -0
- package/{lib/taxReport/interfaces/BlocksIterator.ts → dist/taxReport/interfaces/BlocksIterator.d.ts} +1 -2
- package/dist/taxReport/interfaces/BlocksIterator.js +1 -0
- package/dist/taxReport/interfaces/OutputWriter.d.ts +4 -0
- package/dist/taxReport/interfaces/OutputWriter.js +2 -0
- package/dist/taxReport/interfaces/RegisterEventNotifier.d.ts +15 -0
- package/dist/taxReport/interfaces/RegisterEventNotifier.js +18 -0
- package/{lib/taxReport/interfaces/RegisterGenerator.ts → dist/taxReport/interfaces/RegisterGenerator.d.ts} +2 -3
- package/dist/taxReport/interfaces/RegisterGenerator.js +2 -0
- package/dist/taxReport/interfaces/RegisterPersist.d.ts +10 -0
- package/dist/taxReport/interfaces/RegisterPersist.js +2 -0
- package/dist/taxReport/interfaces/RegisterSubscriber.d.ts +4 -0
- package/dist/taxReport/interfaces/RegisterSubscriber.js +2 -0
- package/package.json +10 -10
- package/lib/taxReport/Block.ts +0 -58
- package/lib/taxReport/CounterBlock.ts +0 -14
- package/lib/taxReport/CounterRegister.ts +0 -20
- package/lib/taxReport/Decorators.ts +0 -242
- package/lib/taxReport/Register.ts +0 -42
- package/lib/taxReport/ReportGenerator.ts +0 -178
- package/lib/taxReport/TagCounter.ts +0 -45
- package/lib/taxReport/TaxReport.ts +0 -21
- package/lib/taxReport/implementations/ConsoleOutput.ts +0 -16
- package/lib/taxReport/implementations/MemoryPersist.ts +0 -63
- package/lib/taxReport/implementations/TaxRegisterGenerator.ts +0 -116
- package/lib/taxReport/interfaces/OutputWriter.ts +0 -4
- package/lib/taxReport/interfaces/RegisterEventNotifier.ts +0 -30
- package/lib/taxReport/interfaces/RegisterPersist.ts +0 -11
- package/lib/taxReport/interfaces/RegisterSubscriber.ts +0 -5
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Block from "./taxReport/Block";
|
|
2
2
|
import * as Decorators from "./taxReport/Decorators";
|
|
3
3
|
import { Register } from "./taxReport/Register";
|
|
4
|
-
import * as
|
|
4
|
+
import * as Generation from "./taxReport/ReportGenerator";
|
|
5
5
|
import TaxReport from "./taxReport/TaxReport";
|
|
6
6
|
import ConsoleOutput from "./taxReport/implementations/ConsoleOutput";
|
|
7
7
|
import MemoryPersist from "./taxReport/implementations/MemoryPersist";
|
|
@@ -11,19 +11,4 @@ import RegisterEventNotifier from "./taxReport/interfaces/RegisterEventNotifier"
|
|
|
11
11
|
import RegisterGenerator from "./taxReport/interfaces/RegisterGenerator";
|
|
12
12
|
import RegisterPersist from "./taxReport/interfaces/RegisterPersist";
|
|
13
13
|
import RegisterSubscriber from "./taxReport/interfaces/RegisterSubscriber";
|
|
14
|
-
|
|
15
|
-
export {
|
|
16
|
-
Block,
|
|
17
|
-
Decorators,
|
|
18
|
-
Register,
|
|
19
|
-
ReportGenerator,
|
|
20
|
-
TaxReport,
|
|
21
|
-
ConsoleOutput,
|
|
22
|
-
MemoryPersist,
|
|
23
|
-
TaxRegisterGenerator,
|
|
24
|
-
OutputWriter,
|
|
25
|
-
RegisterEventNotifier,
|
|
26
|
-
RegisterGenerator,
|
|
27
|
-
RegisterPersist,
|
|
28
|
-
RegisterSubscriber,
|
|
29
|
-
};
|
|
14
|
+
export { Block, Decorators, Register, Generation, TaxReport, ConsoleOutput, MemoryPersist, TaxRegisterGenerator, OutputWriter, RegisterEventNotifier, RegisterGenerator, RegisterPersist, RegisterSubscriber, };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TaxRegisterGenerator = exports.MemoryPersist = exports.ConsoleOutput = exports.TaxReport = exports.Generation = exports.Register = exports.Decorators = exports.Block = void 0;
|
|
4
|
+
const Block_1 = require("./taxReport/Block");
|
|
5
|
+
exports.Block = Block_1.default;
|
|
6
|
+
const Decorators = require("./taxReport/Decorators");
|
|
7
|
+
exports.Decorators = Decorators;
|
|
8
|
+
const Register_1 = require("./taxReport/Register");
|
|
9
|
+
Object.defineProperty(exports, "Register", { enumerable: true, get: function () { return Register_1.Register; } });
|
|
10
|
+
const Generation = require("./taxReport/ReportGenerator");
|
|
11
|
+
exports.Generation = Generation;
|
|
12
|
+
const TaxReport_1 = require("./taxReport/TaxReport");
|
|
13
|
+
exports.TaxReport = TaxReport_1.default;
|
|
14
|
+
const ConsoleOutput_1 = require("./taxReport/implementations/ConsoleOutput");
|
|
15
|
+
exports.ConsoleOutput = ConsoleOutput_1.default;
|
|
16
|
+
const MemoryPersist_1 = require("./taxReport/implementations/MemoryPersist");
|
|
17
|
+
exports.MemoryPersist = MemoryPersist_1.default;
|
|
18
|
+
const TaxRegisterGenerator_1 = require("./taxReport/implementations/TaxRegisterGenerator");
|
|
19
|
+
exports.TaxRegisterGenerator = TaxRegisterGenerator_1.default;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import RegisterPersist from "./interfaces/RegisterPersist";
|
|
2
|
+
import { Register } from "./Register";
|
|
3
|
+
import RegisterSubscriber from "./interfaces/RegisterSubscriber";
|
|
4
|
+
import RegisterEventNotifier, { RegisterEventData } from "./interfaces/RegisterEventNotifier";
|
|
5
|
+
export default abstract class Block implements RegisterEventNotifier, RegisterSubscriber {
|
|
6
|
+
private readonly _name;
|
|
7
|
+
private eventEmitter;
|
|
8
|
+
protected registersPersist: RegisterPersist;
|
|
9
|
+
protected constructor(name: string, regPersist: RegisterPersist);
|
|
10
|
+
abstract eventHandler(eventData: RegisterEventData): void;
|
|
11
|
+
notifyEvent(eventData: RegisterEventData): void;
|
|
12
|
+
get name(): string;
|
|
13
|
+
get registers(): Register[];
|
|
14
|
+
addSubscriber(subscriber: RegisterSubscriber): void;
|
|
15
|
+
addRegister<T extends Register>(register: T): void;
|
|
16
|
+
hasContent(): boolean;
|
|
17
|
+
getRegisterByKey(registerKey: string): Register;
|
|
18
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const node_events_1 = require("node:events");
|
|
4
|
+
const RegisterEventNotifier_1 = require("./interfaces/RegisterEventNotifier");
|
|
5
|
+
class Block {
|
|
6
|
+
constructor(name, regPersist) {
|
|
7
|
+
this._name = name;
|
|
8
|
+
this.eventEmitter = new node_events_1.EventEmitter();
|
|
9
|
+
this.registersPersist = regPersist;
|
|
10
|
+
}
|
|
11
|
+
notifyEvent(eventData) {
|
|
12
|
+
this.eventEmitter.emit(eventData.event, eventData);
|
|
13
|
+
}
|
|
14
|
+
get name() {
|
|
15
|
+
return this._name;
|
|
16
|
+
}
|
|
17
|
+
get registers() {
|
|
18
|
+
const sortApproach = (a, b) => a.reg.localeCompare(b.reg);
|
|
19
|
+
return this.registersPersist.all().sort(sortApproach);
|
|
20
|
+
}
|
|
21
|
+
addSubscriber(subscriber) {
|
|
22
|
+
this.eventEmitter.on(RegisterEventNotifier_1.Event.REGISTER_CREATED, function (data) {
|
|
23
|
+
return subscriber.eventHandler.call(subscriber, data);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
addRegister(register) {
|
|
27
|
+
this.registersPersist.add(register);
|
|
28
|
+
this.notifyEvent((0, RegisterEventNotifier_1.newRegisterEventData)(register));
|
|
29
|
+
}
|
|
30
|
+
hasContent() {
|
|
31
|
+
return this.registersPersist.hasRegisters();
|
|
32
|
+
}
|
|
33
|
+
getRegisterByKey(registerKey) {
|
|
34
|
+
return this.registersPersist.getByKey(registerKey);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.default = Block;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import Block from "./Block";
|
|
2
|
+
import RegisterPersist from "./interfaces/RegisterPersist";
|
|
3
|
+
import { RegisterEventData } from "./interfaces/RegisterEventNotifier";
|
|
4
|
+
export default class CounterBlock extends Block {
|
|
5
|
+
constructor(regPersist: RegisterPersist, name?: string);
|
|
6
|
+
eventHandler(eventData: RegisterEventData): void;
|
|
7
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const Block_1 = require("./Block");
|
|
4
|
+
class CounterBlock extends Block_1.default {
|
|
5
|
+
constructor(regPersist, name = "9") {
|
|
6
|
+
super(name, regPersist);
|
|
7
|
+
}
|
|
8
|
+
eventHandler(eventData) {
|
|
9
|
+
// throw new Error("Method not implemented.");
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.default = CounterBlock;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const Register_1 = require("./Register");
|
|
13
|
+
const Decorators_1 = require("./Decorators");
|
|
14
|
+
class CounterRegister extends Register_1.Register {
|
|
15
|
+
constructor(qtd_reg_blc = 0, register = "9900") {
|
|
16
|
+
super(register, {});
|
|
17
|
+
// @ts-ignore
|
|
18
|
+
this.reg_blc = "";
|
|
19
|
+
// @ts-ignore
|
|
20
|
+
this.qtd_reg_blc = 0;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.default = CounterRegister;
|
|
24
|
+
__decorate([
|
|
25
|
+
(0, Decorators_1.Key)()
|
|
26
|
+
// @ts-ignore
|
|
27
|
+
,
|
|
28
|
+
(0, Decorators_1.Alphanumeric)(),
|
|
29
|
+
__metadata("design:type", String)
|
|
30
|
+
], CounterRegister.prototype, "reg_blc", void 0);
|
|
31
|
+
__decorate([
|
|
32
|
+
(0, Decorators_1.Numeric)(),
|
|
33
|
+
__metadata("design:type", Number)
|
|
34
|
+
], CounterRegister.prototype, "qtd_reg_blc", void 0);
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import "reflect-metadata";
|
|
2
|
+
export declare const keyCompositionMetadata: unique symbol;
|
|
3
|
+
export declare const maximumNumericLength = 19;
|
|
4
|
+
export declare const defaultAlphanumericLength = 255;
|
|
5
|
+
export declare enum FieldDataType {
|
|
6
|
+
alphanumeric = 0,
|
|
7
|
+
numeric = 1
|
|
8
|
+
}
|
|
9
|
+
export declare enum valueProviderType {
|
|
10
|
+
property = 0,
|
|
11
|
+
method = 1
|
|
12
|
+
}
|
|
13
|
+
export interface FieldFormat {
|
|
14
|
+
required: boolean;
|
|
15
|
+
dataType: FieldDataType;
|
|
16
|
+
maximumLength: number;
|
|
17
|
+
maximumDecimalsLength: number;
|
|
18
|
+
fillEntireLength: boolean;
|
|
19
|
+
valueProvider: valueProviderType;
|
|
20
|
+
}
|
|
21
|
+
export declare function Numeric(required?: boolean, fillEntireLength?: boolean, maximumLength?: number): (target: any, propertyKey: string, other?: any) => any;
|
|
22
|
+
export declare function Decimal(required?: boolean, fillEntireLength?: boolean, maximumLength?: number, maximumDecimalsLength?: number): (target: any, propertyKey: string, other?: any) => any;
|
|
23
|
+
export declare function Alphanumeric(required?: boolean, fillEntireLength?: boolean, maximumLength?: number): (target: any, propertyKey: string, other?: any) => any;
|
|
24
|
+
export interface KeyComposition {
|
|
25
|
+
fields: KeyFieldDefinition[];
|
|
26
|
+
}
|
|
27
|
+
export interface KeyFieldDefinition {
|
|
28
|
+
fieldName: string;
|
|
29
|
+
valueProvider: valueProviderType;
|
|
30
|
+
}
|
|
31
|
+
export declare function Key(): (target: any, propertyKey: string, other?: any) => void;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.valueProviderType = exports.FieldDataType = exports.defaultAlphanumericLength = exports.maximumNumericLength = exports.keyCompositionMetadata = void 0;
|
|
4
|
+
exports.Numeric = Numeric;
|
|
5
|
+
exports.Decimal = Decimal;
|
|
6
|
+
exports.Alphanumeric = Alphanumeric;
|
|
7
|
+
exports.Key = Key;
|
|
8
|
+
require("reflect-metadata");
|
|
9
|
+
exports.keyCompositionMetadata = Symbol("key");
|
|
10
|
+
exports.maximumNumericLength = 19;
|
|
11
|
+
exports.defaultAlphanumericLength = 255;
|
|
12
|
+
var FieldDataType;
|
|
13
|
+
(function (FieldDataType) {
|
|
14
|
+
FieldDataType[FieldDataType["alphanumeric"] = 0] = "alphanumeric";
|
|
15
|
+
FieldDataType[FieldDataType["numeric"] = 1] = "numeric";
|
|
16
|
+
})(FieldDataType || (exports.FieldDataType = FieldDataType = {}));
|
|
17
|
+
var valueProviderType;
|
|
18
|
+
(function (valueProviderType) {
|
|
19
|
+
valueProviderType[valueProviderType["property"] = 0] = "property";
|
|
20
|
+
valueProviderType[valueProviderType["method"] = 1] = "method";
|
|
21
|
+
})(valueProviderType || (exports.valueProviderType = valueProviderType = {}));
|
|
22
|
+
function numericField(required, maximumLength, valueProvider, fillEntireLength = false, maximumDecimalsLength = 0) {
|
|
23
|
+
return {
|
|
24
|
+
required: required,
|
|
25
|
+
dataType: FieldDataType.numeric,
|
|
26
|
+
maximumLength: maximumLength,
|
|
27
|
+
maximumDecimalsLength: maximumDecimalsLength,
|
|
28
|
+
fillEntireLength: fillEntireLength,
|
|
29
|
+
valueProvider: valueProvider,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function alphanumericField(required, maximumLength, valueProvider, fillEntireLength = false, maximumDecimalsLength = 0) {
|
|
33
|
+
return {
|
|
34
|
+
required: required,
|
|
35
|
+
dataType: FieldDataType.alphanumeric,
|
|
36
|
+
maximumLength: maximumLength,
|
|
37
|
+
maximumDecimalsLength: maximumDecimalsLength,
|
|
38
|
+
fillEntireLength: fillEntireLength,
|
|
39
|
+
valueProvider: valueProvider,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function Numeric(required = false, fillEntireLength = false, maximumLength = exports.maximumNumericLength) {
|
|
43
|
+
return function (target, propertyKey, other) {
|
|
44
|
+
Reflect.defineMetadata(propertyKey, numericField(required, maximumLength, other ? valueProviderType.method : valueProviderType.property, fillEntireLength), target);
|
|
45
|
+
return other;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
//export function Numeric(
|
|
49
|
+
// required: boolean = false,
|
|
50
|
+
// fillEntireLength: boolean = false,
|
|
51
|
+
// maximumLength: number = maximumNumericLength,
|
|
52
|
+
//): PropertyDecorator | MethodDecorator {
|
|
53
|
+
// return function (target: any, propertyKey: string, other: any) {
|
|
54
|
+
// Reflect.defineMetadata(
|
|
55
|
+
// propertyKey,
|
|
56
|
+
// numericField(
|
|
57
|
+
// required,
|
|
58
|
+
// maximumLength,
|
|
59
|
+
// other ? valueProviderType.method : valueProviderType.property,
|
|
60
|
+
// fillEntireLength,
|
|
61
|
+
// ),
|
|
62
|
+
// target,
|
|
63
|
+
// );
|
|
64
|
+
// };
|
|
65
|
+
//}
|
|
66
|
+
function Decimal(required = false, fillEntireLength = false, maximumLength = exports.maximumNumericLength, maximumDecimalsLength = 2) {
|
|
67
|
+
return function (target, propertyKey, other) {
|
|
68
|
+
Reflect.defineMetadata(propertyKey, numericField(required, maximumLength, other ? valueProviderType.method : valueProviderType.property, fillEntireLength, maximumDecimalsLength), target);
|
|
69
|
+
return other;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//export function Decimal(
|
|
73
|
+
// required: boolean = false,
|
|
74
|
+
// fillEntireLength: boolean = false,
|
|
75
|
+
// maximumLength: number = maximumNumericLength,
|
|
76
|
+
// maximumDecimalsLength: number = 2,
|
|
77
|
+
//): PropertyDecorator | MethodDecorator {
|
|
78
|
+
// return function (target: any, propertyKey: string, other: any) {
|
|
79
|
+
// Reflect.defineMetadata(
|
|
80
|
+
// propertyKey,
|
|
81
|
+
// numericField(
|
|
82
|
+
// required,
|
|
83
|
+
// maximumLength,
|
|
84
|
+
// other ? valueProviderType.method : valueProviderType.property,
|
|
85
|
+
// fillEntireLength,
|
|
86
|
+
// maximumDecimalsLength,
|
|
87
|
+
// ),
|
|
88
|
+
// target,
|
|
89
|
+
// );
|
|
90
|
+
// };
|
|
91
|
+
//}
|
|
92
|
+
function Alphanumeric(required = false, fillEntireLength = false, maximumLength = exports.defaultAlphanumericLength) {
|
|
93
|
+
return function (target, propertyKey, other) {
|
|
94
|
+
Reflect.defineMetadata(propertyKey, alphanumericField(required, maximumLength, other ? valueProviderType.method : valueProviderType.property, fillEntireLength), target);
|
|
95
|
+
return other;
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function key() {
|
|
99
|
+
return {
|
|
100
|
+
fields: [],
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
function keyFieldDefinition(fieldName, valueProvider) {
|
|
104
|
+
return {
|
|
105
|
+
fieldName: fieldName,
|
|
106
|
+
valueProvider: valueProvider,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function Key() {
|
|
110
|
+
return function (target, propertyKey, other) {
|
|
111
|
+
let keyComposition;
|
|
112
|
+
keyComposition = Reflect.getMetadata(exports.keyCompositionMetadata, target);
|
|
113
|
+
if (!keyComposition) {
|
|
114
|
+
keyComposition = key();
|
|
115
|
+
}
|
|
116
|
+
keyComposition.fields.push(keyFieldDefinition(propertyKey, other ? valueProviderType.method : valueProviderType.property));
|
|
117
|
+
Reflect.defineMetadata(exports.keyCompositionMetadata, keyComposition, target);
|
|
118
|
+
return other;
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
//export function Key(): PropertyDecorator | MethodDecorator {
|
|
122
|
+
// return function (target: any, propertyKey: string, other?: any): void {
|
|
123
|
+
// let keyComposition: KeyComposition;
|
|
124
|
+
// keyComposition = Reflect.getMetadata(keyCompositionMetadata, target);
|
|
125
|
+
// if (!keyComposition) {
|
|
126
|
+
// keyComposition = key();
|
|
127
|
+
// }
|
|
128
|
+
// keyComposition.fields.push(
|
|
129
|
+
// keyFieldDefinition(
|
|
130
|
+
// propertyKey,
|
|
131
|
+
// other ? valueProviderType.method : valueProviderType.property,
|
|
132
|
+
// ),
|
|
133
|
+
// );
|
|
134
|
+
// Reflect.defineMetadata(keyCompositionMetadata, keyComposition, target);
|
|
135
|
+
// };
|
|
136
|
+
//}
|
|
137
|
+
//export {Numeric, Decimal, Alphanumeric, Key}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import RegisterEventNotifier from "./interfaces/RegisterEventNotifier";
|
|
2
|
+
export declare abstract class Register {
|
|
3
|
+
[key: string]: any;
|
|
4
|
+
private _registerNotifier;
|
|
5
|
+
private readonly _children;
|
|
6
|
+
reg: string;
|
|
7
|
+
constructor(registerTag: string, notifier: RegisterEventNotifier | null);
|
|
8
|
+
protected addChild(child: Register): void;
|
|
9
|
+
getChildren(): Register[];
|
|
10
|
+
getKeyValue(): string;
|
|
11
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.Register = void 0;
|
|
13
|
+
const Decorators_1 = require("./Decorators");
|
|
14
|
+
const RegisterEventNotifier_1 = require("./interfaces/RegisterEventNotifier");
|
|
15
|
+
class Register {
|
|
16
|
+
constructor(registerTag, notifier) {
|
|
17
|
+
// @ts-ignore
|
|
18
|
+
this.reg = "";
|
|
19
|
+
this._children = [];
|
|
20
|
+
this.reg = registerTag;
|
|
21
|
+
this._registerNotifier = notifier;
|
|
22
|
+
}
|
|
23
|
+
addChild(child) {
|
|
24
|
+
this._children.push(child);
|
|
25
|
+
this._registerNotifier.notifyEvent((0, RegisterEventNotifier_1.newRegisterEventData)(child));
|
|
26
|
+
}
|
|
27
|
+
getChildren() {
|
|
28
|
+
return this._children;
|
|
29
|
+
}
|
|
30
|
+
getKeyValue() {
|
|
31
|
+
const keyComposition = Reflect.getMetadata(Decorators_1.keyCompositionMetadata, this);
|
|
32
|
+
let result = "";
|
|
33
|
+
for (const keyFieldData of keyComposition.fields) {
|
|
34
|
+
result = result.concat(this[keyFieldData.fieldName]);
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.Register = Register;
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, Decorators_1.Key)(),
|
|
42
|
+
__metadata("design:type", String)
|
|
43
|
+
], Register.prototype, "reg", void 0);
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import TaxReport from "./TaxReport";
|
|
2
|
+
import Block from "./Block";
|
|
3
|
+
import { Register } from "./Register";
|
|
4
|
+
import TagCounter from "./TagCounter";
|
|
5
|
+
import RegisterGenerator from "./interfaces/RegisterGenerator";
|
|
6
|
+
export interface ReportGenerationOptions {
|
|
7
|
+
openSuffix: string;
|
|
8
|
+
closeSuffix: string;
|
|
9
|
+
openFileRegister: Register;
|
|
10
|
+
registerGenerator: RegisterGenerator;
|
|
11
|
+
}
|
|
12
|
+
export declare class CloseFile extends Register {
|
|
13
|
+
qtd_lin: number;
|
|
14
|
+
constructor();
|
|
15
|
+
}
|
|
16
|
+
export declare class OpenBlock extends Register {
|
|
17
|
+
constructor(tag: string);
|
|
18
|
+
ind_mov: number;
|
|
19
|
+
}
|
|
20
|
+
export declare class CloseBlock extends Register {
|
|
21
|
+
constructor(tag: string);
|
|
22
|
+
qtd_lin: number;
|
|
23
|
+
}
|
|
24
|
+
export declare class ReportGenerator {
|
|
25
|
+
protected _options: ReportGenerationOptions;
|
|
26
|
+
protected _counters: TagCounter;
|
|
27
|
+
private constructor();
|
|
28
|
+
static defaultOptions(openFileRegister: Register, registerGenerator: RegisterGenerator): ReportGenerationOptions;
|
|
29
|
+
static newWithDefaultOptions(openFileRegister: Register): ReportGenerator;
|
|
30
|
+
static newWithOptions(options: ReportGenerationOptions): ReportGenerator;
|
|
31
|
+
private beforeGeneration;
|
|
32
|
+
private generation;
|
|
33
|
+
private afterGeneration;
|
|
34
|
+
protected beforeBlockGeneration(block: Block): void;
|
|
35
|
+
protected blockGeneration(block: Block): void;
|
|
36
|
+
protected beforeRegisterGeneration(register: Register): void;
|
|
37
|
+
protected registerGeneration(register: Register): void;
|
|
38
|
+
protected afterRegisterGeneration(register: Register): void;
|
|
39
|
+
protected afterBlockGeneration(block: Block): void;
|
|
40
|
+
private addBlock;
|
|
41
|
+
private addRegister;
|
|
42
|
+
generateFile(taxReport: TaxReport): void;
|
|
43
|
+
}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ReportGenerator = exports.CloseBlock = exports.OpenBlock = exports.CloseFile = void 0;
|
|
13
|
+
const Register_1 = require("./Register");
|
|
14
|
+
const Decorators_1 = require("./Decorators");
|
|
15
|
+
const TagCounter_1 = require("./TagCounter");
|
|
16
|
+
const CounterBlock_1 = require("./CounterBlock");
|
|
17
|
+
const MemoryPersist_1 = require("./implementations/MemoryPersist");
|
|
18
|
+
const CounterRegister_1 = require("./CounterRegister");
|
|
19
|
+
const TaxRegisterGenerator_1 = require("./implementations/TaxRegisterGenerator");
|
|
20
|
+
const tagCloseFileRegister = "9999";
|
|
21
|
+
const openSuffix = "001";
|
|
22
|
+
const closeSuffix = "990";
|
|
23
|
+
var IndicatorBlockContent;
|
|
24
|
+
(function (IndicatorBlockContent) {
|
|
25
|
+
IndicatorBlockContent[IndicatorBlockContent["hasContent"] = 0] = "hasContent";
|
|
26
|
+
IndicatorBlockContent[IndicatorBlockContent["hasNoContent"] = 1] = "hasNoContent";
|
|
27
|
+
})(IndicatorBlockContent || (IndicatorBlockContent = {}));
|
|
28
|
+
class CloseFile extends Register_1.Register {
|
|
29
|
+
constructor() {
|
|
30
|
+
super(tagCloseFileRegister, {});
|
|
31
|
+
// @ts-ignore
|
|
32
|
+
this.qtd_lin = 0;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
exports.CloseFile = CloseFile;
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, Decorators_1.Numeric)(),
|
|
38
|
+
__metadata("design:type", Number)
|
|
39
|
+
], CloseFile.prototype, "qtd_lin", void 0);
|
|
40
|
+
class OpenBlock extends Register_1.Register {
|
|
41
|
+
constructor(tag) {
|
|
42
|
+
super(tag, {});
|
|
43
|
+
// @ts-ignore
|
|
44
|
+
this.ind_mov = IndicatorBlockContent.hasNoContent;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
exports.OpenBlock = OpenBlock;
|
|
48
|
+
__decorate([
|
|
49
|
+
(0, Decorators_1.Alphanumeric)(1),
|
|
50
|
+
__metadata("design:type", Number)
|
|
51
|
+
], OpenBlock.prototype, "ind_mov", void 0);
|
|
52
|
+
class CloseBlock extends Register_1.Register {
|
|
53
|
+
constructor(tag) {
|
|
54
|
+
super(tag, {});
|
|
55
|
+
this.qtd_lin = 0;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.CloseBlock = CloseBlock;
|
|
59
|
+
class ReportGenerator {
|
|
60
|
+
constructor(options) {
|
|
61
|
+
this._options = options;
|
|
62
|
+
this._counters = new TagCounter_1.default();
|
|
63
|
+
}
|
|
64
|
+
static defaultOptions(openFileRegister, registerGenerator) {
|
|
65
|
+
return {
|
|
66
|
+
openSuffix: openSuffix,
|
|
67
|
+
closeSuffix: closeSuffix,
|
|
68
|
+
openFileRegister: openFileRegister,
|
|
69
|
+
registerGenerator: registerGenerator,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
static newWithDefaultOptions(openFileRegister) {
|
|
73
|
+
return this.newWithOptions(this.defaultOptions(openFileRegister, TaxRegisterGenerator_1.default.newWithDefaultOptions()));
|
|
74
|
+
}
|
|
75
|
+
static newWithOptions(options) {
|
|
76
|
+
return new ReportGenerator(options);
|
|
77
|
+
}
|
|
78
|
+
beforeGeneration(taxReport) {
|
|
79
|
+
this.addRegister(this._options.openFileRegister);
|
|
80
|
+
}
|
|
81
|
+
generation(taxReport) {
|
|
82
|
+
const blocks = taxReport.Blocks;
|
|
83
|
+
for (const block of blocks) {
|
|
84
|
+
this.addBlock(block);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
afterGeneration(taxReport) {
|
|
88
|
+
const tagCounters = this._counters.getAllTagsCounters();
|
|
89
|
+
const counterBlock = new CounterBlock_1.default(MemoryPersist_1.default.createInstance());
|
|
90
|
+
const closeFileRegister = new CloseFile();
|
|
91
|
+
tagCounters.forEach((amount, tag) => {
|
|
92
|
+
const counterRegister = new CounterRegister_1.default();
|
|
93
|
+
counterRegister.reg_blc = tag;
|
|
94
|
+
counterRegister.qtd_reg_blc = amount;
|
|
95
|
+
closeFileRegister.qtd_lin += amount;
|
|
96
|
+
counterBlock.addRegister(counterRegister);
|
|
97
|
+
});
|
|
98
|
+
this.addBlock(counterBlock);
|
|
99
|
+
//This should register all lines of the taxReport
|
|
100
|
+
// To calculate this, we need to sum:
|
|
101
|
+
// total lines = registers lines (qtd_reg_blc) +
|
|
102
|
+
// lines of counters (tagCounters.size) +
|
|
103
|
+
// counters open and close line (2) +
|
|
104
|
+
// close file line (1)
|
|
105
|
+
closeFileRegister.qtd_lin += tagCounters.size + 3;
|
|
106
|
+
this._options.registerGenerator.generate(closeFileRegister);
|
|
107
|
+
}
|
|
108
|
+
beforeBlockGeneration(block) {
|
|
109
|
+
const openBlock = new OpenBlock(`${block.name}${this._options.openSuffix}`);
|
|
110
|
+
openBlock.ind_mov = block.hasContent()
|
|
111
|
+
? IndicatorBlockContent.hasContent
|
|
112
|
+
: IndicatorBlockContent.hasNoContent;
|
|
113
|
+
this.addRegister(openBlock);
|
|
114
|
+
}
|
|
115
|
+
blockGeneration(block) {
|
|
116
|
+
for (const register of block.registers) {
|
|
117
|
+
this.addRegister(register);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
beforeRegisterGeneration(register) { }
|
|
121
|
+
registerGeneration(register) {
|
|
122
|
+
this._options.registerGenerator.generate(register);
|
|
123
|
+
for (const child of register.getChildren()) {
|
|
124
|
+
this.addRegister(child);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
afterRegisterGeneration(register) {
|
|
128
|
+
this._counters.countRegister(register);
|
|
129
|
+
}
|
|
130
|
+
afterBlockGeneration(block) {
|
|
131
|
+
const closeBlock = new CloseBlock(`${block.name}${this._options.closeSuffix}`);
|
|
132
|
+
closeBlock.qtd_lin = this._counters.getBlockRegistersTotal(block.name) + 1;
|
|
133
|
+
this.addRegister(closeBlock);
|
|
134
|
+
}
|
|
135
|
+
addBlock(block) {
|
|
136
|
+
this.beforeBlockGeneration(block);
|
|
137
|
+
this.blockGeneration(block);
|
|
138
|
+
this.afterBlockGeneration(block);
|
|
139
|
+
}
|
|
140
|
+
addRegister(register) {
|
|
141
|
+
this.beforeRegisterGeneration(register);
|
|
142
|
+
this.registerGeneration(register);
|
|
143
|
+
this.afterRegisterGeneration(register);
|
|
144
|
+
}
|
|
145
|
+
generateFile(taxReport) {
|
|
146
|
+
this.beforeGeneration(taxReport);
|
|
147
|
+
this.generation(taxReport);
|
|
148
|
+
this.afterGeneration(taxReport);
|
|
149
|
+
this._options.registerGenerator.save();
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
exports.ReportGenerator = ReportGenerator;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class TagCounter {
|
|
4
|
+
constructor() {
|
|
5
|
+
this._blocksCounters = new Map();
|
|
6
|
+
}
|
|
7
|
+
countRegister(register) {
|
|
8
|
+
const blockLetter = register.reg[0];
|
|
9
|
+
let counters;
|
|
10
|
+
counters = !this._blocksCounters.has(blockLetter) ? new Map() : this._blocksCounters.get(blockLetter);
|
|
11
|
+
!counters.has(register.reg) ? counters.set(register.reg, 1) : counters.set(register.reg, (counters.get(register.reg) + 1));
|
|
12
|
+
this._blocksCounters.set(blockLetter, counters);
|
|
13
|
+
}
|
|
14
|
+
getBlockRegistersTotal(blockLetter) {
|
|
15
|
+
let blockRegistersTotal = 0;
|
|
16
|
+
const blocksCounter = this._blocksCounters.get(blockLetter);
|
|
17
|
+
if (!blocksCounter) {
|
|
18
|
+
return blockRegistersTotal;
|
|
19
|
+
}
|
|
20
|
+
for (const value of blocksCounter.values()) {
|
|
21
|
+
blockRegistersTotal += value;
|
|
22
|
+
}
|
|
23
|
+
return blockRegistersTotal;
|
|
24
|
+
}
|
|
25
|
+
getAllTagsCounters() {
|
|
26
|
+
const all = new Map();
|
|
27
|
+
const blocksKeys = Array.from(this._blocksCounters.keys()).sort((a, b) => a.localeCompare(b));
|
|
28
|
+
blocksKeys.forEach((blockKey) => {
|
|
29
|
+
const block = this._blocksCounters.get(blockKey);
|
|
30
|
+
const registerKeys = Array.from(block.keys()).sort((a, b) => a.localeCompare(b));
|
|
31
|
+
registerKeys.forEach((tag) => {
|
|
32
|
+
all.set(tag, block.get(tag));
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
return all;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.default = TagCounter;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
class TaxReport {
|
|
4
|
+
constructor() {
|
|
5
|
+
this._blocks = new Map();
|
|
6
|
+
}
|
|
7
|
+
registerBlock(block) {
|
|
8
|
+
this._blocks.set(block.name, block);
|
|
9
|
+
return this;
|
|
10
|
+
}
|
|
11
|
+
getBlock(name) {
|
|
12
|
+
return this._blocks.get(name);
|
|
13
|
+
}
|
|
14
|
+
get Blocks() {
|
|
15
|
+
return Array.from(this._blocks.values());
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.default = TaxReport;
|