Esempio n. 1
0
 /// <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;
 }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
 /// <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;
 }
Esempio n. 4
0
        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);
        }