@treeunfe/danfe 1.0.3

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.
Files changed (29) hide show
  1. package/.rollup.cache/home/runner/work/treeunfe-dfe/treeunfe-dfe/packages/danfe/dist/src/NFCEGerarDanfe/NFCEGerarDanfe.d.ts +58 -0
  2. package/.rollup.cache/home/runner/work/treeunfe-dfe/treeunfe-dfe/packages/danfe/dist/src/NFCEGerarDanfe/NFCEGerarDanfe.js +495 -0
  3. package/.rollup.cache/home/runner/work/treeunfe-dfe/treeunfe-dfe/packages/danfe/dist/src/NFCEGerarDanfe/NFCEGerarDanfe.js.map +1 -0
  4. package/.rollup.cache/home/runner/work/treeunfe-dfe/treeunfe-dfe/packages/danfe/dist/src/NFEGerarDanfe/NFEGerarDanfe.d.ts +39 -0
  5. package/.rollup.cache/home/runner/work/treeunfe-dfe/treeunfe-dfe/packages/danfe/dist/src/NFEGerarDanfe/NFEGerarDanfe.js +1097 -0
  6. package/.rollup.cache/home/runner/work/treeunfe-dfe/treeunfe-dfe/packages/danfe/dist/src/NFEGerarDanfe/NFEGerarDanfe.js.map +1 -0
  7. package/.rollup.cache/home/runner/work/treeunfe-dfe/treeunfe-dfe/packages/danfe/dist/src/index.d.ts +2 -0
  8. package/.rollup.cache/home/runner/work/treeunfe-dfe/treeunfe-dfe/packages/danfe/dist/src/index.js +19 -0
  9. package/.rollup.cache/home/runner/work/treeunfe-dfe/treeunfe-dfe/packages/danfe/dist/src/index.js.map +1 -0
  10. package/.rollup.cache/home/runner/work/treeunfe-dfe/treeunfe-dfe/packages/danfe/dist/tsconfig.tsbuildinfo +1 -0
  11. package/.turbo/turbo-build.log +15 -0
  12. package/.turbo/turbo-typecheck.log +4 -0
  13. package/CHANGELOG.md +27 -0
  14. package/LICENSE.txt +221 -0
  15. package/dist/index.cjs +1591 -0
  16. package/dist/index.cjs.map +1 -0
  17. package/dist/index.mjs +1587 -0
  18. package/dist/index.mjs.map +1 -0
  19. package/dist/src/NFCEGerarDanfe/NFCEGerarDanfe.d.ts +58 -0
  20. package/dist/src/NFEGerarDanfe/NFEGerarDanfe.d.ts +39 -0
  21. package/dist/src/index.d.ts +2 -0
  22. package/dist/tsconfig.tsbuildinfo +1 -0
  23. package/package.json +63 -0
  24. package/rollup.config.js +94 -0
  25. package/src/NFCEGerarDanfe/NFCEGerarDanfe.ts +598 -0
  26. package/src/NFEGerarDanfe/NFEGerarDanfe.ts +1223 -0
  27. package/src/bwip-js.d.ts +16 -0
  28. package/src/index.ts +19 -0
  29. package/tsconfig.json +16 -0
