| Server IP : 189.126.111.107 / Your IP : 216.73.217.69 Web Server : Apache System : Linux www.gadotticar.com.br 5.4.0-135-generic #152-Ubuntu SMP Wed Nov 23 20:19:22 UTC 2022 x86_64 User : gadotticar ( 1000) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /home/gadotticar/frete-api/src/frete/transportadoras/ |
Upload File : |
import { Injectable } from '@nestjs/common';
@Injectable()
export class SageTransportesService {
private readonly faixasCep = [
['01000000', '05999999'], // São Paulo - parte 1
['08000000', '08499999'], // São Paulo - parte 2
['06400000', '06499999'], // Barueri
['06000000', '06299999'], // Osasco
['06600000', '06649999'], // Jandira
['06650000', '06699999'], // Itapevi
['06500000', '06549999'], // Santana de Parnaíba
['07700000', '07799999'], // Cajamar
['06700000', '06729999'], // Cotia
['06730000', '06739999'], // Vargem Grande Paulista
['06800000', '06809999'], // Embu
['06810000', '06849999'], // Embu das Artes
['06850000', '06889999'], // Itapecerica da Serra
['07700000', '07749999'], // Caieiras
['07800000', '07899999'], // Franco da Rocha
['07900000', '07999999'], // Francisco Morato
['07000000', '07399999'], // Guarulhos
['08600000', '08699999'], // Suzano
['08500000', '08549999'], // Ferraz de Vasconcelos
['08550000', '08569999'], // Poá - NOVA FAIXA
['08570000', '08599999'], // Itaquaquecetuba
['07400000', '07499999'], // Arujá
['07500000', '07599999'], // Santa Isabel
['08700000', '08899999'], // Mogi das Cruzes
['08900000', '08999999'], // Guararema
['09000000', '09299999'], // Santo André
['09300000', '09399999'], // Mauá
['09500000', '09599999'], // São Caetano do Sul
['09600000', '09899999'], // São Bernardo do Campo
['09900000', '09999999'], // Diadema
['09400000', '09499999'], // Ribeirão Pires
['09450000', '09459999'], // Rio Grande da Serra
['11000000', '11099999'], // Santos
['11300000', '11399999'], // São Vicente
['11700000', '11729999'], // Praia Grande
['11730000', '11749999'], // Mongaguá
['11740000', '11749999'], // Itanhaém
['11750000', '11759999'], // Peruíbe
];
private isCepValido(cep: string): boolean {
// Normalizar o CEP: remover caracteres não numéricos e garantir 8 dígitos
const cepNormalizado = cep.replace(/\D/g, '').padStart(8, '0');
const isValid = this.faixasCep.some(([inicio, fim]) => {
// Normalizar os CEPs da faixa
const inicioNormalizado = inicio.replace(/\D/g, '').padStart(8, '0');
const fimNormalizado = fim.replace(/\D/g, '').padStart(8, '0');
// Comparação como strings
const result = cepNormalizado >= inicioNormalizado && cepNormalizado <= fimNormalizado;
return result;
});
return isValid;
}
public calcularFrete(payload: any): any {
console.log('Calculando frete para Sage Transportes...');
const cepDestino = payload.Destino.cep;
const isValido = this.isCepValido(cepDestino);
if (!isValido) {
return null; // Fora da área atendida
}
// Determinar o valor do frete com base no CEP
const cepNumerico = parseInt(cepDestino.replace(/\D/g, ''), 10);
const valorFrete = cepNumerico > 10000000 ? '390.00' : '250.00';
return {
transportadora: 'Sage Transportes',
codigo: 99999,
descricao: 'Cotação realizada',
cotacao: {
codigo: 123456,
msg: 'Sage Transportes - Cotação realizada',
valor: valorFrete,
prazo_min: 1,
prazo_max: 3,
},
};
}
}