Best JavaScript code snippet using wpt
index.js
Source:index.js
1"use strict";2var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {3 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }4 return new (P || (P = Promise))(function (resolve, reject) {5 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }6 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }7 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }8 step((generator = generator.apply(thisArg, _arguments || [])).next());9 });10};11Object.defineProperty(exports, "__esModule", { value: true });12exports.invoceResponseMfeTx2 = exports.verifyStatusMfeTx2 = exports.sendPaymentMfeTx2 = exports.generateMFeTx2 = exports.generateNFeTx2 = exports.cancelNFCe = exports.generateNFCeTx2 = exports.generatecNF_B03 = exports.print = exports.sendNFe = exports.sendNFCe = void 0;13const querystring = require("querystring");14const fs = require("fs");15const request = require("request");16const createHeader = (caminhoTx2) => {17 return new Promise((resolve) => {18 fs.appendFileSync(caminhoTx2, 'formato=tx2\nnumlote=0');19 resolve('Cabeçalho criado com sucesso!');20 });21};22const createDadosNota = (caminhoTx2, dadosNota) => {23 return new Promise((resolve) => {24 // Cabeçalho dos dados da nota.25 fs.appendFileSync(caminhoTx2, '\nINCLUIR');26 const keys = Object.keys(dadosNota);27 keys.forEach((key) => {28 fs.appendFileSync(caminhoTx2, `\n${key}=${dadosNota[key]}`);29 });30 resolve('Dados da nota criados com sucesso.');31 });32};33const createDadosEmitente = (caminhoTx2, dadosEmitente) => {34 return new Promise((resolve) => {35 const keys = Object.keys(dadosEmitente);36 keys.forEach((key) => {37 fs.appendFileSync(caminhoTx2, `\n${key}=${dadosEmitente[key]}`);38 });39 resolve('Dados do emitente criados com sucesso.');40 });41};42const createDadosDestinatario = (caminhoTx2, dadosDestinatario) => {43 return new Promise((resolve) => {44 const keys = Object.keys(dadosDestinatario);45 keys.forEach((key) => {46 fs.appendFileSync(caminhoTx2, `\n${key}=${dadosDestinatario[key]}`);47 });48 resolve('Dados do emitente criados com sucesso.');49 });50};51const createDadosItens = (caminhoTx2, itens) => {52 return new Promise((resolve) => {53 // Cabeçalho dos dados da nota.54 itens.forEach((item) => {55 fs.appendFileSync(caminhoTx2, '\nINCLUIRITEM');56 const keys = Object.keys(item);57 keys.forEach((key) => {58 fs.appendFileSync(caminhoTx2, `\n${key}=${item[key]}`);59 });60 fs.appendFileSync(caminhoTx2, '\nSALVARITEM');61 resolve('Dados dos itens criados com sucesso.');62 });63 });64};65const createPagamentos = (caminhoTx2, pagamentos, type) => {66 return new Promise((resolve) => {67 pagamentos.forEach((pagamento) => {68 // Cabeçalho dos dados da nota.69 fs.appendFileSync(caminhoTx2, '\nINCLUIRPARTE=' + type);70 const keys = Object.keys(pagamento);71 keys.forEach((key) => {72 fs.appendFileSync(caminhoTx2, `\n${key}=${pagamento[key]}`);73 });74 fs.appendFileSync(caminhoTx2, '\nSALVARPARTE=' + type);75 resolve('Dados do pagamento criados com sucesso.');76 });77 });78};79const createTotalizadores = (caminhoTx2, totalizadores) => {80 return new Promise((resolve) => {81 // Cabeçalho dos dados da nota.82 const keys = Object.keys(totalizadores);83 keys.forEach((key) => {84 fs.appendFileSync(caminhoTx2, `\n${key}=${totalizadores[key]}`);85 });86 resolve('Dados do pagamento criados com sucesso.');87 });88};89const createAuthGetXml = (caminhoTx2, cnpj = '', cpf = '') => {90 return new Promise((resolve) => {91 if (cnpj || cpf)92 fs.appendFileSync(caminhoTx2, `\nINCLUIRPARTE=AUTXML\n${cnpj && `CNPJ_GA02=${cnpj}\n`}${cpf && `CPF_GA03=${cpf}\n`}SALVARPARTE=AUTXML`);93 resolve('Dados do pagamento criados com sucesso.');94 });95};96const createTecnico = (caminhoTx2, tecnico) => {97 return new Promise((resolve) => {98 const keys = Object.keys(tecnico);99 keys.forEach((key) => {100 fs.appendFileSync(caminhoTx2, `\n${key}=${tecnico[key]}`);101 });102 resolve('Dados do pagamento criados com sucesso.');103 });104};105const createObservacoes = (caminhoTx2, obs) => {106 return new Promise((resolve) => {107 const keys = Object.keys(obs);108 keys.forEach((key) => {109 fs.appendFileSync(caminhoTx2, `\n${key}=${obs[key]}`);110 });111 resolve('Dados do pagamento criados com sucesso.');112 });113};114const closeFile = (caminhoTx2) => {115 return new Promise((resolve) => {116 fs.appendFileSync(caminhoTx2, '\n\nSALVAR');117 resolve('Dados do pagamento criados com sucesso.');118 });119};120/**121 * Envia o arquivo tx2 para a api da tecnospeed e retorna a resposta.122 * @param tx2Path o caminho para o arquivo tx2123 * @param cnpj o cnpj da empresa emitente124 * @param grupo o nome do grupo125 * @param authorization a string de autorização para acessar a api da tecnospeed.126 */127const sendNFCe = (tx2Path, cnpj, grupo, authorization, port, amb) => {128 return new Promise((resolve, reject) => {129 const form = {130 CNPJ: cnpj,131 Grupo: grupo,132 Arquivo: fs.readFileSync(tx2Path, 'utf-8'),133 };134 const formData = querystring.stringify(form);135 const contentLength = formData.length;136 request({137 headers: {138 'Content-Type': 'application/x-www-form-urlencoded',139 'Content-Length': contentLength,140 Authorization: authorization,141 },142 url: `https://managersaas${amb}.tecnospeed.com.br:${port}/ManagerAPIWeb/nfce/envia`,143 method: 'POST',144 body: formData,145 }, (err, resp, body) => {146 if (err)147 reject(err);148 else {149 resolve(body);150 }151 });152 });153};154exports.sendNFCe = sendNFCe;155/**156 * Envia o arquivo tx2 para a api da tecnospeed e retorna a resposta.157 * @param tx2Path o caminho para o arquivo tx2158 * @param cnpj o cnpj da empresa emitente159 * @param grupo o nome do grupo160 * @param authorization a string de autorização para acessar a api da tecnospeed.161 */162const sendNFe = (tx2Path, cnpj, grupo, authorization, port, amb) => {163 return new Promise((resolve, reject) => {164 const form = {165 CNPJ: cnpj,166 Grupo: grupo,167 Arquivo: fs.readFileSync(tx2Path, 'utf-8'),168 };169 const formData = querystring.stringify(form);170 const contentLength = formData.length;171 request({172 headers: {173 'Content-Type': 'application/x-www-form-urlencoded',174 'Content-Length': contentLength,175 Authorization: authorization,176 },177 url: `https://managersaas${amb}.tecnospeed.com.br:${port}/ManagerAPIWeb/nfe/envia`,178 method: 'POST',179 body: formData,180 }, (err, resp, body) => {181 if (err)182 reject(err);183 else {184 resolve(body);185 }186 });187 });188};189exports.sendNFe = sendNFe;190/**191 * Gera o conteúdo para impressão da nota fiscal.192 * @param authorization a string de autorização para acessar a api da tecnospeed193 * @param key a chave da nota194 * @param url 0 = conteúdo binário de pdf, 1 = url para download do pdf.195 * @param group nome do grupo196 * @param cnpj cnpj da empresa emitente.197 */198const print = (authorization, key, url, group, cnpj, port, amb) => __awaiter(void 0, void 0, void 0, function* () {199 return new Promise((resolve, reject) => {200 const form = {201 ChaveNota: key,202 CNPJ: cnpj,203 Grupo: group,204 Url: url,205 };206 request({207 headers: {208 Authorization: authorization,209 },210 url: `https://managersaas${amb}.tecnospeed.com.br:${port}/ManagerAPIWeb/nfce/imprime`,211 method: 'GET',212 qs: form,213 }, (err, resp, body) => {214 if (err)215 reject(err);216 else {217 resolve(body);218 }219 });220 });221});222exports.print = print;223/**224 * Generates a random string to complement the cNF_B03 value.225 */226const generatecNF_B03 = () => {227 return new Promise((resolve, reject) => {228 let result = '';229 const characters = '0123456789';230 const charactersLength = characters.length;231 for (let i = 0; i < 8; i++) {232 result += characters.charAt(Math.floor(Math.random() * charactersLength));233 }234 resolve(result);235 });236};237exports.generatecNF_B03 = generatecNF_B03;238/**239 * Gera o arquivo tx2 (para NFCe) no caminho especificado.240 * @param caminhoTx2 o caminho onde o tx2 será gerado (um arquivo com o mesmo nome não pode existir)241 * @param dadosNota um objeto contendo os dados iniciais da nota.242 * @param dadosEmitente um objeto contento os dados do emitente.243 * @param itens um array contendo objetos com os dados dos itens.244 * @param pagamentos um array contendo as informações das formas de pagamento utilizadas.245 * @param totalizadores um objeto contendo os dados dos totalizadores.246 * @param tecnico um objeto contendo as informações do responsável técnico.247 * @param cnpjAutorizado Autorização para obter XML248 * @param observacoes Observações249 * @return retorna uma string do caminho onde o arquivo foi gerado250 */251const generateNFCeTx2 = (caminhoTx2, dadosNota, dadosEmitente, itens, pagamentos, totalizadores, tecnico, cnpjAutorizado, cpfAutorizado, observacoes) => {252 return new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {253 if (fs.existsSync(caminhoTx2)) {254 reject('Já existe um tx2 no caminho especificado.');255 }256 else {257 yield createHeader(caminhoTx2);258 yield createDadosNota(caminhoTx2, dadosNota);259 yield createDadosEmitente(caminhoTx2, dadosEmitente);260 yield createDadosItens(caminhoTx2, itens);261 yield createAuthGetXml(caminhoTx2, cnpjAutorizado, cpfAutorizado);262 yield createPagamentos(caminhoTx2, pagamentos, 'YA');263 yield createTotalizadores(caminhoTx2, totalizadores);264 yield createTecnico(caminhoTx2, tecnico);265 yield createObservacoes(caminhoTx2, observacoes);266 yield closeFile(caminhoTx2);267 resolve(caminhoTx2);268 }269 }));270};271exports.generateNFCeTx2 = generateNFCeTx2;272/**273 * Cancela uma NFCe.274 * @param authorization the header authrization string (base 64).275 * @param group the group name276 * @param cnpj the company cnpj277 * @param nfceKey the nfce key278 * @param justify a string justifying the cancel reason279 * @returns280 */281const cancelNFCe = (authorization, group, cnpj, nfceKey, justify, port, amb) => {282 return new Promise((resolve, reject) => {283 try {284 const form = {285 ChaveNota: nfceKey,286 CNPJ: cnpj,287 Grupo: group,288 Justificativa: justify,289 };290 request({291 headers: {292 Authorization: authorization,293 },294 url: `https://managersaas${amb}.tecnospeed.com.br:${port}/ManagerAPIWeb/nfce/cancela`,295 method: 'POST',296 qs: form,297 }, (err, resp, body) => {298 if (err)299 reject(err);300 else {301 resolve(body);302 }303 });304 }305 catch (e) {306 reject(e);307 }308 });309};310exports.cancelNFCe = cancelNFCe;311/**312 * Gera o arquivo tx2 (para NFe) no caminho especificado.313 * @param caminhoTx2 o caminho onde o tx2 será gerado (um arquivo com o mesmo nome não pode existir)314 * @param dadosNota um objeto contendo os dados iniciais da nota.315 * @param dadosEmitente um objeto contento os dados do emitente.316 * @param dadosDestinatario um objeto contendo os dados do destinatário.317 * @param itens um array contendo objetos com os dados dos itens.318 * @param pagamentos um array contendo as informações das formas de pagamento utilizadas.319 * @param totalizadores um objeto contendo os dados dos totalizadores.320 * @param tecnico um objeto contendo as informações do responsável técnico.321 * @param cnpjAutorizado Autorização para obter XML322 * @param cpfAutorizado Autorização para obter XML323 * @param observacoes Observações324 * @return retorna uma string do caminho onde o arquivo foi gerado325 */326const generateNFeTx2 = (caminhoTx2, dadosNota, dadosEmitente, dadosDestinatario, itens, pagamentos, totalizadores, tecnico, cnpjAutorizado, cpfAutorizado, observacoes) => {327 return new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {328 if (fs.existsSync(caminhoTx2)) {329 reject('Já existe um tx2 no caminho especificado.');330 }331 else {332 yield createHeader(caminhoTx2);333 yield createDadosNota(caminhoTx2, dadosNota);334 yield createDadosEmitente(caminhoTx2, dadosEmitente);335 yield createDadosDestinatario(caminhoTx2, dadosDestinatario);336 yield createAuthGetXml(caminhoTx2, cnpjAutorizado, cpfAutorizado);337 yield createDadosItens(caminhoTx2, itens);338 yield createPagamentos(caminhoTx2, pagamentos, 'YA');339 yield createTotalizadores(caminhoTx2, totalizadores);340 yield createTecnico(caminhoTx2, tecnico);341 yield createObservacoes(caminhoTx2, observacoes);342 yield closeFile(caminhoTx2);343 resolve(caminhoTx2);344 }345 }));346};347exports.generateNFeTx2 = generateNFeTx2;348/**349 * Gera o arquivo tx2 (para NFe) no caminho especificado.350 * @param caminhoTx2 o caminho onde o tx2 será gerado (um arquivo com o mesmo nome não pode existir)351 * @param dadosNota um objeto contendo os dados iniciais da nota.352 * @param itens um array contendo objetos com os dados dos itens.353 * @param pagamentos um array contendo as informações das formas de pagamento utilizadas.354 * @return retorna uma string do caminho onde o arquivo foi gerado355 */356const generateMFeTx2 = (caminhoTx2, dadosNota, itens, pagamentos, tecnico) => {357 return new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {358 if (fs.existsSync(caminhoTx2)) {359 reject('Já existe um tx2 no caminho especificado.');360 }361 else {362 yield createHeader(caminhoTx2);363 yield createDadosNota(caminhoTx2, dadosNota);364 yield createDadosItens(caminhoTx2, itens);365 yield createPagamentos(caminhoTx2, pagamentos, 'PAGAMENTO');366 yield createTecnico(caminhoTx2, tecnico);367 yield closeFile(caminhoTx2);368 resolve(caminhoTx2);369 }370 }));371};372exports.generateMFeTx2 = generateMFeTx2;373/**374 * Gera o arquivo tx2 (para NFe) no caminho especificado.375 * @param caminhoTx2 o caminho onde o tx2 será gerado (um arquivo com o mesmo nome não pode existir)376 * @param posDataInformation Informações para emitir o tx2377 * @return retorna uma string do caminho onde o arquivo foi gerado378 */379const sendPaymentMfeTx2 = (caminhoTx2, posDataInformation) => {380 return new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {381 var _a, _b, _c, _d, _e;382 if (fs.existsSync(caminhoTx2)) {383 reject('Já existe um tx2 no caminho especificado.');384 }385 else {386 // IcmsBase= eduardo informou para que seja o valor da venda387 fs.appendFileSync(caminhoTx2, `Formato=TX2\nInterface=EnviarPagamento\nNumeroDocumento=${posDataInformation.docNumber}\nChaveAcessoValidador=${(_a = posDataInformation.company) === null || _a === void 0 ? void 0 : _a.validatorAccessKey}\nChaveRequisicao=${posDataInformation.requestKey}\nEstabelecimento=${posDataInformation.establishment}\nCNPJ=${(_b = posDataInformation.company) === null || _b === void 0 ? void 0 : _b.cnpj}\nIcmsBase=${(_c = posDataInformation.sale) === null || _c === void 0 ? void 0 : _c.value}\nValorTotalVenda=${(_d = posDataInformation.sale) === null || _d === void 0 ? void 0 : _d.value}\nHabilitarMultiplosPagamentos=${(_e = posDataInformation.sale) === null || _e === void 0 ? void 0 : _e.isMultiplesPayments}\nHabilitarControleAntiFraude=false\nCodigoMoeda=BRL\nEmitirCupomNFCE=false\nOrigemPagamento=1\nSerialPOS=${posDataInformation.serialPOS}\n`);388 resolve(caminhoTx2);389 }390 }));391};392exports.sendPaymentMfeTx2 = sendPaymentMfeTx2;393/**394 * Gera o arquivo tx2 (para NFe) no caminho especificado.395 * @param caminhoTx2 o caminho onde o tx2 será gerado (um arquivo com o mesmo nome não pode existir)396 * @param posDataInformation Informações para emitir o tx2397 * @return retorna uma string do caminho onde o arquivo foi gerado398 */399const verifyStatusMfeTx2 = (caminhoTx2, posDataInformation) => {400 return new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {401 var _a, _b;402 if (fs.existsSync(caminhoTx2)) {403 reject('Já existe um tx2 no caminho especificado.');404 }405 else {406 // IcmsBase= eduardo informou para que seja o valor da venda407 fs.appendFileSync(caminhoTx2, `Formato=TX2\nnumeroDocumento=${posDataInformation.docNumber}\nInterface=VerificarStatusValidador\nChaveAcessoValidador=${(_a = posDataInformation.company) === null || _a === void 0 ? void 0 : _a.validatorAccessKey}\nIdFila=${posDataInformation.idFila}\nCNPJ=${(_b = posDataInformation.company) === null || _b === void 0 ? void 0 : _b.cnpj}`);408 resolve(caminhoTx2);409 }410 }));411};412exports.verifyStatusMfeTx2 = verifyStatusMfeTx2;413/**414 * Gera o arquivo tx2 (para NFe) no caminho especificado.415 * @param caminhoTx2 o caminho onde o tx2 será gerado (um arquivo com o mesmo nome não pode existir)416 * @param posDataInformation Informações para emitir o tx2417 * @return retorna uma string do caminho onde o arquivo foi gerado418 */419const invoceResponseMfeTx2 = (caminhoTx2, posDataInformation) => {420 return new Promise((resolve, reject) => __awaiter(void 0, void 0, void 0, function* () {421 var _a, _b, _c, _d;422 if (fs.existsSync(caminhoTx2)) {423 reject('Já existe um tx2 no caminho especificado.');424 }425 else {426 // IcmsBase= eduardo informou para que seja o valor da venda427 fs.appendFileSync(caminhoTx2, `formato=tx2\nNumeroDocumento=${posDataInformation.docNumber}\nInterface=RespostaFiscal\nChaveAcessoValidador=${(_a = posDataInformation.company) === null || _a === void 0 ? void 0 : _a.validatorAccessKey}\nIdFila=${posDataInformation.idFila}\nChaveAcesso=${posDataInformation.requestKey}\nNumeroAprovacao=${posDataInformation.approveCodeNumber}\nBandeira=${(_b = posDataInformation.creditCard) === null || _b === void 0 ? void 0 : _b.brand}\nAdquirente=${(_c = posDataInformation.creditCard) === null || _c === void 0 ? void 0 : _c.companyName}\nCNPJ=${(_d = posDataInformation.company) === null || _d === void 0 ? void 0 : _d.cnpj}\nImpressaoFiscal=<![CDATA[ TANCA428 ${posDataInformation.printerStringify}429 ]]>`);430 resolve(caminhoTx2);431 }432 }));433};...
index.ts
Source:index.ts
1import DadosNota from './interfaces/dadosNota.interface';2import DadosEmitente from './interfaces/dadosEmitente.interface';3import DadosDestinatario from './interfaces/dadosDestinatario.interface';4import DadosItem from './interfaces/dadosItem.interface';5import Totalizadores from './interfaces/totalizadores.interface';6import Tecnico from './interfaces/tecnico.interface';7import Pagamento from './interfaces/pagamento.interface';8import * as querystring from 'querystring';9import * as fs from 'fs';10import * as request from 'request';11import { PosDataInformationInterface } from './interfaces/postDataInformation.interface';12const createHeader = (caminhoTx2: string) => {13 return new Promise((resolve) => {14 fs.appendFileSync(caminhoTx2, 'formato=tx2\nnumlote=0');15 resolve('Cabeçalho criado com sucesso!');16 });17};18const createDadosNota = (caminhoTx2: string, dadosNota: any) => {19 return new Promise((resolve) => {20 // Cabeçalho dos dados da nota.21 fs.appendFileSync(caminhoTx2, '\nINCLUIR');22 const keys = Object.keys(dadosNota);23 keys.forEach((key: string) => {24 fs.appendFileSync(caminhoTx2, `\n${key}=${dadosNota[key]}`);25 });26 resolve('Dados da nota criados com sucesso.');27 });28};29const createDadosEmitente = (caminhoTx2: string, dadosEmitente: any) => {30 return new Promise((resolve) => {31 const keys = Object.keys(dadosEmitente);32 keys.forEach((key: string) => {33 fs.appendFileSync(caminhoTx2, `\n${key}=${dadosEmitente[key]}`);34 });35 resolve('Dados do emitente criados com sucesso.');36 });37};38const createDadosDestinatario = (caminhoTx2: string, dadosDestinatario: any) => {39 return new Promise((resolve) => {40 const keys = Object.keys(dadosDestinatario);41 keys.forEach((key: string) => {42 fs.appendFileSync(caminhoTx2, `\n${key}=${dadosDestinatario[key]}`);43 });44 resolve('Dados do emitente criados com sucesso.');45 });46};47const createDadosItens = (caminhoTx2: string, itens: Array<any>) => {48 return new Promise((resolve) => {49 // Cabeçalho dos dados da nota.50 itens.forEach((item) => {51 fs.appendFileSync(caminhoTx2, '\nINCLUIRITEM');52 const keys = Object.keys(item);53 keys.forEach((key: string) => {54 fs.appendFileSync(caminhoTx2, `\n${key}=${item[key]}`);55 });56 fs.appendFileSync(caminhoTx2, '\nSALVARITEM');57 resolve('Dados dos itens criados com sucesso.');58 });59 });60};61const createPagamentos = (caminhoTx2: string, pagamentos: Array<any>, type: string) => {62 return new Promise((resolve) => {63 pagamentos.forEach((pagamento) => {64 // Cabeçalho dos dados da nota.65 fs.appendFileSync(caminhoTx2, '\nINCLUIRPARTE=' + type);66 const keys = Object.keys(pagamento);67 keys.forEach((key: string) => {68 fs.appendFileSync(caminhoTx2, `\n${key}=${pagamento[key]}`);69 });70 fs.appendFileSync(caminhoTx2, '\nSALVARPARTE=' + type);71 resolve('Dados do pagamento criados com sucesso.');72 });73 });74};75const createTotalizadores = (caminhoTx2: string, totalizadores: any) => {76 return new Promise((resolve) => {77 // Cabeçalho dos dados da nota.78 const keys = Object.keys(totalizadores);79 keys.forEach((key: string) => {80 fs.appendFileSync(caminhoTx2, `\n${key}=${totalizadores[key]}`);81 });82 resolve('Dados do pagamento criados com sucesso.');83 });84};85const createAuthGetXml = (caminhoTx2: string, cnpj: string = '', cpf: string = '') => {86 return new Promise((resolve) => {87 if (cnpj || cpf)88 fs.appendFileSync(89 caminhoTx2,90 `\nINCLUIRPARTE=AUTXML\n${cnpj && `CNPJ_GA02=${cnpj}\n`}${cpf && `CPF_GA03=${cpf}\n`}SALVARPARTE=AUTXML`,91 );92 resolve('Dados do pagamento criados com sucesso.');93 });94};95const createTecnico = (caminhoTx2: string, tecnico: any) => {96 return new Promise((resolve) => {97 const keys = Object.keys(tecnico);98 keys.forEach((key: string) => {99 fs.appendFileSync(caminhoTx2, `\n${key}=${tecnico[key]}`);100 });101 resolve('Dados do pagamento criados com sucesso.');102 });103};104const createObservacoes = (caminhoTx2: string, obs: any) => {105 return new Promise((resolve) => {106 const keys = Object.keys(obs);107 keys.forEach((key: string) => {108 fs.appendFileSync(caminhoTx2, `\n${key}=${obs[key]}`);109 });110 resolve('Dados do pagamento criados com sucesso.');111 });112};113const closeFile = (caminhoTx2: string) => {114 return new Promise((resolve) => {115 fs.appendFileSync(caminhoTx2, '\n\nSALVAR');116 resolve('Dados do pagamento criados com sucesso.');117 });118};119/**120 * Envia o arquivo tx2 para a api da tecnospeed e retorna a resposta.121 * @param tx2Path o caminho para o arquivo tx2122 * @param cnpj o cnpj da empresa emitente123 * @param grupo o nome do grupo124 * @param authorization a string de autorização para acessar a api da tecnospeed.125 */126export const sendNFCe = (127 tx2Path: string,128 cnpj: string,129 grupo: string,130 authorization: string,131 port: string,132 amb: string,133): Promise<string> => {134 return new Promise((resolve, reject) => {135 const form = {136 CNPJ: cnpj,137 Grupo: grupo,138 Arquivo: fs.readFileSync(tx2Path, 'utf-8'),139 };140 const formData = querystring.stringify(form);141 const contentLength = formData.length;142 request(143 {144 headers: {145 'Content-Type': 'application/x-www-form-urlencoded',146 'Content-Length': contentLength,147 Authorization: authorization,148 },149 url: `https://managersaas${amb}.tecnospeed.com.br:${port}/ManagerAPIWeb/nfce/envia`,150 method: 'POST',151 body: formData,152 },153 (err: any, resp: any, body: any) => {154 if (err) reject(err);155 else {156 resolve(body);157 }158 },159 );160 });161};162/**163 * Envia o arquivo tx2 para a api da tecnospeed e retorna a resposta.164 * @param tx2Path o caminho para o arquivo tx2165 * @param cnpj o cnpj da empresa emitente166 * @param grupo o nome do grupo167 * @param authorization a string de autorização para acessar a api da tecnospeed.168 */169export const sendNFe = (170 tx2Path: string,171 cnpj: string,172 grupo: string,173 authorization: string,174 port: string,175 amb: string,176): Promise<string> => {177 return new Promise((resolve, reject) => {178 const form = {179 CNPJ: cnpj,180 Grupo: grupo,181 Arquivo: fs.readFileSync(tx2Path, 'utf-8'),182 };183 const formData = querystring.stringify(form);184 const contentLength = formData.length;185 request(186 {187 headers: {188 'Content-Type': 'application/x-www-form-urlencoded',189 'Content-Length': contentLength,190 Authorization: authorization,191 },192 url: `https://managersaas${amb}.tecnospeed.com.br:${port}/ManagerAPIWeb/nfe/envia`,193 method: 'POST',194 body: formData,195 },196 (err: any, resp: any, body: any) => {197 if (err) reject(err);198 else {199 resolve(body);200 }201 },202 );203 });204};205/**206 * Gera o conteúdo para impressão da nota fiscal.207 * @param authorization a string de autorização para acessar a api da tecnospeed208 * @param key a chave da nota209 * @param url 0 = conteúdo binário de pdf, 1 = url para download do pdf.210 * @param group nome do grupo211 * @param cnpj cnpj da empresa emitente.212 */213export const print = async (214 authorization: string,215 key: string,216 url: 0 | 1,217 group: string,218 cnpj: string,219 port: string,220 amb: string,221): Promise<string> => {222 return new Promise((resolve, reject) => {223 const form = {224 ChaveNota: key,225 CNPJ: cnpj,226 Grupo: group,227 Url: url,228 };229 request(230 {231 headers: {232 Authorization: authorization,233 },234 url: `https://managersaas${amb}.tecnospeed.com.br:${port}/ManagerAPIWeb/nfce/imprime`,235 method: 'GET',236 qs: form,237 },238 (err: any, resp: any, body: any) => {239 if (err) reject(err);240 else {241 resolve(body);242 }243 },244 );245 });246};247/**248 * Generates a random string to complement the cNF_B03 value.249 */250export const generatecNF_B03 = (): Promise<string> => {251 return new Promise((resolve, reject) => {252 let result = '';253 const characters = '0123456789';254 const charactersLength = characters.length;255 for (let i = 0; i < 8; i++) {256 result += characters.charAt(Math.floor(Math.random() * charactersLength));257 }258 resolve(result);259 });260};261/**262 * Gera o arquivo tx2 (para NFCe) no caminho especificado.263 * @param caminhoTx2 o caminho onde o tx2 será gerado (um arquivo com o mesmo nome não pode existir)264 * @param dadosNota um objeto contendo os dados iniciais da nota.265 * @param dadosEmitente um objeto contento os dados do emitente.266 * @param itens um array contendo objetos com os dados dos itens.267 * @param pagamentos um array contendo as informações das formas de pagamento utilizadas.268 * @param totalizadores um objeto contendo os dados dos totalizadores.269 * @param tecnico um objeto contendo as informações do responsável técnico.270 * @param cnpjAutorizado Autorização para obter XML271 * @param observacoes Observações272 * @return retorna uma string do caminho onde o arquivo foi gerado273 */274export const generateNFCeTx2 = (275 caminhoTx2: string,276 dadosNota: DadosNota,277 dadosEmitente: DadosEmitente,278 itens: Array<DadosItem>,279 pagamentos: Array<any>,280 totalizadores: Totalizadores,281 tecnico: Tecnico,282 cnpjAutorizado: string,283 cpfAutorizado: string,284 observacoes: any,285): Promise<string> => {286 return new Promise(async (resolve, reject) => {287 if (fs.existsSync(caminhoTx2)) {288 reject('Já existe um tx2 no caminho especificado.');289 } else {290 await createHeader(caminhoTx2);291 await createDadosNota(caminhoTx2, dadosNota);292 await createDadosEmitente(caminhoTx2, dadosEmitente);293 await createDadosItens(caminhoTx2, itens);294 await createAuthGetXml(caminhoTx2, cnpjAutorizado, cpfAutorizado);295 await createPagamentos(caminhoTx2, pagamentos, 'YA');296 await createTotalizadores(caminhoTx2, totalizadores);297 await createTecnico(caminhoTx2, tecnico);298 await createObservacoes(caminhoTx2, observacoes);299 await closeFile(caminhoTx2);300 resolve(caminhoTx2);301 }302 });303};304/**305 * Cancela uma NFCe.306 * @param authorization the header authrization string (base 64).307 * @param group the group name308 * @param cnpj the company cnpj309 * @param nfceKey the nfce key310 * @param justify a string justifying the cancel reason311 * @returns312 */313export const cancelNFCe = (314 authorization: string,315 group: string,316 cnpj: string,317 nfceKey: string,318 justify: string,319 port: string,320 amb: string,321): Promise<string> => {322 return new Promise((resolve, reject) => {323 try {324 const form = {325 ChaveNota: nfceKey,326 CNPJ: cnpj,327 Grupo: group,328 Justificativa: justify,329 };330 request(331 {332 headers: {333 Authorization: authorization,334 },335 url: `https://managersaas${amb}.tecnospeed.com.br:${port}/ManagerAPIWeb/nfce/cancela`,336 method: 'POST',337 qs: form,338 },339 (err: any, resp: any, body: any) => {340 if (err) reject(err);341 else {342 resolve(body);343 }344 },345 );346 } catch (e) {347 reject(e);348 }349 });350};351/**352 * Gera o arquivo tx2 (para NFe) no caminho especificado.353 * @param caminhoTx2 o caminho onde o tx2 será gerado (um arquivo com o mesmo nome não pode existir)354 * @param dadosNota um objeto contendo os dados iniciais da nota.355 * @param dadosEmitente um objeto contento os dados do emitente.356 * @param dadosDestinatario um objeto contendo os dados do destinatário.357 * @param itens um array contendo objetos com os dados dos itens.358 * @param pagamentos um array contendo as informações das formas de pagamento utilizadas.359 * @param totalizadores um objeto contendo os dados dos totalizadores.360 * @param tecnico um objeto contendo as informações do responsável técnico.361 * @param cnpjAutorizado Autorização para obter XML362 * @param cpfAutorizado Autorização para obter XML363 * @param observacoes Observações364 * @return retorna uma string do caminho onde o arquivo foi gerado365 */366export const generateNFeTx2 = (367 caminhoTx2: string,368 dadosNota: DadosNota,369 dadosEmitente: DadosEmitente,370 dadosDestinatario: DadosDestinatario,371 itens: Array<DadosItem>,372 pagamentos: Array<any>,373 totalizadores: Totalizadores,374 tecnico: Tecnico,375 cnpjAutorizado: string,376 cpfAutorizado: string,377 observacoes: any,378) => {379 return new Promise(async (resolve, reject) => {380 if (fs.existsSync(caminhoTx2)) {381 reject('Já existe um tx2 no caminho especificado.');382 } else {383 await createHeader(caminhoTx2);384 await createDadosNota(caminhoTx2, dadosNota);385 await createDadosEmitente(caminhoTx2, dadosEmitente);386 await createDadosDestinatario(caminhoTx2, dadosDestinatario);387 await createAuthGetXml(caminhoTx2, cnpjAutorizado, cpfAutorizado);388 await createDadosItens(caminhoTx2, itens);389 await createPagamentos(caminhoTx2, pagamentos, 'YA');390 await createTotalizadores(caminhoTx2, totalizadores);391 await createTecnico(caminhoTx2, tecnico);392 await createObservacoes(caminhoTx2, observacoes);393 await closeFile(caminhoTx2);394 resolve(caminhoTx2);395 }396 });397};398/**399 * Gera o arquivo tx2 (para NFe) no caminho especificado.400 * @param caminhoTx2 o caminho onde o tx2 será gerado (um arquivo com o mesmo nome não pode existir)401 * @param dadosNota um objeto contendo os dados iniciais da nota.402 * @param itens um array contendo objetos com os dados dos itens.403 * @param pagamentos um array contendo as informações das formas de pagamento utilizadas.404 * @return retorna uma string do caminho onde o arquivo foi gerado405 */406export const generateMFeTx2 = (407 caminhoTx2: string,408 dadosNota: DadosNota | any,409 itens: Array<DadosItem> | any,410 pagamentos: Array<any>,411 tecnico: Tecnico,412) => {413 return new Promise(async (resolve, reject) => {414 if (fs.existsSync(caminhoTx2)) {415 reject('Já existe um tx2 no caminho especificado.');416 } else {417 await createHeader(caminhoTx2);418 await createDadosNota(caminhoTx2, dadosNota);419 await createDadosItens(caminhoTx2, itens);420 await createPagamentos(caminhoTx2, pagamentos, 'PAGAMENTO');421 await createTecnico(caminhoTx2, tecnico);422 await closeFile(caminhoTx2);423 resolve(caminhoTx2);424 }425 });426};427/**428 * Gera o arquivo tx2 (para NFe) no caminho especificado.429 * @param caminhoTx2 o caminho onde o tx2 será gerado (um arquivo com o mesmo nome não pode existir)430 * @param posDataInformation Informações para emitir o tx2431 * @return retorna uma string do caminho onde o arquivo foi gerado432 */433export const sendPaymentMfeTx2 = (caminhoTx2: string, posDataInformation: PosDataInformationInterface) => {434 return new Promise(async (resolve, reject) => {435 if (fs.existsSync(caminhoTx2)) {436 reject('Já existe um tx2 no caminho especificado.');437 } else {438 // IcmsBase= eduardo informou para que seja o valor da venda439 fs.appendFileSync(440 caminhoTx2,441 `Formato=TX2\nInterface=EnviarPagamento\nNumeroDocumento=${posDataInformation.docNumber}\nChaveAcessoValidador=${posDataInformation.company?.validatorAccessKey}\nChaveRequisicao=${posDataInformation.requestKey}\nEstabelecimento=${posDataInformation.establishment}\nCNPJ=${posDataInformation.company?.cnpj}\nIcmsBase=${posDataInformation.sale?.value}\nValorTotalVenda=${posDataInformation.sale?.value}\nHabilitarMultiplosPagamentos=${posDataInformation.sale?.isMultiplesPayments}\nHabilitarControleAntiFraude=false\nCodigoMoeda=BRL\nEmitirCupomNFCE=false\nOrigemPagamento=1\nSerialPOS=${posDataInformation.serialPOS}\n`,442 );443 resolve(caminhoTx2);444 }445 });446};447/**448 * Gera o arquivo tx2 (para NFe) no caminho especificado.449 * @param caminhoTx2 o caminho onde o tx2 será gerado (um arquivo com o mesmo nome não pode existir)450 * @param posDataInformation Informações para emitir o tx2451 * @return retorna uma string do caminho onde o arquivo foi gerado452 */453export const verifyStatusMfeTx2 = (caminhoTx2: string, posDataInformation: PosDataInformationInterface) => {454 return new Promise(async (resolve, reject) => {455 if (fs.existsSync(caminhoTx2)) {456 reject('Já existe um tx2 no caminho especificado.');457 } else {458 // IcmsBase= eduardo informou para que seja o valor da venda459 fs.appendFileSync(460 caminhoTx2,461 `Formato=TX2\nnumeroDocumento=${posDataInformation.docNumber}\nInterface=VerificarStatusValidador\nChaveAcessoValidador=${posDataInformation.company?.validatorAccessKey}\nIdFila=${posDataInformation.idFila}\nCNPJ=${posDataInformation.company?.cnpj}`,462 );463 resolve(caminhoTx2);464 }465 });466};467/**468 * Gera o arquivo tx2 (para NFe) no caminho especificado.469 * @param caminhoTx2 o caminho onde o tx2 será gerado (um arquivo com o mesmo nome não pode existir)470 * @param posDataInformation Informações para emitir o tx2471 * @return retorna uma string do caminho onde o arquivo foi gerado472 */473export const invoceResponseMfeTx2 = (caminhoTx2: string, posDataInformation: PosDataInformationInterface) => {474 return new Promise(async (resolve, reject) => {475 if (fs.existsSync(caminhoTx2)) {476 reject('Já existe um tx2 no caminho especificado.');477 } else {478 // IcmsBase= eduardo informou para que seja o valor da venda479 fs.appendFileSync(480 caminhoTx2,481 `formato=tx2\nNumeroDocumento=${posDataInformation.docNumber}\nInterface=RespostaFiscal\nChaveAcessoValidador=${posDataInformation.company?.validatorAccessKey}\nIdFila=${posDataInformation.idFila}\nChaveAcesso=${posDataInformation.requestKey}\nNumeroAprovacao=${posDataInformation.approveCodeNumber}\nBandeira=${posDataInformation.creditCard?.brand}\nAdquirente=${posDataInformation.creditCard?.companyName}\nCNPJ=${posDataInformation.company?.cnpj}\nImpressaoFiscal=<![CDATA[ TANCA482 ${posDataInformation.printerStringify}483 ]]>`,484 );485 resolve(caminhoTx2);486 }487 });...
Using AI Code Generation
1var wpt = require('webpagetest');2var test = new wpt('www.webpagetest.org', 'API_KEY');3}, function(err, data) {4 if (err) {5 console.log('error: ' + err);6 } else {7 console.log('Test ID: ' + data.data.testId);8 console.log('Test URL: ' + data.data.summary);9 }10});11test.getTestResults('140114_8J_1E', function(err, data) {12 if (err) {13 console.log('error: ' + err);14 } else {15 console.log('Test ID: ' + data.data.testId);16 console.log('Test URL: ' + data.data.summary);17 }18});19test.getLocations(function(err, data) {20 if (err) {21 console.log('error: ' + err);22 } else {23 console.log('Locations: ' + data.data);24 }25});26test.getTesters(function(err, data) {27 if (err) {28 console.log('error: ' + err);29 } else {30 console.log('Testers: ' + data.data);31 }32});33test.getTesters(function(err, data) {34 if (err) {35 console.log('error: ' + err);36 } else {37 console.log('Testers: ' + data.data);38 }39});
Using AI Code Generation
1const WebPageTest = require('webpagetest');2const wpt = new WebPageTest('www.webpagetest.org', 'A.12345678901234567890123456789012');3wpt.runTest(url, {4}, (err, data) => {5 if (err) {6 console.log(err);7 } else {8 console.log(data);9 }10});11const WebPageTest = require('webpagetest');12const wpt = new WebPageTest('www.webpagetest.org', 'A.12345678901234567890123456789012');13wpt.runTest(url, {14}, (err, data) => {15 if (err) {16 console.log(err);17 } else {18 console.log(data);19 }20});21const WebPageTest = require('webpagetest');22const wpt = new WebPageTest('www.webpagetest.org', 'A.12345678901234567890123456789012');23wpt.runTest(url, {24}, (err, data) => {25 if (err) {26 console.log(err);27 } else {28 console.log(data);29 }30});31const WebPageTest = require('webpagetest');32const wpt = new WebPageTest('www.webpagetest.org', 'A.12345678901234567890123456789012');33wpt.runTest(url
Using AI Code Generation
1var wpt = require('wpt');2var tx2 = wpt.tx2;3 if (err) {4 console.log(err);5 } else {6 console.log(data);7 }8});9var wpt = require('wpt');10var tx2 = wpt.tx2;11 if (err) {12 console.log(err);13 } else {14 console.log(data);15 }16});17var wpt = require('wpt');18var tx2 = wpt.tx2;19 if (err) {20 console.log(err);21 } else {22 console.log(data);23 }24});25var wpt = require('wpt');26var tx2 = wpt.tx2;27 if (err) {28 console.log(err);29 } else {30 console.log(data);31 }32});33var wpt = require('wpt');34var tx2 = wpt.tx2;35 if (err) {36 console.log(err);37 } else {38 console.log(data);39 }40});41var wpt = require('wpt');42var tx2 = wpt.tx2;43 if (err) {44 console.log(err);45 } else {46 console.log(data);47 }48});49var wpt = require('wpt');50var tx2 = wpt.tx2;51 if (err) {
Using AI Code Generation
1var wptx2 = require('wptx2');2var tx2 = new wptx2();3tx2.tx2();4var wptx2 = require('wptx2');5var tx2 = new wptx2();6tx2.tx2();7var wptx2 = require('wptx2');8var tx2 = new wptx2();9tx2.tx2();10var wptx2 = require('wptx2');11var tx2 = new wptx2();12tx2.tx2();13var wptx2 = require('wptx2');14var tx2 = new wptx2();15tx2.tx2();16var wptx2 = require('wptx2');17var tx2 = new wptx2();18tx2.tx2();19var wptx2 = require('wptx2');20var tx2 = new wptx2();21tx2.tx2();22var wptx2 = require('wptx2');23var tx2 = new wptx2();24tx2.tx2();25var wptx2 = require('wptx2');26var tx2 = new wptx2();27tx2.tx2();28var wptx2 = require('wptx2');29var tx2 = new wptx2();30tx2.tx2();31var wptx2 = require('wptx2');32var tx2 = new wptx2();33tx2.tx2();
Using AI Code Generation
1var wptx2 = require('./wptx2.js');2wptx2.tx2("Hello World!");3var wptx2 = require('./wptx2.js');4wptx2.tx2("Hello World!");5var wptx2 = require('./wptx2.js');6wptx2.tx2("Hello World!");7var wptx2 = require('./wptx2.js');8wptx2.tx2("Hello World!");9var wptx2 = require('./wptx2.js');10wptx2.tx2("Hello World!");11var wptx2 = require('./wptx2.js');12wptx2.tx2("Hello World!");13var wptx2 = require('./wptx2.js');14wptx2.tx2("Hello World!");15var wptx2 = require('./wptx2.js');16wptx2.tx2("Hello World!");17var wptx2 = require('./wptx2.js');18wptx2.tx2("Hello World!");19var wptx2 = require('./wptx2.js');20wptx2.tx2("Hello World!");21var wptx2 = require('./wptx2.js');22wptx2.tx2("Hello World!");
Using AI Code Generation
1var wptx2 = require('wptx2');2wptx2.tx2('test', function(err, data) {3 console.log(data);4});5var wptx2 = require('wptx2');6wptx2.tx2('test', function(err, data) {7 console.log(data);8});9var wptx2 = require('wptx2');10wptx2.tx2('test', function(err, data) {11 console.log(data);12});13var wptx2 = require('wptx2');14wptx2.tx2('test', function(err, data) {15 console.log(data);16});17var wptx2 = require('wptx2');18wptx2.tx2('test', function(err, data) {19 console.log(data);20});21var wptx2 = require('wptx2');22wptx2.tx2('test', function(err, data) {23 console.log(data);24});25var wptx2 = require('wptx2');26wptx2.tx2('test', function(err, data) {27 console.log(data);28});29var wptx2 = require('wptx2');30wptx2.tx2('test', function(err, data) {31 console.log(data);32});33var wptx2 = require('wptx2');34wptx2.tx2('test', function(err, data) {35 console.log(data);36});37var wptx2 = require('wptx2');
Using AI Code Generation
1var wptools = require('wptools');2wptools.tx2('en.wikipedia.org', 'Albert Einstein').then(function (response) {3 console.log(response);4});5var wptools = require('wptools');6wptools.tx2('en.wikipedia.org', 'Albert Einstein').then(function (response) {7 console.log(response);8});9var wptools = require('wptools');10wptools.tx2('en.wikipedia.org', 'Albert Einstein').then(function (response) {11 console.log(response);12});13var wptools = require('wptools');14wptools.tx2('en.wikipedia.org', 'Albert Einstein').then(function (response) {15 console.log(response);16});17var wptools = require('wptools');18wptools.tx2('en.wikipedia.org', 'Albert Einstein').then(function (response) {19 console.log(response);20});21var wptools = require('wptools');22wptools.tx2('en.wikipedia.org', 'Albert Einstein').then(function (response) {23 console.log(response);24});25var wptools = require('wptools');26wptools.tx2('en.wikipedia.org', 'Albert Einstein').then(function (response) {27 console.log(response);28});29var wptools = require('wptools');30wptools.tx2('en.wikipedia.org', 'Albert Einstein').then(function (response) {31 console.log(response);32});33var wptools = require('wptools');34wptools.tx2('en.wikipedia.org', 'Albert Einstein').then(function (response) {35 console.log(response);36});
Using AI Code Generation
1var wptx2 = require('wptx2');2var tx2 = wptx2.tx2;3var tx2obj = tx2({4});5tx2obj.on('data', function(chunk) {6 console.log('got a chunk');7 console.log(chunk);8});9tx2obj.on('end', function() {10 console.log('done');11});12var wptx2 = require('wptx2');13var tx2 = wptx2.tx2;14var tx2obj = tx2({15});16tx2obj.on('data', function(chunk) {17 console.log('got a chunk');18 console.log(chunk);19});20tx2obj.on('end', function() {21 console.log('done');22});23var wptx2 = require('wptx2');24var tx2 = wptx2.tx2;25var tx2obj = tx2({26});27tx2obj.on('data', function(chunk) {28 console.log('got a chunk');29 console.log(chunk);30});31tx2obj.on('end', function() {32 console.log('done');33});
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!