@@ -0,0 +1,58 @@
1
+ /**
2
+ * @description :
3
+ * @author : Marco Aurélio Silva Lima
4
+ * @group :
5
+ * @created :
6
+ *
7
+ * MODIFICATION LOG
8
+ * - Version : 1.0.0
9
+ * - Date : 3/7/2025
10
+ * - Author : Cassio Seffrin
11
+ * - Modification :
12
+ **/
13
+ import { ValidaCPFCNPJ } from '@treeunfe/shared';
14
+ import PDFDocument from 'pdfkit';
15
+ import { Dest, DetProd, Emit, Ide, InfAdic, InfNFeSupl, NFEGerarDanfeProps, Pag, ProtNFe, Total, Transp } from '@treeunfe/types';
16
+ declare class NFCEGerarDanfe {
17
+ data: NFEGerarDanfeProps['data'];
18
+ chave: string;
19
+ enviada: boolean;
20
+ outputPath: string;
21
+ qrcodePath: string;
22
+ documento: InstanceType<typeof ValidaCPFCNPJ>;
23
+ protNFe: ProtNFe | undefined;
24
+ det: DetProd | DetProd[];
25
+ ide: Ide;
26
+ dest: Dest | undefined;
27
+ emit: Emit;
28
+ total: Total;
29
+ transp: Transp;
30
+ pag: Pag;
31
+ infAdic: InfAdic | undefined;
32
+ infNFeSupl: InfNFeSupl | undefined;
33
+ exibirMarcaDaguaDanfe?: boolean;
34
+ fontSize: number;
35
+ larguraPadrao: number;
36
+ documentWidth: number;
37
+ itemHeight: number;
38
+ doc: InstanceType<typeof PDFDocument>;
39
+ constructor(props: NFEGerarDanfeProps);
40
+ saveQRCode: (text: string) => Promise<void>;
41
+ getQRCodeBuffer: (text: string) => Promise<Buffer<ArrayBufferLike>>;
42
+ createDir(path: string): void;
43
+ generateBarcode(data: string): Promise<Buffer | null>;
44
+ centeredPos(texto: string): number;
45
+ ajustarPosicao(posicaoOriginal: number, novaLargura: number): number;
46
+ calculaPosicao(text: string): number;
47
+ drawHeader(_isFirstPage: boolean): void;
48
+ drawFooter(qrCodeBuffer: Buffer): void;
49
+ _buildHeader(): void;
50
+ _buildProdutos(): void;
51
+ _buildTotais(): void;
52
+ _buildFooter(qrCodeBuffer: Buffer): void;
53
+ generatePDF(exibirMarcaDaguaDanfe?: boolean): Promise<{
54
+ message: string;
55
+ success: boolean;
56
+ }>;
57
+ }
58
+ export default NFCEGerarDanfe;
@@ -0,0 +1,495 @@
1
+ /**
2
+ * @description :
3
+ * @author : Marco Aurélio Silva Lima
4
+ * @group :
5
+ * @created :
6
+ *
7
+ * MODIFICATION LOG
8
+ * - Version : 1.0.0
9
+ * - Date : 3/7/2025
10
+ * - Author : Cassio Seffrin
11
+ * - Modification :
12
+ **/
13
+ /*
14
+ * This file is part of Treeunfe DFe.
15
+ *
16
+ * Treeunfe DFe is free software: you can redistribute it and/or modify
17
+ * it under the terms of the GNU General Public License as published by
18
+ * the Free Software Foundation, either version 3 of the License, or
19
+ * (at your option) any later version.
20
+ *
21
+ * Treeunfe DFe is distributed in the hope that it will be useful,
22
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
23
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24
+ * GNU General Public License for more details.
25
+ *
26
+ * You should have received a copy of the GNU General Public License
27
+ * along with Treeunfe DFe. If not, see <https://www.gnu.org/licenses/>.
28
+ */
29
+ import { ValidaCPFCNPJ } from '@treeunfe/shared';
30
+ import { getDesTipoPag } from '@treeunfe/shared';
31
+ import bwipjs from 'bwip-js';
32
+ import { format, parseISO } from 'date-fns';
33
+ import fs from 'fs';
34
+ import path from 'path';
35
+ import PDFDocument from 'pdfkit';
36
+ import QRCode from 'qrcode';
37
+ import { fileURLToPath } from 'url';
38
+ const baseDir = path.dirname(fileURLToPath(import.meta.url));
39
+ const fontDir = process.env.NODE_ENV === 'production' ? '../resources/fonts/ARIAL.TTF' : '../../../../resources/fonts/ARIAL.TTF';
40
+ const fontDirBold = process.env.NODE_ENV === 'production' ? '../resources/fonts/ARIALBD.TTF' : '../../../../resources/fonts/ARIALBD.TTF';
41
+ class NFCEGerarDanfe {
42
+ constructor(props) {
43
+ this.saveQRCode = async (text) => {
44
+ const filePath = path.resolve(baseDir, this.qrcodePath);
45
+ try {
46
+ await QRCode.toFile(`${filePath}/qrcode.png`, text, {
47
+ color: {
48
+ dark: '#000000', // Cor do código
49
+ light: '#FFFFFF', // Cor de fundo
50
+ },
51
+ width: 300, // Largura da imagem
52
+ });
53
+ }
54
+ catch (error) {
55
+ console.error('Erro ao gerar o QR code:', error);
56
+ console.error(error.stack);
57
+ }
58
+ };
59
+ this.getQRCodeBuffer = async (text) => {
60
+ try {
61
+ const buffer = await QRCode.toBuffer(text, {
62
+ color: {
63
+ dark: '#000000', // Cor do código
64
+ light: '#FFFFFF', // Cor de fundo
65
+ },
66
+ width: 300, // Largura da imagem
67
+ });
68
+ return buffer;
69
+ }
70
+ catch (error) {
71
+ console.error('Erro ao gerar o QR code:', error);
72
+ console.error(error.stack);
73
+ throw new Error(`Erro ao gerar o QR code: ${error.message}`);
74
+ }
75
+ };
76
+ const { data, chave, outputPath, pageWidth } = props;
77
+ this.data = data;
78
+ this.chave = chave.trim();
79
+ this.outputPath = outputPath;
80
+ this.enviada = false; // Valor padrão
81
+ this.qrcodePath = outputPath; // Caminho padrão
82
+ this.documento = new ValidaCPFCNPJ(); // Inicialização correta
83
+ this.protNFe = data.protNFe;
84
+ const nfeData = Array.isArray(data.NFe) ? data.NFe[0] : data.NFe;
85
+ const { det, ide, emit, dest, total, transp, pag, infAdic } = nfeData.infNFe;
86
+ const infNFeSupl = nfeData.infNFeSupl;
87
+ this.det = det;
88
+ this.ide = ide;
89
+ this.emit = emit;
90
+ this.total = total;
91
+ this.transp = transp;
92
+ this.pag = pag;
93
+ this.infAdic = infAdic;
94
+ this.infNFeSupl = infNFeSupl;
95
+ if (dest)
96
+ this.dest = dest;
97
+ if (this.protNFe?.infProt.nProt) {
98
+ this.enviada = true;
99
+ }
100
+ function calculateHeight(itemsLength, itemHeight) {
101
+ const headerHeight = 34.22975675056; // Altura do cabeçalho
102
+ const footerHeight = 170; // Altura do rodapé -> 34.22975675056
103
+ // Altura total é a soma das alturas dos itens + cabeçalho + rodapé
104
+ return headerHeight + footerHeight + (itemsLength * itemHeight) + 5;
105
+ }
106
+ function calculateFontSize(width) {
107
+ // Aqui você pode ajustar a fórmula para atender às suas necessidades
108
+ return Math.min(width) * 0.02646;
109
+ }
110
+ this.larguraPadrao = 226.772;
111
+ this.documentWidth = pageWidth || 226.772; // 158.74
112
+ // const pageHeight = 300;
113
+ let itensLength = 1;
114
+ if (this.det instanceof Array) {
115
+ itensLength = this.det.length;
116
+ }
117
+ const fontSize = calculateFontSize(this.documentWidth);
118
+ this.fontSize = fontSize;
119
+ this.itemHeight = fontSize * 1.116;
120
+ const pageHeight = calculateHeight(itensLength, this.itemHeight);
121
+ const fontPath = path.resolve(baseDir, fontDir);
122
+ const fontPathBold = path.resolve(baseDir, fontDirBold);
123
+ this.doc = new PDFDocument({
124
+ margins: { top: 5.67, right: 5.67, bottom: 5.67, left: 5.67 },
125
+ size: [this.documentWidth, pageHeight],
126
+ bufferPages: true,
127
+ layout: 'portrait',
128
+ });
129
+ this.doc.registerFont('Arial', fontPath);
130
+ this.doc.registerFont('Arial-bold', fontPathBold);
131
+ }
132
+ createDir(path) {
133
+ if (!fs.existsSync(path)) {
134
+ fs.mkdirSync(path, { recursive: true });
135
+ }
136
+ }
137
+ async generateBarcode(data) {
138
+ try {
139
+ const png = await bwipjs.toBuffer({
140
+ bcid: 'code128', // Tipo de código de barras
141
+ text: data, // Dado a ser codificado
142
+ scaleX: 4, // Fator de escala
143
+ height: 14, // Altura da barra
144
+ includetext: false, // Incluir texto
145
+ });
146
+ const barcode = png.toString('base64');
147
+ const buffer = Buffer.from(barcode, 'base64');
148
+ const barcodeDir = this.qrcodePath;
149
+ const barcodeFilePath = path.join(barcodeDir, 'barcode.png');
150
+ // this.createDir(barcodeDir);
151
+ fs.writeFileSync(barcodeFilePath, buffer);
152
+ return buffer;
153
+ }
154
+ catch (err) {
155
+ console.error('Erro ao gerar código de barras:', err);
156
+ return null;
157
+ }
158
+ }
159
+ centeredPos(texto) {
160
+ const larguraPagina = this.doc.page.width;
161
+ const larguraTexto = this.doc.fontSize(this.fontSize).widthOfString(texto);
162
+ const posicaoX = (larguraPagina - larguraTexto) / 2;
163
+ return posicaoX;
164
+ }
165
+ ajustarPosicao(posicaoOriginal, novaLargura) {
166
+ return posicaoOriginal * (novaLargura / this.larguraPadrao);
167
+ }
168
+ calculaPosicao(text) {
169
+ const { right, left } = this.doc.page.margins;
170
+ const [pageWidth] = this.doc.page.size;
171
+ const textWidth = this.doc.widthOfString(text);
172
+ return Number(pageWidth) - textWidth - right - left;
173
+ }
174
+ drawHeader(_isFirstPage) {
175
+ this._buildHeader();
176
+ }
177
+ drawFooter(qrCodeBuffer) {
178
+ this._buildFooter(qrCodeBuffer);
179
+ }
180
+ _buildHeader() {
181
+ const CNPJCPF = this.emit.CNPJCPF?.toString();
182
+ const CNPJ = this.emit.CNPJ?.toString();
183
+ const CPF = this.emit.CPF?.toString();
184
+ const documento = this.documento.mascaraCnpjCpf(CNPJCPF || CNPJ || CPF || '');
185
+ const identificationJoined = `${this.emit.enderEmit.xLgr}, ${this.emit.enderEmit.nro}, ${this.emit.enderEmit.xBairro}, ${this.emit.enderEmit.UF}`;
186
+ /** IDENTIFICACAO EMITENTE */
187
+ const _buildIdentificacaoEmit = () => {
188
+ const centeredPosEmit = this.centeredPos(`CNPJ: ${documento} ${this.emit.xNome}`);
189
+ const centeredPosEnd = this.centeredPos(identificationJoined);
190
+ const centeredPosText = this.centeredPos('Documento Auxiliar da Nota Fiscal de Consumidor Eletrônica');
191
+ this.doc.font('Arial').fontSize(this.fontSize).text(`CNPJ: ${documento} `, centeredPosEmit, 2, {
192
+ lineBreak: false,
193
+ })
194
+ .font('Arial-bold').text(this.emit.xNome)
195
+ .fontSize(this.fontSize)
196
+ .font('Arial')
197
+ .text(identificationJoined, centeredPosEnd)
198
+ .text('Documento Auxiliar da Nota Fiscal de Consumidor Eletrônica', centeredPosText);
199
+ };
200
+ _buildIdentificacaoEmit();
201
+ }
202
+ _buildProdutos() {
203
+ const { right, left, top } = this.doc.page.margins;
204
+ const tableWidth = this.documentWidth - left - right;
205
+ const startX = left;
206
+ const tableTop = this.doc.y + top;
207
+ const columnRatios = {
208
+ codigo: 0.15,
209
+ descricao: 0.40,
210
+ qtdeUn: 0.15,
211
+ unit: 0.15,
212
+ total: 0.15
213
+ };
214
+ const columnSpacing = 0;
215
+ const columnWidths = {
216
+ codigo: tableWidth * columnRatios.codigo,
217
+ descricao: tableWidth * columnRatios.descricao,
218
+ qtdeUn: tableWidth * columnRatios.qtdeUn,
219
+ unit: tableWidth * columnRatios.unit,
220
+ total: tableWidth * columnRatios.total
221
+ };
222
+ const header = (top) => {
223
+ let x = startX;
224
+ this.doc.font('Arial-bold').fontSize(this.fontSize).text('Código', x, top, { width: columnWidths.codigo });
225
+ x += columnWidths.codigo + columnSpacing;
226
+ this.doc.text('Descrição', x, top, { width: columnWidths.descricao });
227
+ x += columnWidths.descricao + columnSpacing;
228
+ this.doc.text('Qtde', x, top, { width: columnWidths.qtdeUn, align: 'right' });
229
+ x += columnWidths.qtdeUn + columnSpacing;
230
+ this.doc.text('Unit', x, top, { width: columnWidths.unit, align: 'right' });
231
+ x += columnWidths.unit + columnSpacing;
232
+ this.doc.text('Total', x, top, { width: columnWidths.total, align: 'right' });
233
+ };
234
+ const row = (top, item) => {
235
+ const quant = parseFloat(String(item.prod.qCom || item.prod.qTrib)).toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 3 });
236
+ const valUnit = parseFloat(String(item.prod.vUnCom || item.prod.vUnTrib || '0')).toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
237
+ const valLiq = parseFloat(String(item.prod.vProd || '0')).toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
238
+ let x = startX;
239
+ this.doc.font('Arial').fontSize(this.fontSize).text(item.prod.cProd, x, top, {
240
+ width: columnWidths.codigo,
241
+ align: 'left'
242
+ });
243
+ x += columnWidths.codigo + columnSpacing;
244
+ const descricao = item.prod.xProd.slice(0, 120); // Limite de 120 caracteres
245
+ const textWidth = this.doc.widthOfString(descricao);
246
+ const lineCount = Math.ceil(textWidth / columnWidths.descricao);
247
+ const descricaoOptions = {
248
+ width: columnWidths.descricao,
249
+ align: 'left',
250
+ height: this.itemHeight * lineCount
251
+ };
252
+ this.doc.text(descricao, x, top, descricaoOptions);
253
+ x += columnWidths.descricao + columnSpacing;
254
+ this.doc.text(`${quant} ${item.prod.uCom}`, x, top, {
255
+ width: columnWidths.qtdeUn,
256
+ align: 'right'
257
+ });
258
+ x += columnWidths.qtdeUn + columnSpacing;
259
+ this.doc.text(valUnit, x, top, {
260
+ width: columnWidths.unit,
261
+ align: 'right'
262
+ });
263
+ x += columnWidths.unit + columnSpacing;
264
+ this.doc.text(valLiq, x, top, {
265
+ width: columnWidths.total,
266
+ align: 'right'
267
+ });
268
+ return descricaoOptions.height;
269
+ };
270
+ header(tableTop);
271
+ let y = tableTop + this.itemHeight;
272
+ if (this.det instanceof Array) {
273
+ this.det.forEach((prod) => {
274
+ row(y, prod);
275
+ y += this.itemHeight;
276
+ });
277
+ }
278
+ else {
279
+ row(y, this.det);
280
+ }
281
+ }
282
+ _buildTotais() {
283
+ let tableTop = this.doc.y + 5;
284
+ const quantidadeTotalDeItens = Array.isArray(this.det) ? this.det.length : 1;
285
+ let valTotal = 0;
286
+ let acrescimo = 0;
287
+ let desconto = 0;
288
+ if (Array.isArray(this.det)) {
289
+ // Calcula o valor total dos produtos
290
+ valTotal = this.det.reduce((sum, item) => sum + parseFloat(item.prod.vProd), 0);
291
+ // Calcula o total dos acréscimos
292
+ acrescimo = this.det.reduce((sum, item) => sum + (parseFloat(item.prod.vFrete || '0') + parseFloat(item.prod.vSeg || '0') + parseFloat(item.prod.vOutro || '0')), 0);
293
+ // Calcula o total dos descontos
294
+ desconto = this.det.reduce((sum, item) => sum + parseFloat(item.prod.vDesc || '0'), 0);
295
+ }
296
+ else {
297
+ // Calcula o valor total do produto, os acréscimos, e desconto caso não seja um array
298
+ valTotal = parseFloat(this.det.prod.vProd);
299
+ acrescimo = parseFloat(this.det.prod.vFrete || '0') + parseFloat(this.det.prod.vSeg || '0') + parseFloat(this.det.prod.vOutro || '0');
300
+ desconto = parseFloat(this.det.prod.vDesc || '0');
301
+ }
302
+ const valorTotal = valTotal.toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 3 });
303
+ const acrescimoTotal = acrescimo.toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 3 });
304
+ const descontoTotal = desconto.toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 3 });
305
+ this.doc.text('Qtd. total de itens', 2, tableTop);
306
+ this.doc.text(String(quantidadeTotalDeItens), this.calculaPosicao(String(quantidadeTotalDeItens)), tableTop, {
307
+ align: 'right',
308
+ });
309
+ tableTop += this.itemHeight;
310
+ this.doc.text('Valor total R$', 2, tableTop);
311
+ this.doc.text(valorTotal, this.calculaPosicao(valorTotal), tableTop, {
312
+ align: 'right',
313
+ });
314
+ tableTop += this.itemHeight;
315
+ if (desconto > 0) {
316
+ this.doc.text('Desconto R$', 2, tableTop);
317
+ this.doc.text(descontoTotal, this.calculaPosicao(descontoTotal), tableTop, {
318
+ align: 'right',
319
+ });
320
+ tableTop += this.itemHeight;
321
+ }
322
+ if (acrescimo > 0) {
323
+ this.doc.text('Acréscimo R$', 2, tableTop);
324
+ this.doc.text(acrescimoTotal, this.calculaPosicao(acrescimoTotal), tableTop, {
325
+ align: 'right',
326
+ });
327
+ tableTop += this.itemHeight;
328
+ }
329
+ if (desconto > 0 || acrescimo > 0) {
330
+ const totalPagar = parseFloat(String(valTotal + acrescimo - desconto)).toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 3 });
331
+ this.doc.font('Arial-bold').text('Valor a Pagar R$', 2, tableTop);
332
+ this.doc.text(totalPagar, this.calculaPosicao(totalPagar), tableTop, {
333
+ align: 'right',
334
+ });
335
+ }
336
+ tableTop += this.itemHeight + 2;
337
+ this.doc.font('Arial').text('FORMA PAGAMENTO', 2, tableTop);
338
+ // Tipos
339
+ let topTiposPag = tableTop;
340
+ if (Array.isArray(this.pag.detPag)) {
341
+ for (let pagto of this.pag.detPag) {
342
+ if (!pagto.xPag)
343
+ pagto.xPag = getDesTipoPag(pagto.tPag);
344
+ this.doc.text(pagto.xPag || 'Não informado', 2, topTiposPag + this.itemHeight);
345
+ topTiposPag += this.itemHeight;
346
+ }
347
+ }
348
+ else {
349
+ if (!this.pag.detPag.xPag)
350
+ this.pag.detPag.xPag = getDesTipoPag(this.pag.detPag.tPag);
351
+ this.doc.text(this.pag.detPag.xPag || 'Não informado', 2, topTiposPag + this.itemHeight);
352
+ }
353
+ this.doc.text('VALOR PAGO R$', this.calculaPosicao('VALOR PAGO R$'), tableTop, {
354
+ align: 'right',
355
+ });
356
+ // Valores
357
+ let topValPags = tableTop;
358
+ if (Array.isArray(this.pag.detPag)) {
359
+ for (let pagto of this.pag.detPag) {
360
+ const val = parseFloat(pagto.vPag).toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 3 });
361
+ this.doc.text(val, this.calculaPosicao(val), topValPags + this.itemHeight, {
362
+ align: 'right',
363
+ });
364
+ topValPags += this.itemHeight;
365
+ }
366
+ }
367
+ else {
368
+ const val = parseFloat(this.pag.detPag.vPag).toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 3 });
369
+ this.doc.text(val, this.calculaPosicao(val), topValPags + this.itemHeight, {
370
+ align: 'right',
371
+ });
372
+ }
373
+ tableTop = topValPags;
374
+ tableTop += 2 * this.itemHeight;
375
+ let valTroco = 0;
376
+ if (Array.isArray(this.pag.detPag)) {
377
+ valTroco = this.pag.detPag.reduce((sum, item) => sum + parseFloat(item.vTroco || '0'), 0);
378
+ }
379
+ else {
380
+ valTroco = parseFloat(this.pag.detPag.vTroco || '0');
381
+ }
382
+ const troco = valTroco.toLocaleString('pt-BR', { minimumFractionDigits: 2, maximumFractionDigits: 3 });
383
+ this.doc.text('Troco R$', 2, tableTop);
384
+ this.doc.text(troco, this.calculaPosicao(troco), tableTop, {
385
+ align: 'right',
386
+ });
387
+ }
388
+ _buildFooter(qrCodeBuffer) {
389
+ let tableTop = this.doc.y + 5;
390
+ this.doc.font('Arial-bold').text('Consulte pela Chave de Acesso em', 0, tableTop, {
391
+ align: 'center'
392
+ });
393
+ tableTop += this.itemHeight;
394
+ this.doc.font('Arial').text(this.infNFeSupl?.urlChave || '', 0, tableTop, {
395
+ align: 'center'
396
+ });
397
+ tableTop += this.itemHeight;
398
+ this.doc.text(this.protNFe?.infProt.chNFe || '', 0, tableTop, {
399
+ align: 'center'
400
+ });
401
+ tableTop += this.itemHeight;
402
+ // const filePath = path.resolve(baseDir, this.qrcodePath);
403
+ // this.doc.image(`${filePath}/qrcode.png`, 2, tableTop, { width: 70.87, height: 70.87 });
404
+ this.doc.image(qrCodeBuffer, 2, tableTop, { width: 70.87, height: 70.87 });
405
+ tableTop += 4;
406
+ let topBeforeQrCode = tableTop;
407
+ const CNPJCPF = this.documento.mascaraCnpjCpf(this.dest?.CNPJCPF || this.dest?.CNPJ || this.dest?.CPF || this.dest?.idEstrangeiro || '');
408
+ const xNome = this.dest?.xNome ?? 'Sem cliente identificado';
409
+ const xLgr = this.dest?.enderDest?.xLgr ?? '';
410
+ const nro = this.dest?.enderDest?.nro ?? '';
411
+ const xBairro = this.dest?.enderDest?.xBairro ?? null;
412
+ const xMun = this.dest?.enderDest?.xMun ?? '';
413
+ const UF = this.dest?.enderDest?.UF ?? '';
414
+ const enderecoPartes = [
415
+ xLgr && `${xLgr}`,
416
+ nro && `${nro}`,
417
+ xBairro && `bairro: ${xBairro}`,
418
+ xMun && `${xMun}`,
419
+ UF && `${UF}`
420
+ ].filter(Boolean);
421
+ const enderecoStr = enderecoPartes.join(', ');
422
+ if (CNPJCPF && CNPJCPF !== '') {
423
+ this.doc.font('Arial-bold')
424
+ .text(`CONSUMIDOR - DOC ${CNPJCPF}`, 75, tableTop, {
425
+ align: 'left',
426
+ lineGap: 1
427
+ })
428
+ .font('Arial')
429
+ .text(` - ${xNome}`, {
430
+ lineGap: 1
431
+ });
432
+ tableTop = this.doc.y + 4;
433
+ this.doc.text(enderecoStr, 75, tableTop);
434
+ tableTop = this.doc.y + 8;
435
+ }
436
+ else {
437
+ this.doc.text('CONSUMIDOR NÃO IDENTIFICADO', 75, tableTop, {
438
+ align: 'left',
439
+ });
440
+ tableTop = this.doc.y + 8;
441
+ }
442
+ const data = parseISO(this.ide.dhEmi);
443
+ const dtaEmi = format(data, 'dd/MM/yyyy HH:mm:ss');
444
+ let dtaAut = format(new Date(), 'dd/MM/yyyy HH:mm:ss');
445
+ if (this.protNFe?.infProt.dhRecbto) {
446
+ const dataAut = parseISO(this.protNFe?.infProt.dhRecbto);
447
+ dtaAut = format(dataAut, 'dd/MM/yyyy HH:mm:ss');
448
+ }
449
+ this.doc.font('Arial-bold')
450
+ .text(`NFC-e nº ${this.ide.nNF} Série ${this.ide.serie} ${dtaEmi}`, 75, tableTop, {
451
+ align: 'left',
452
+ lineGap: 1
453
+ })
454
+ .text('Protocolo de autorização: ', {
455
+ continued: true,
456
+ lineGap: 1,
457
+ })
458
+ .font('Arial')
459
+ .text(this.protNFe?.infProt.nProt || '123')
460
+ .font('Arial-bold')
461
+ .text('Data de autorização ', {
462
+ continued: true,
463
+ lineGap: 1,
464
+ })
465
+ .font('Arial')
466
+ .text(dtaAut);
467
+ tableTop = this.doc.y + 20;
468
+ topBeforeQrCode += 70.87;
469
+ this.doc.text(`Tributos Totais Incidentes (Lei Federal 12.741/2012): R$ ${parseFloat(this.total.ICMSTot.vTotTrib || '0').toFixed(2)}`, 0, topBeforeQrCode, {
470
+ align: 'center'
471
+ });
472
+ }
473
+ async generatePDF(exibirMarcaDaguaDanfe) {
474
+ try {
475
+ this.exibirMarcaDaguaDanfe = exibirMarcaDaguaDanfe || true;
476
+ // await this.saveQRCode(this.infNFeSupl?.qrCode || '')
477
+ const qrCodeBuffer = await this.getQRCodeBuffer(this.infNFeSupl?.qrCode || '');
478
+ this.doc.pipe(fs.createWriteStream(this.outputPath));
479
+ this.drawHeader(true);
480
+ this._buildProdutos();
481
+ this._buildTotais();
482
+ this.drawFooter(qrCodeBuffer);
483
+ this.doc.end();
484
+ return {
485
+ message: ` DANFE Gerada em '${this.outputPath}'`,
486
+ success: true,
487
+ };
488
+ }
489
+ catch (error) {
490
+ throw new Error(`Erro ao gerar DANFE: ${error.message}`);
491
+ }
492
+ }
493
+ }
494
+ export default NFCEGerarDanfe;
495
+ //# sourceMappingURL=NFCEGerarDanfe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NFCEGerarDanfe.js","sourceRoot":"","sources":["../../../src/NFCEGerarDanfe/NFCEGerarDanfe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { ValidaCPFCNPJ } from '@treeunfe/shared';
2
+ import PDFDocument from 'pdfkit';
3
+ import { Dest, DetProd, Emit, Ide, InfAdic, NFEGerarDanfeProps, ProtNFe, Total, Transp } from '@treeunfe/types';
4
+ declare class NFEGerarDanfe {
5
+ data: NFEGerarDanfeProps['data'];
6
+ chave: string;
7
+ enviada: boolean;
8
+ outputPath: string;
9
+ documento: InstanceType<typeof ValidaCPFCNPJ>;
10
+ protNFe: ProtNFe | undefined;
11
+ det: DetProd | DetProd[];
12
+ ide: Ide;
13
+ dest: Dest | undefined;
14
+ emit: Emit;
15
+ total: Total;
16
+ transp: Transp;
17
+ infAdic: InfAdic | undefined;
18
+ exibirMarcaDaguaDanfe?: boolean;
19
+ doc: InstanceType<typeof PDFDocument>;
20
+ barcodeBuffer: Buffer | null;
21
+ constructor(props: NFEGerarDanfeProps);
22
+ generateBarcode(data: string): Promise<Buffer | null>;
23
+ setLineStyle(lineWidth: number, strokeColor: string): void;
24
+ drawHeader(isFirstPage: boolean): void;
25
+ drawFooter(): void;
26
+ _buildGuia(): void;
27
+ _buildSeparator(): void;
28
+ _buildHeader(pos: number): void;
29
+ _buildDestinatario(): void;
30
+ _builCalculoImposto(): void;
31
+ _builTransporte(): void;
32
+ _buildProdutos(): void;
33
+ _buildFooter(): void;
34
+ generatePDF(exibirMarcaDaguaDanfe?: boolean): Promise<{
35
+ message: string;
36
+ success: boolean;
37
+ }>;
38
+ }
39
+ export default NFEGerarDanfe;