@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.
@@ -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"}