/// <summary> /// Construtor padrão. /// </summary> /// <param name="notaFiscal"></param> /// <param name="cliente"></param> /// <param name="loja"></param> /// <param name="fornecedor"></param> /// <param name="itens"></param> public NotaFiscalImpostoContainer( Data.Model.NotaFiscal notaFiscal, Global.Negocios.Entidades.Cliente cliente, Global.Negocios.Entidades.Loja loja, Global.Negocios.Entidades.Fornecedor fornecedor, IEnumerable <IItemImposto> itens) { NotaFiscal = notaFiscal; Cliente = cliente; Loja = loja; Fornecedor = fornecedor; Itens = itens; }
private async Task SalvarNotaFiscal(GDA.GDASession sessao, Data.Model.NotaFiscal notaFiscal) { var pedido = this.Converter(sessao, notaFiscal); this.logger.Info($"Salvando nota fiscal (idNf: {notaFiscal.IdNf})...".GetFormatter()); try { await this.PedidoClient.SalvarPedidoAsync(pedido); } catch (Exception ex) { var mensagem = $"Não foi possível salvar os dados da nota fiscal (IdNf: {notaFiscal.IdNf}) na Khan"; this.provedorHistorico.RegistrarFalha(HistoricoKhan.NotasFiscais, notaFiscal, mensagem, ex); throw; } var item = this.provedorHistorico.NotificarIntegrando(HistoricoKhan.NotasFiscais, notaFiscal); lock (this.itensIntegrando) { this.itensIntegrando.Add(item); } }
/// <summary> /// Inicia uma nova instância da classe <see cref="ConversorNotaFiscalPedido"/>. /// </summary> /// <param name="sessao">Sessão de conexão com o banco de dados.</param> /// <param name="notaFiscal">Nota fiscal que será convertida.</param> public ConversorNotaFiscalPedido(GDA.GDASession sessao, Data.Model.NotaFiscal notaFiscal) { this.sessao = sessao; this.notaFiscal = notaFiscal; }
private KhanPedidoServiceReference.Pedido Converter(GDA.GDASession sessao, Data.Model.NotaFiscal notaFiscal) { var cliente = Data.DAL.ClienteDAO.Instance.GetElement(sessao, notaFiscal.IdCliente.GetValueOrDefault()); var produtosNf = Data.DAL.ProdutosNfDAO.Instance.GetByNf(sessao, notaFiscal.IdNf).ToList(); var produtos = Data.DAL.ProdutoDAO.Instance.ObterProdutos(sessao, produtosNf.Select(f => f.IdProd).Distinct()).ToList(); var parcelas = Data.DAL.ParcelaNfDAO.Instance.GetByNf(sessao, notaFiscal.IdNf); var pedido = new KhanPedidoServiceReference.Pedido { Token = this.configuracao.Token, codempresa = this.configuracao.Empresa, numped_int = (int)notaFiscal.IdNf, seqped_int = 0, datped = notaFiscal.DataCad.ToString("yyyyMMdd"), numpedc = string.Empty, nomcad = cliente.Nome, tipos = "Cliente,", tipodoc1 = cliente.TipoPessoa == "J" ? PessoaJuridica : PessoaFisica, numdoc1 = cliente.CpfCnpj.SomenteNumero(), tipodoc2 = cliente.TipoPessoa == "J" ? TipoDocumentoInscricaoEstadual : TipoDocumentoNenhum, numdoc2 = cliente.TipoPessoa == "J" ? cliente.RgEscinst : null, tippag = ObterTipoPagamentoPedido(notaFiscal.FormaPagto), numpar = parcelas.Count, statusw = NotaFiscalEmitida, numped = 0, seqped = 0, email = cliente.EmailFiscal, foneddd = this.ObterDDD(cliente.TelCont), fonenum = this.ObterTelefoneSemDDD(cliente.TelCont), codven = "0", autoriz_comercial = string.Empty, contrato = string.Empty, numnf = notaFiscal.NumeroNFe.ToString(), serie = notaFiscal.Serie, xml = string.Empty, numnf_origem = string.Empty, numitens = produtosNf.Count, tipes = notaFiscal.TipoDocumento == 2 ? "S" : "E", tipoEnvio = string.Empty, codTipoEnvio = string.Empty, nf_chave = notaFiscal.ChaveAcesso, nf_contingencia = string.Empty, nf_data_contingencia = string.Empty, nf_justif_contingencia = string.Empty, nf_numprotocolo = notaFiscal.NumProtocolo ?? string.Empty, nf_operador_caixa = string.Empty, cp_terminal = string.Empty, nf_numprotocolo_Can = notaFiscal.NumProtocoloCanc ?? string.Empty, nf_dat_cancelamento = string.Empty, }; PreencherEnderecos(pedido, cliente); var sequenciaItem = 1; pedido.Itens = produtosNf .Select(produtoNf => this.ConverterItemPedido(produtoNf, produtos.FirstOrDefault(produto => produto.IdProd == produtoNf.IdProd), ref sequenciaItem)) .ToList(); var sequenciaParcela = 1; pedido.Parcelas = parcelas .Select(parcelaNf => this.ConverterParcelaPedido(parcelaNf, ref sequenciaParcela)) .ToList(); return(pedido); }