@autohubs/lib-cte 0.2.2 → 0.3.0
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/README.md +35 -3
- package/dist/application/use-cases/GerarDacteUseCase.d.ts +11 -0
- package/dist/application/use-cases/GerarDacteUseCase.d.ts.map +1 -0
- package/dist/application/use-cases/GerarDacteUseCase.js +25 -0
- package/dist/application/use-cases/GerarDacteUseCase.js.map +1 -0
- package/dist/core/CTeCore.d.ts +7 -0
- package/dist/core/CTeCore.d.ts.map +1 -1
- package/dist/core/CTeCore.js +10 -0
- package/dist/core/CTeCore.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/infra/dacte/DacteGenerator.d.ts +30 -0
- package/dist/infra/dacte/DacteGenerator.d.ts.map +1 -0
- package/dist/infra/dacte/DacteGenerator.js +505 -0
- package/dist/infra/dacte/DacteGenerator.js.map +1 -0
- package/dist/infra/dacte/barcode128.d.ts +20 -0
- package/dist/infra/dacte/barcode128.d.ts.map +1 -0
- package/dist/infra/dacte/barcode128.js +80 -0
- package/dist/infra/dacte/barcode128.js.map +1 -0
- package/dist/infra/dacte/xml-parser.d.ts +100 -0
- package/dist/infra/dacte/xml-parser.d.ts.map +1 -0
- package/dist/infra/dacte/xml-parser.js +287 -0
- package/dist/infra/dacte/xml-parser.js.map +1 -0
- package/package.json +10 -1
|
@@ -0,0 +1,505 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.DacteGenerator = void 0;
|
|
37
|
+
const barcode128_1 = require("./barcode128");
|
|
38
|
+
const CTeError_1 = require("../../shared/errors/CTeError");
|
|
39
|
+
const M = 28;
|
|
40
|
+
const W = 595.28 - M * 2;
|
|
41
|
+
const F = 7;
|
|
42
|
+
const FS = 6;
|
|
43
|
+
const FL = 13;
|
|
44
|
+
const P = 3;
|
|
45
|
+
const RH = 20;
|
|
46
|
+
const LC = '#666666';
|
|
47
|
+
async function loadPdfKit() {
|
|
48
|
+
try {
|
|
49
|
+
const mod = await Promise.resolve().then(() => __importStar(require('pdfkit')));
|
|
50
|
+
return mod.default ?? mod;
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
throw new CTeError_1.CTeError('pdfkit nao esta instalado. Instale com: npm install pdfkit');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
class DacteGenerator {
|
|
57
|
+
async generate(data) {
|
|
58
|
+
const PDFDocument = await loadPdfKit();
|
|
59
|
+
return new Promise((resolve, reject) => {
|
|
60
|
+
const doc = new PDFDocument({ size: 'A4', margin: M, bufferPages: true });
|
|
61
|
+
const chunks = [];
|
|
62
|
+
doc.on('data', (chunk) => chunks.push(chunk));
|
|
63
|
+
doc.on('end', () => resolve(Buffer.concat(chunks)));
|
|
64
|
+
doc.on('error', reject);
|
|
65
|
+
try {
|
|
66
|
+
this.renderPage(doc, data);
|
|
67
|
+
doc.end();
|
|
68
|
+
}
|
|
69
|
+
catch (err) {
|
|
70
|
+
reject(err);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
renderPage(doc, d) {
|
|
75
|
+
let y = M;
|
|
76
|
+
y = this.canhoto(doc, d, y);
|
|
77
|
+
y = this.cabecalho(doc, d, y);
|
|
78
|
+
y = this.naturezaProtocolo(doc, d, y);
|
|
79
|
+
y = this.inicioTermino(doc, d, y);
|
|
80
|
+
y = this.pessoa2col(doc, 'REMETENTE', d.remetente, 'DESTINATARIO', d.destinatario, y);
|
|
81
|
+
y = this.pessoa2col(doc, 'EXPEDIDOR', d.expedidor, 'RECEBEDOR', d.recebedor, y);
|
|
82
|
+
y = this.tomador(doc, d, y);
|
|
83
|
+
y = this.carga(doc, d, y);
|
|
84
|
+
y = this.componentes(doc, d, y);
|
|
85
|
+
y = this.impostos(doc, d, y);
|
|
86
|
+
y = this.documentosOriginarios(doc, d, y);
|
|
87
|
+
y += 2;
|
|
88
|
+
y = this.observacoes(doc, d, y);
|
|
89
|
+
if (d.rodoviario) {
|
|
90
|
+
y += 2;
|
|
91
|
+
y = this.modalRodoviario(doc, d, y);
|
|
92
|
+
}
|
|
93
|
+
y += 2;
|
|
94
|
+
this.usoEmissorFisco(doc, d, y);
|
|
95
|
+
}
|
|
96
|
+
// === CANHOTO ===
|
|
97
|
+
canhoto(doc, d, y) {
|
|
98
|
+
const h = 40;
|
|
99
|
+
const c1 = W * 0.62, c2 = W * 0.23, c3 = W * 0.15;
|
|
100
|
+
this.box(doc, M, y, c1, h);
|
|
101
|
+
doc.fontSize(FS).font('Helvetica');
|
|
102
|
+
doc.text('DECLARO QUE RECEBI OS VOLUMES DESTE CONHECIMENTO EM PERFEITO ESTADO PELO QUE DOU POR CUMPRIDO O PRESENTE CONTRATO DE TRANSPORTE', M + P, y + P, { width: c1 - P * 2 });
|
|
103
|
+
doc.text('NOME', M + P, y + 20, {});
|
|
104
|
+
doc.text('RG', M + P, y + 32, {});
|
|
105
|
+
doc.text('ASSINATURA / CARIMBO', M + c1 / 2, y + 32, {});
|
|
106
|
+
const x2 = M + c1;
|
|
107
|
+
this.box(doc, x2, y, c2, h);
|
|
108
|
+
this.label(doc, 'TERMINO DA PRESTACAO - DATA/HORA', x2 + P, y + P);
|
|
109
|
+
this.label(doc, 'INICIO DA PRESTACAO - DATA/HORA', x2 + P, y + h / 2 + P);
|
|
110
|
+
const x3 = M + c1 + c2;
|
|
111
|
+
this.box(doc, x3, y, c3, h);
|
|
112
|
+
doc.fontSize(FS).font('Helvetica-Bold');
|
|
113
|
+
doc.text('CT-E', x3, y + 4, { width: c3, align: 'center' });
|
|
114
|
+
doc.fontSize(F).font('Helvetica-Bold');
|
|
115
|
+
doc.text(`N. ${d.numero.padStart(9, '0').replace(/(\d{3})(\d{3})(\d{3})/, '$1.$2.$3')}`, x3, y + 18, {
|
|
116
|
+
width: c3, align: 'center'
|
|
117
|
+
});
|
|
118
|
+
doc.text(`Serie ${d.serie.padStart(3, '0')}`, x3, y + 28, { width: c3, align: 'center' });
|
|
119
|
+
y += h;
|
|
120
|
+
doc.dash(4, { space: 2 }).lineWidth(0.5);
|
|
121
|
+
doc.moveTo(M, y + 4).lineTo(M + W, y + 4).stroke('#000000');
|
|
122
|
+
doc.undash();
|
|
123
|
+
return y + 8;
|
|
124
|
+
}
|
|
125
|
+
// === CABECALHO ===
|
|
126
|
+
cabecalho(doc, d, y) {
|
|
127
|
+
const h = 92;
|
|
128
|
+
const c1 = W * 0.38, c2 = W * 0.47, c3 = W * 0.15;
|
|
129
|
+
// Col 1: Emitente
|
|
130
|
+
this.box(doc, M, y, c1, h);
|
|
131
|
+
doc.fontSize(9).font('Helvetica-Bold').fillColor('#000000');
|
|
132
|
+
doc.text(d.emitente.nome, M + P, y + P, { width: c1 - P * 2 });
|
|
133
|
+
doc.fontSize(FS).font('Helvetica');
|
|
134
|
+
const emitInfo = [
|
|
135
|
+
d.emitente.endereco,
|
|
136
|
+
d.emitente.bairro,
|
|
137
|
+
`${this.fmtCep(d.emitente.cep)} - ${d.emitente.cidade} - ${d.emitente.uf}`,
|
|
138
|
+
d.emitente.fone ? `Fone/Fax: ${d.emitente.fone}` : ''
|
|
139
|
+
].filter(Boolean).join('\n');
|
|
140
|
+
doc.text(emitInfo, M + P, y + 16, { width: c1 - P * 2 });
|
|
141
|
+
doc.fontSize(F).font('Helvetica');
|
|
142
|
+
doc.text(`CNPJ/CPF: ${this.fmtDoc(d.emitente.cnpj)} Insc.Estadual: ${d.emitente.ie}`, M + P, y + h - 12, {
|
|
143
|
+
width: c1 - P * 2
|
|
144
|
+
});
|
|
145
|
+
// Col 2: DACTE title + identificacao + barcode
|
|
146
|
+
const x2 = M + c1;
|
|
147
|
+
this.box(doc, x2, y, c2, h);
|
|
148
|
+
doc.fontSize(FL).font('Helvetica-Bold');
|
|
149
|
+
doc.text('DACTE', x2, y + 3, { width: c2, align: 'center' });
|
|
150
|
+
doc.fontSize(FS).font('Helvetica');
|
|
151
|
+
doc.text('Documento Auxiliar do Conhecimento de Transporte Eletronico', x2 + 4, y + 17, {
|
|
152
|
+
width: c2 - 8, align: 'center'
|
|
153
|
+
});
|
|
154
|
+
const idRowY = y + 30;
|
|
155
|
+
const idCols = [
|
|
156
|
+
['MODELO', d.modelo], ['SERIE', d.serie], ['NUMERO', d.numero], ['FL', '1/1']
|
|
157
|
+
];
|
|
158
|
+
let ix = x2 + 4;
|
|
159
|
+
const idColW = (c2 - 8) * 0.16;
|
|
160
|
+
for (const [lbl, val] of idCols) {
|
|
161
|
+
this.label(doc, lbl, ix, idRowY);
|
|
162
|
+
this.val(doc, val, ix, idRowY + 8, idColW, true);
|
|
163
|
+
ix += idColW;
|
|
164
|
+
}
|
|
165
|
+
this.label(doc, 'DATA E HORA DE EMISSAO', ix, idRowY);
|
|
166
|
+
this.val(doc, d.dataEmissao, ix, idRowY + 8, (c2 - 8) * 0.36 - 4);
|
|
167
|
+
this.renderBarcode(doc, d.chaveAcesso, x2 + 10, y + 48, c2 - 20, 20);
|
|
168
|
+
doc.fontSize(FS).font('Helvetica-Bold');
|
|
169
|
+
doc.text('CHAVE DE ACESSO', x2 + P, y + 70, {});
|
|
170
|
+
doc.fontSize(F).font('Helvetica');
|
|
171
|
+
doc.text(d.chaveAcesso.replace(/(\d{4})/g, '$1 ').trim(), x2 + P, y + 79, { width: c2 - P * 2 });
|
|
172
|
+
// Col 3: Modal
|
|
173
|
+
const x3 = M + c1 + c2;
|
|
174
|
+
this.box(doc, x3, y, c3, h);
|
|
175
|
+
doc.fontSize(FS).font('Helvetica').fillColor(LC);
|
|
176
|
+
doc.text('MODAL', x3, y + P, { width: c3, align: 'center' });
|
|
177
|
+
doc.fillColor('#000000').fontSize(F).font('Helvetica-Bold');
|
|
178
|
+
doc.text(d.modalTexto, x3, y + 12, { width: c3, align: 'center' });
|
|
179
|
+
y += h;
|
|
180
|
+
// Tipo CTe / Tipo Servico
|
|
181
|
+
const tRowH = RH;
|
|
182
|
+
this.box(doc, M, y, W * 0.5, tRowH);
|
|
183
|
+
this.label(doc, 'TIPO DO CTE', M + P, y + P);
|
|
184
|
+
this.val(doc, this.tipoCteTexto(d.tipoCTe), M + P, y + 11, undefined, true);
|
|
185
|
+
this.box(doc, M + W * 0.5, y, W * 0.5, tRowH);
|
|
186
|
+
this.label(doc, 'TIPO DO SERVICO', M + W * 0.5 + P, y + P);
|
|
187
|
+
this.val(doc, d.tipoServico, M + W * 0.5 + P, y + 11, undefined, true);
|
|
188
|
+
return y + tRowH;
|
|
189
|
+
}
|
|
190
|
+
tipoCteTexto(tpCTe) {
|
|
191
|
+
const map = {
|
|
192
|
+
'0': 'Normal', '1': 'Complemento de Valores', '2': 'Anulacao', '3': 'Substituto'
|
|
193
|
+
};
|
|
194
|
+
return map[tpCTe] ?? tpCTe;
|
|
195
|
+
}
|
|
196
|
+
// === CFOP/NATUREZA + PROTOCOLO ===
|
|
197
|
+
naturezaProtocolo(doc, d, y) {
|
|
198
|
+
const c1 = W * 0.5, c2 = W * 0.5;
|
|
199
|
+
this.box(doc, M, y, c1, RH);
|
|
200
|
+
this.label(doc, 'CFOP - NATUREZA DA PRESTACAO', M + P, y + P);
|
|
201
|
+
this.val(doc, `${d.cfop} - ${d.naturezaOperacao}`, M + P, y + 11, c1 - P * 2, true);
|
|
202
|
+
this.box(doc, M + c1, y, c2, RH);
|
|
203
|
+
this.label(doc, 'PROTOCOLO DE AUTORIZACAO DE USO', M + c1 + P, y + P);
|
|
204
|
+
this.val(doc, `${d.protocolo} - ${d.dataAutorizacao}`, M + c1 + P, y + 11, c2 - P * 2, true);
|
|
205
|
+
return y + RH;
|
|
206
|
+
}
|
|
207
|
+
// === INICIO / TERMINO DA PRESTACAO ===
|
|
208
|
+
inicioTermino(doc, d, y) {
|
|
209
|
+
const c1 = W * 0.5, c2 = W * 0.5;
|
|
210
|
+
this.box(doc, M, y, c1, RH);
|
|
211
|
+
this.label(doc, 'INICIO DA PRESTACAO', M + P, y + P);
|
|
212
|
+
this.val(doc, `${d.origemMunicipio} - ${d.origemUf}`, M + P, y + 11, c1 - P * 2, true);
|
|
213
|
+
this.box(doc, M + c1, y, c2, RH);
|
|
214
|
+
this.label(doc, 'TERMINO DA PRESTACAO', M + c1 + P, y + P);
|
|
215
|
+
this.val(doc, `${d.destinoMunicipio} - ${d.destinoUf}`, M + c1 + P, y + 11, c2 - P * 2, true);
|
|
216
|
+
return y + RH;
|
|
217
|
+
}
|
|
218
|
+
// === REMETENTE/DESTINATARIO, EXPEDIDOR/RECEBEDOR ===
|
|
219
|
+
pessoa2col(doc, tituloEsq, esq, tituloDir, dir, y) {
|
|
220
|
+
if (!esq && !dir)
|
|
221
|
+
return y;
|
|
222
|
+
const h = 5 * 10 + 6;
|
|
223
|
+
const c = W / 2;
|
|
224
|
+
this.pessoaBox(doc, tituloEsq, esq, M, y, c, h);
|
|
225
|
+
this.pessoaBox(doc, tituloDir, dir, M + c, y, c, h);
|
|
226
|
+
return y + h;
|
|
227
|
+
}
|
|
228
|
+
pessoaBox(doc, titulo, p, x, y, w, h) {
|
|
229
|
+
this.box(doc, x, y, w, h);
|
|
230
|
+
doc.fontSize(FS).font('Helvetica-Bold').fillColor('#000000');
|
|
231
|
+
doc.text(titulo, x + P, y + P, {});
|
|
232
|
+
doc.fontSize(F).font('Helvetica-Bold');
|
|
233
|
+
doc.text(p?.nome ?? '', x + 70, y + P, { width: w - 70 - P });
|
|
234
|
+
let ly = y + 12;
|
|
235
|
+
this.label(doc, 'ENDERECO', x + P, ly);
|
|
236
|
+
this.val(doc, p?.endereco ?? ',', x + 55, ly, w - 55 - P);
|
|
237
|
+
ly += 10;
|
|
238
|
+
this.label(doc, 'MUNICIPIO', x + P, ly);
|
|
239
|
+
this.val(doc, p ? `${p.cidade ?? ''} - ${p.cep ? this.fmtCep(p.cep) : ''}` : '-', x + 55, ly, w - 55 - P);
|
|
240
|
+
ly += 10;
|
|
241
|
+
this.label(doc, 'CNPJ/CPF', x + P, ly);
|
|
242
|
+
this.val(doc, p?.cnpjCpf ? this.fmtDoc(p.cnpjCpf) : '', x + 55, ly, w * 0.5 - 55 - P);
|
|
243
|
+
this.label(doc, 'INSC. ESTADUAL', x + w * 0.5, ly);
|
|
244
|
+
this.val(doc, p?.ie ?? '', x + w * 0.5 + 55, ly, w * 0.5 - 55 - P);
|
|
245
|
+
ly += 10;
|
|
246
|
+
this.label(doc, 'PAIS', x + P, ly);
|
|
247
|
+
this.val(doc, p?.pais ?? '', x + 55, ly, (w - 55 - P) * 0.6);
|
|
248
|
+
this.label(doc, 'FONE', x + w * 0.6, ly);
|
|
249
|
+
this.val(doc, p?.fone ?? '', x + w * 0.6 + 25, ly);
|
|
250
|
+
}
|
|
251
|
+
// === TOMADOR ===
|
|
252
|
+
tomador(doc, d, y) {
|
|
253
|
+
if (!d.tomador)
|
|
254
|
+
return y;
|
|
255
|
+
const h = 32;
|
|
256
|
+
this.box(doc, M, y, W, h);
|
|
257
|
+
const t = d.tomador;
|
|
258
|
+
doc.fontSize(FS).font('Helvetica-Bold').fillColor('#000000');
|
|
259
|
+
doc.text('TOMADOR DO SERVICO', M + P, y + P, {});
|
|
260
|
+
doc.fontSize(F);
|
|
261
|
+
doc.text(t.nome, M + 90, y + P, { width: W * 0.5 });
|
|
262
|
+
this.label(doc, 'MUNICIPIO', M + W * 0.65, y + P);
|
|
263
|
+
this.val(doc, t.cidade ?? '', M + W * 0.65 + 50, y + P, W * 0.15);
|
|
264
|
+
this.label(doc, 'UF', M + W * 0.85, y + P);
|
|
265
|
+
this.val(doc, t.uf ?? '', M + W * 0.85 + 15, y + P);
|
|
266
|
+
this.label(doc, 'CEP', M + W * 0.92, y + P);
|
|
267
|
+
this.val(doc, t.cep ? this.fmtCep(t.cep) : '', M + W * 0.92 + 18, y + P);
|
|
268
|
+
this.label(doc, 'ENDERECO', M + P, y + 12);
|
|
269
|
+
this.val(doc, t.endereco ?? '', M + 55, y + 12, W - 60);
|
|
270
|
+
this.label(doc, 'CNPJ/CPF', M + P, y + 22);
|
|
271
|
+
this.val(doc, this.fmtDoc(t.cnpjCpf), M + 55, y + 22, W * 0.2);
|
|
272
|
+
this.label(doc, 'INSCRICAO ESTADUAL', M + W * 0.35, y + 22);
|
|
273
|
+
this.val(doc, t.ie ?? '', M + W * 0.35 + 75, y + 22);
|
|
274
|
+
this.label(doc, 'PAIS', M + W * 0.65, y + 22);
|
|
275
|
+
this.val(doc, t.pais ?? '', M + W * 0.65 + 20, y + 22);
|
|
276
|
+
this.label(doc, 'FONE', M + W * 0.82, y + 22);
|
|
277
|
+
this.val(doc, t.fone ?? '', M + W * 0.82 + 22, y + 22);
|
|
278
|
+
return y + h;
|
|
279
|
+
}
|
|
280
|
+
// === PRODUTO PREDOMINANTE / CARGA ===
|
|
281
|
+
carga(doc, d, y) {
|
|
282
|
+
const c1 = W * 0.35, c2 = W * 0.45, c3 = W * 0.20;
|
|
283
|
+
this.box(doc, M, y, c1, RH);
|
|
284
|
+
this.label(doc, 'PRODUTO PREDOMINANTE', M + P, y + P);
|
|
285
|
+
this.val(doc, d.produtoPredominante, M + P, y + 11, c1 - P * 2, true);
|
|
286
|
+
this.box(doc, M + c1, y, c2, RH);
|
|
287
|
+
this.label(doc, 'OUTRAS CARACTERISTICAS DA CARGA', M + c1 + P, y + P);
|
|
288
|
+
this.val(doc, d.outrasCaracteristicasCarga ?? '', M + c1 + P, y + 11, c2 - P * 2);
|
|
289
|
+
this.box(doc, M + c1 + c2, y, c3, RH);
|
|
290
|
+
this.label(doc, 'VALOR TOTAL DA CARGA', M + c1 + c2 + P, y + P);
|
|
291
|
+
this.valRight(doc, this.fmtNum(d.prestacao.valorTotal, 2), M + c1 + c2 + P, y + 11, c3 - P * 2);
|
|
292
|
+
y += RH;
|
|
293
|
+
const q = [W * 0.25, W * 0.25, W * 0.25, W * 0.13, W * 0.12];
|
|
294
|
+
let x = M;
|
|
295
|
+
for (let i = 0; i < 3; i++) {
|
|
296
|
+
this.box(doc, x, y, q[i], RH);
|
|
297
|
+
this.label(doc, 'TP MED / UN. MED', x + P, y + P);
|
|
298
|
+
if (i === 0 && d.pesoBruto) {
|
|
299
|
+
this.val(doc, `PESO BRUTO\n${this.fmtNum(d.pesoBruto, 4)} KG`, x + P, y + 10, q[i] - P * 2, true);
|
|
300
|
+
}
|
|
301
|
+
x += q[i];
|
|
302
|
+
}
|
|
303
|
+
this.box(doc, x, y, q[3], RH);
|
|
304
|
+
this.label(doc, 'CUBAGEM(M3)', x + P, y + P);
|
|
305
|
+
x += q[3];
|
|
306
|
+
this.box(doc, x, y, q[4], RH);
|
|
307
|
+
this.label(doc, 'QTDE(VOL)', x + P, y + P);
|
|
308
|
+
this.val(doc, d.quantidadeVolumes ? this.fmtNum(d.quantidadeVolumes, 3) : '', x + P, y + 11, q[4] - P * 2, true);
|
|
309
|
+
return y + RH;
|
|
310
|
+
}
|
|
311
|
+
// === COMPONENTES DO VALOR DA PRESTACAO ===
|
|
312
|
+
componentes(doc, d, y) {
|
|
313
|
+
this.sectionTitle(doc, 'COMPONENTES DO VALOR DA PRESTACAO DO SERVICO', y);
|
|
314
|
+
y += 9;
|
|
315
|
+
const c1 = W * 0.27, c2 = W * 0.27, c3 = W * 0.27, c4 = W * 0.19;
|
|
316
|
+
const lh = 9;
|
|
317
|
+
const linhas = Math.max(1, Math.ceil(d.prestacao.componentes.length / 3));
|
|
318
|
+
doc.fontSize(FS).font('Helvetica');
|
|
319
|
+
for (let i = 0; i < linhas; i++) {
|
|
320
|
+
const rowY = y + i * lh;
|
|
321
|
+
for (let col = 0; col < 3; col++) {
|
|
322
|
+
const comp = d.prestacao.componentes[i * 3 + col];
|
|
323
|
+
if (!comp)
|
|
324
|
+
continue;
|
|
325
|
+
const cx = M + [c1, c2, c3][col] * 0 + [0, c1, c1 + c2][col];
|
|
326
|
+
doc.text(comp.nome.toUpperCase(), cx + P, rowY, {});
|
|
327
|
+
doc.font('Helvetica-Bold');
|
|
328
|
+
doc.text(this.fmtNum(comp.valor, 2), cx + [c1, c2, c3][col] - 45, rowY, { width: 42, align: 'right' });
|
|
329
|
+
doc.font('Helvetica');
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
const boxH = Math.max(linhas * lh + 4, 40);
|
|
333
|
+
this.box(doc, M, y - 2, c1 + c2 + c3, boxH);
|
|
334
|
+
this.box(doc, M + c1 + c2 + c3, y - 2, c4, boxH);
|
|
335
|
+
doc.fontSize(FS).font('Helvetica');
|
|
336
|
+
doc.text('VALOR TOTAL DO SERVICO', M + c1 + c2 + c3 + P, y - 1, { width: c4 - P * 2, align: 'center' });
|
|
337
|
+
doc.fontSize(9).font('Helvetica-Bold');
|
|
338
|
+
doc.text(`${this.fmtNum(d.prestacao.valorTotal, 2)}`, M + c1 + c2 + c3, y + 7, { width: c4, align: 'center' });
|
|
339
|
+
doc.fontSize(FS).font('Helvetica');
|
|
340
|
+
doc.text('VALOR A RECEBER', M + c1 + c2 + c3 + P, y + 19, { width: c4 - P * 2, align: 'center' });
|
|
341
|
+
doc.fontSize(9).font('Helvetica-Bold');
|
|
342
|
+
doc.text(`${this.fmtNum(d.prestacao.valorReceber, 2)}`, M + c1 + c2 + c3, y + 27, {
|
|
343
|
+
width: c4, align: 'center'
|
|
344
|
+
});
|
|
345
|
+
return y + boxH;
|
|
346
|
+
}
|
|
347
|
+
// === INFORMACOES RELATIVAS AO IMPOSTO ===
|
|
348
|
+
impostos(doc, d, y) {
|
|
349
|
+
this.sectionTitle(doc, 'INFORMACOES RELATIVAS AO IMPOSTO', y);
|
|
350
|
+
y += 9;
|
|
351
|
+
const cols = [
|
|
352
|
+
{ label: 'SITUACAO TRIBUTARIA', width: W * 0.34 },
|
|
353
|
+
{ label: 'BASE DE CALCULO', width: W * 0.16 },
|
|
354
|
+
{ label: 'ALIQ ICMS', width: W * 0.12 },
|
|
355
|
+
{ label: 'VALOR ICMS', width: W * 0.16 },
|
|
356
|
+
{ label: '% RED. BC ICMS', width: W * 0.11 },
|
|
357
|
+
{ label: 'VALOR ICMS ST', width: W * 0.11 }
|
|
358
|
+
];
|
|
359
|
+
const h = RH;
|
|
360
|
+
this.box(doc, M, y, W, h);
|
|
361
|
+
let x = M;
|
|
362
|
+
for (const c of cols) {
|
|
363
|
+
this.label(doc, c.label, x + P, y + P);
|
|
364
|
+
x += c.width;
|
|
365
|
+
}
|
|
366
|
+
const imp = d.impostos[0];
|
|
367
|
+
x = M;
|
|
368
|
+
doc.fontSize(F).font(imp ? 'Helvetica-Bold' : 'Helvetica');
|
|
369
|
+
doc.fillColor('#000000');
|
|
370
|
+
doc.text(imp?.situacaoTributaria ?? '', x + P, y + 11, { width: cols[0].width - P * 2 });
|
|
371
|
+
x += cols[0].width;
|
|
372
|
+
doc.text(imp ? this.fmtNum(imp.baseCalculo, 2) : '', x + P, y + 11, { width: cols[1].width - P * 2 });
|
|
373
|
+
x += cols[1].width;
|
|
374
|
+
doc.text(imp ? this.fmtNum(imp.aliquota, 2) : '', x + P, y + 11, { width: cols[2].width - P * 2 });
|
|
375
|
+
x += cols[2].width;
|
|
376
|
+
doc.text(imp ? this.fmtNum(imp.valor, 2) : '', x + P, y + 11, { width: cols[3].width - P * 2 });
|
|
377
|
+
x += cols[3].width;
|
|
378
|
+
doc.text(imp?.reducaoBc ? this.fmtNum(imp.reducaoBc, 2) : '', x + P, y + 11, { width: cols[4].width - P * 2 });
|
|
379
|
+
x += cols[4].width;
|
|
380
|
+
doc.text(imp?.icmsSubstituicao ? this.fmtNum(imp.icmsSubstituicao, 2) : '', x + P, y + 11, {
|
|
381
|
+
width: cols[5].width - P * 2
|
|
382
|
+
});
|
|
383
|
+
return y + h;
|
|
384
|
+
}
|
|
385
|
+
// === DOCUMENTOS ORIGINARIOS ===
|
|
386
|
+
documentosOriginarios(doc, d, y) {
|
|
387
|
+
this.sectionTitle(doc, 'DOCUMENTOS ORIGINARIOS', y);
|
|
388
|
+
y += 9;
|
|
389
|
+
// Uma linha por documento (nao duas colunas lado a lado): a chave da
|
|
390
|
+
// NF-e referenciada tem 44 digitos e nao cabe numa coluna estreita.
|
|
391
|
+
const cw = [W * 0.10, W * 0.62, W * 0.28];
|
|
392
|
+
const headerLabels = ['TIPO DOC', 'CNPJ/CHAVE/OBS', 'SERIE/NRO. DOCUMENTO'];
|
|
393
|
+
const linhas = Math.max(1, d.documentosOriginarios.length);
|
|
394
|
+
const h = 9 + linhas * 9;
|
|
395
|
+
this.box(doc, M, y, W, h);
|
|
396
|
+
let x = M;
|
|
397
|
+
doc.fontSize(FS).font('Helvetica').fillColor(LC);
|
|
398
|
+
for (let i = 0; i < cw.length; i++) {
|
|
399
|
+
doc.text(headerLabels[i], x + P, y + P, { width: cw[i] - P * 2 });
|
|
400
|
+
x += cw[i];
|
|
401
|
+
}
|
|
402
|
+
doc.fillColor('#000000').font('Helvetica');
|
|
403
|
+
for (let i = 0; i < d.documentosOriginarios.length; i++) {
|
|
404
|
+
const rowY = y + 9 + i * 9;
|
|
405
|
+
const item = d.documentosOriginarios[i];
|
|
406
|
+
doc.text(item.tipo, M + P, rowY, { width: cw[0] - P * 2 });
|
|
407
|
+
doc.text(item.cnpjCpfEmitente, M + cw[0] + P, rowY, { width: cw[1] - P * 2, lineBreak: false });
|
|
408
|
+
doc.text(item.serieNumero, M + cw[0] + cw[1] + P, rowY, { width: cw[2] - P * 2 });
|
|
409
|
+
}
|
|
410
|
+
return y + h;
|
|
411
|
+
}
|
|
412
|
+
// === OBSERVACOES GERAIS ===
|
|
413
|
+
observacoes(doc, d, y) {
|
|
414
|
+
this.sectionTitle(doc, 'OBSERVACOES GERAIS', y);
|
|
415
|
+
y += 9;
|
|
416
|
+
const h = 36;
|
|
417
|
+
this.box(doc, M, y, W, h);
|
|
418
|
+
doc.fontSize(FS).font('Helvetica').fillColor('#000000');
|
|
419
|
+
doc.text(d.observacoes ?? '', M + P, y + P, { width: W - P * 2, height: h - P * 2 });
|
|
420
|
+
return y + h;
|
|
421
|
+
}
|
|
422
|
+
// === MODAL RODOVIARIO ===
|
|
423
|
+
modalRodoviario(doc, d, y) {
|
|
424
|
+
if (!d.rodoviario)
|
|
425
|
+
return y;
|
|
426
|
+
this.sectionTitle(doc, 'DADOS ESPECIFICOS DO MODAL RODOVIARIO', y);
|
|
427
|
+
y += 9;
|
|
428
|
+
const h = RH;
|
|
429
|
+
const c1 = W * 0.2, c2 = W * 0.8;
|
|
430
|
+
this.box(doc, M, y, c1, h);
|
|
431
|
+
this.label(doc, 'RNTRC DA EMPRESA', M + P, y + P);
|
|
432
|
+
this.val(doc, d.rodoviario.rntrc ?? '', M + P, y + 11, c1 - P * 2, true);
|
|
433
|
+
this.box(doc, M + c1, y, c2, h);
|
|
434
|
+
doc.fontSize(FS).font('Helvetica');
|
|
435
|
+
doc.text('ESTE CONHECIMENTO DE TRANSPORTE ATENDE A LEGISLACAO DE TRANSPORTE RODOVIARIO EM VIGOR', M + c1 + P, y + 6, { width: c2 - P * 2, align: 'center' });
|
|
436
|
+
return y + h;
|
|
437
|
+
}
|
|
438
|
+
// === USO EXCLUSIVO DO EMISSOR / RESERVADO AO FISCO ===
|
|
439
|
+
usoEmissorFisco(doc, d, y) {
|
|
440
|
+
const h = RH;
|
|
441
|
+
const c1 = W * 0.6, c2 = W * 0.4;
|
|
442
|
+
this.box(doc, M, y, c1, h);
|
|
443
|
+
this.label(doc, 'USO EXCLUSIVO DO EMISSOR DO CT-E', M + P, y + P);
|
|
444
|
+
this.box(doc, M + c1, y, c2, h);
|
|
445
|
+
this.label(doc, 'RESERVADO AO FISCO', M + c1 + P, y + P);
|
|
446
|
+
}
|
|
447
|
+
// === BARCODE ===
|
|
448
|
+
renderBarcode(doc, chave, x, y, maxW, h) {
|
|
449
|
+
try {
|
|
450
|
+
const bars = (0, barcode128_1.encodeCode128C)(chave);
|
|
451
|
+
const totalW = (0, barcode128_1.getBarcodeWidth)(bars);
|
|
452
|
+
const s = maxW / totalW;
|
|
453
|
+
for (const bar of bars) {
|
|
454
|
+
if (bar.isBar)
|
|
455
|
+
doc.rect(x + bar.x * s, y, bar.width * s, h).fill('black');
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
catch {
|
|
459
|
+
doc.fontSize(FS).font('Helvetica');
|
|
460
|
+
doc.text('CODIGO DE BARRAS INDISPONIVEL', x, y + h / 2, { width: maxW, align: 'center' });
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
// === HELPERS ===
|
|
464
|
+
box(doc, x, y, w, h) {
|
|
465
|
+
doc.lineWidth(0.5).rect(x, y, w, h).stroke('#000000');
|
|
466
|
+
}
|
|
467
|
+
sectionTitle(doc, title, y) {
|
|
468
|
+
doc.rect(M, y, W, 9).fill('#E0E0E0');
|
|
469
|
+
doc.fontSize(FS).font('Helvetica-Bold').fillColor('#000000');
|
|
470
|
+
doc.text(title, M + P, y + 1.5, { width: W });
|
|
471
|
+
}
|
|
472
|
+
label(doc, text, x, y) {
|
|
473
|
+
doc.fontSize(FS).font('Helvetica').fillColor(LC);
|
|
474
|
+
doc.text(text, x, y, { lineBreak: false });
|
|
475
|
+
doc.fillColor('#000000');
|
|
476
|
+
}
|
|
477
|
+
val(doc, text, x, y, w, bold) {
|
|
478
|
+
doc.fontSize(F).font(bold ? 'Helvetica-Bold' : 'Helvetica').fillColor('#000000');
|
|
479
|
+
doc.text(text, x, y, w ? { width: w, lineBreak: false } : { lineBreak: false });
|
|
480
|
+
}
|
|
481
|
+
valRight(doc, text, x, y, w) {
|
|
482
|
+
doc.fontSize(F).font('Helvetica-Bold').fillColor('#000000');
|
|
483
|
+
doc.text(text, x, y, { width: w, align: 'right' });
|
|
484
|
+
}
|
|
485
|
+
fmtDoc(value) {
|
|
486
|
+
if (value.length === 14)
|
|
487
|
+
return value.replace(/^(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/, '$1.$2.$3/$4-$5');
|
|
488
|
+
if (value.length === 11)
|
|
489
|
+
return value.replace(/^(\d{3})(\d{3})(\d{3})(\d{2})$/, '$1.$2.$3-$4');
|
|
490
|
+
return value;
|
|
491
|
+
}
|
|
492
|
+
fmtCep(cep) {
|
|
493
|
+
if (cep.length === 8)
|
|
494
|
+
return cep.replace(/^(\d{5})(\d{3})$/, '$1-$2');
|
|
495
|
+
return cep;
|
|
496
|
+
}
|
|
497
|
+
fmtNum(value, decimals) {
|
|
498
|
+
const num = parseFloat(value);
|
|
499
|
+
if (isNaN(num))
|
|
500
|
+
return value;
|
|
501
|
+
return num.toLocaleString('pt-BR', { minimumFractionDigits: decimals, maximumFractionDigits: decimals });
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
exports.DacteGenerator = DacteGenerator;
|
|
505
|
+
//# sourceMappingURL=DacteGenerator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DacteGenerator.js","sourceRoot":"","sources":["../../../src/infra/dacte/DacteGenerator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Code128C encoding para chave de acesso do CT-e (44 digitos numericos).
|
|
3
|
+
* Code128C codifica pares de digitos — ideal para strings numericas.
|
|
4
|
+
* Retorna array de larguras de barras (1 = barra fina, etc).
|
|
5
|
+
*/
|
|
6
|
+
export type BarcodeBar = {
|
|
7
|
+
readonly x: number;
|
|
8
|
+
readonly width: number;
|
|
9
|
+
readonly isBar: boolean;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Codifica uma string numerica (deve ter comprimento par) em Code128C.
|
|
13
|
+
* Retorna array de barras com posicao x e largura.
|
|
14
|
+
*/
|
|
15
|
+
export declare function encodeCode128C(digits: string): readonly BarcodeBar[];
|
|
16
|
+
/**
|
|
17
|
+
* Retorna a largura total do barcode em unidades.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getBarcodeWidth(bars: readonly BarcodeBar[]): number;
|
|
20
|
+
//# sourceMappingURL=barcode128.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"barcode128.d.ts","sourceRoot":"","sources":["../../../src/infra/dacte/barcode128.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgCH,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,UAAU,EAAE,CAkCpE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,UAAU,EAAE,GAAG,MAAM,CAInE"}
|