public void SetUp() { _produtoNfe = new ProdutoNfe(); _produtoNfeRepositorio = new ProdutoNFeRepositorioSql(); produtoId = 1; nfeID = 1; }
public void Imposto_Dominio_Calcular_ProdutoNull_EsperadoFalha() { _produtoNfe = null; Action action = () => _imposto = new Imposto(_produtoNfe); action.Should().Throw <ExcecaoProdutoNulo>(); }
public void ProdutoNFe_InfraData_Inserir_QuantidadeInvalida_EsperadoFalha() { _produtoNfe = ProdutoNfeObjetoMae.ObterProdutoNfe(); _produtoNfe.Quantidade = -1; Action action = () => _produtoNfeRepositorio.Inserir(_produtoNfe, nfeID, produtoId); action.Should().Throw <ExcecaoQuantidadeInvalida>(); }
private void Calcular(ProdutoNfe Produto) { if (Produto == null) { throw new ExcecaoProdutoNulo(); } this.ValorIPI = (Produto.ValorUnitario * Produto.Quantidade) * AliquotaIPI; this.ValorICMS = (Produto.ValorUnitario * Produto.Quantidade) * AliquotaICMS; }
public void ProdutoNFe_InfraData_Inserir_ComProdutoIdInvalido_EsperadoFalha() { _produtoNfe = ProdutoNfeObjetoMae.ObterProdutoNfe(); produtoId = 0; Action action = () => _produtoNfeRepositorio.Inserir(_produtoNfe, nfeID, produtoId); action.Should().Throw <ExcecaoIdentificadorInvalido>(); }
public void Teste_InfraData_Produto_Atualizar_EsperadoOK() { BaseSqlTeste.SemearBancoParaProdutoNfe(); _produtoNfe = ProdutoNfeObjetoMae.ObterProdutoNfe(); ProdutoNfe produtoNfe = _produtoNfeRepositorio.Atualizar(_produtoNfe, nfeID, produtoId); produtoNfe.ID.Should().Be(_produtoNfe.ID); }
public void ProdutoNFe_InfraData_Inserir_EsperadoOK() { BaseSqlTeste.SemearBancoParaProdutoNfe(); _produtoNfe = ProdutoNfeObjetoMae.ObterProdutoNfe(); ProdutoNfe produtoNfe = _produtoNfeRepositorio.Inserir(_produtoNfe, nfeID, produtoId); produtoNfe.ID.Should().BeGreaterThan(0); }
public ProdutoNfe Atualizar(ProdutoNfe produtoNfe, long nfeID, long produtoId) { if (produtoNfe.ID < 1 || nfeID < 1 || produtoId < 1) { throw new ExcecaoIdentificadorInvalido(); } Db.Update(_sqlAtualizar, ObtemParametros(produtoNfe, nfeID, produtoId)); return(produtoNfe); }
private Dictionary <string, object> ObtemParametros(ProdutoNfe produtoNfe, long nfeID, long produtoId) { var parms = new Dictionary <string, object>(); parms.Add("ID", produtoNfe.ID); parms.Add("Quantidade", produtoNfe.Quantidade); parms.Add("ProdutoID", produtoId); parms.Add("NotaFiscalID", nfeID); parms.Add("ValorICMS", produtoNfe.Imposto.ValorICMS); parms.Add("ValorIPI", produtoNfe.Imposto.ValorIPI); return(parms); }
private ProdutoNfe SetarParmetros(IDataReader reader) { var produtoNfe = new ProdutoNfe(); produtoNfe.ID = Convert.ToInt32(reader["Id"]); produtoNfe.ProdutoID = Convert.ToInt32(reader["ProdutoID"]); produtoNfe.Quantidade = Convert.ToInt32(reader["Quantidade"]); produtoNfe.Imposto.ValorIPI = Convert.ToDouble(reader["ValorIPI"]); produtoNfe.Imposto.ValorICMS = Convert.ToDouble(reader["ValorICMS"]); return(produtoNfe); }
public static ProdutoNfe ObterProdutoNfe() { ProdutoNfe nfe = new ProdutoNfe(); nfe.ID = 1; nfe.ValorUnitario = 123; nfe.Quantidade = 12; nfe.Imposto = new Imposto(nfe); nfe.Imposto.ValorICMS = 12345.12; nfe.Imposto.ValorIPI = 2345.23; return(nfe); }
public ProdutoNfe Inserir(ProdutoNfe produto, long nfeID, long produtoId) { if (nfeID < 1 || produtoId < 1) { throw new ExcecaoIdentificadorInvalido(); } produto.Validar(); produto.ID = Db.Insert(_sqlInserir, ObtemParametros(produto, nfeID, produtoId)); return(produto); }
private static List <ProdutoNfe> PegarListaProdutos() { List <ProdutoNfe> lista = new List <ProdutoNfe>(); ProdutoNfe nfe = new ProdutoNfe(); nfe.ID = 1; nfe.Descricao = "Descrição produto 1"; nfe.CodigoProduto = "111111"; nfe.Quantidade = 11; nfe.ValorUnitario = 111; nfe.Imposto = new Imposto(nfe); nfe.Imposto.ValorICMS = 11111111; nfe.Imposto.ValorIPI = 1111; lista.Add(nfe); return(lista); }
public static List <ProdutoNfe> ObterListaDeProdutosNfe() { List <ProdutoNfe> listaProdutos = new List <ProdutoNfe>(); ProdutoNfe nfe = new ProdutoNfe(); nfe.ID = 1; nfe.Descricao = "Descrição produto 1"; nfe.CodigoProduto = "111111"; nfe.Quantidade = 11; nfe.ValorUnitario = 111; nfe.Imposto = new Imposto(nfe); nfe.Imposto.ValorICMS = 11111111; nfe.Imposto.ValorIPI = 1111; listaProdutos.Add(nfe); return(listaProdutos); }
public static List <ProdutoNfe> MapearDeNFeDetModel(List <DetXmlModel> dets) { List <ProdutoNfe> produtos = new List <ProdutoNfe>(); foreach (var det in dets) { ProdutoNfe produto = new ProdutoNfe(); produto.ID = det.Id; produto.CodigoProduto = det.Prod.CProd; produto.Quantidade = Convert.ToInt32(det.Prod.QCom); produto.ValorTotal = Convert.ToInt32(det.Prod.VProd); produto.ValorUnitario = Convert.ToDouble(det.Prod.VUnCom); produto.Descricao = det.Prod.xProd; produto.Imposto = new Imposto(produto); produto.Imposto.ValorICMS = Convert.ToDouble(det.Imposto.VICMS); det.Imposto = new ImpostoXmlModel(); produtos.Add(produto); } return(produtos); }
public Imposto(ProdutoNfe produto) { Calcular(produto); }
public ProdutoNfe Atualizar(ProdutoNfe produtoNfe) { throw new ExcexaoOperacaoNaoSuportada(); }
public ProdutoNfe Inserir(ProdutoNfe produtoNfe) { throw new ExcexaoOperacaoNaoSuportada(); }
public void SetUp() { _produtoNfe = new ProdutoNfe(); _imposto = new Imposto(_produtoNfe); }
protected void btnImportar_Click(object sender, EventArgs e) { try { if (this.txtUpload.PostedFile == null) { ModelState.AddModelError(string.Empty, "Nenhum arquivo informado"); } if (this.txtUpload.PostedFile.ContentLength == 0) { ModelState.AddModelError(string.Empty, "Arquivo inválido"); } var extensao = new FileInfo(this.txtUpload.PostedFile.FileName)?.Extension?.ToUpper() ?? string.Empty; if (string.IsNullOrWhiteSpace(extensao)) { ModelState.AddModelError(string.Empty, "Arquivo inválido"); } if (!extensao.Equals(".XML") && !extensao.Equals(".TXT") && !extensao.Equals(".CSV")) { ModelState.AddModelError(string.Empty, "É permitido apenas importação de arquivos .txt, .csv ou .xml"); } if (!ModelState.IsValid) { return; } if (!UploadArquivo(this.txtUpload)) { throw new Exception("O arquivo não pode ser processado. Certifique-se que já não esteja aberto em outro programa"); } if (extensao == ".XML") { try { var dueBusca = _documentoUnicoExportacaoDAO.ObterDUEPorId(this.txtDueID.Value.ToInt()); if (dueBusca == null) { throw new Exception("DUE não encontrada"); } if (this.txtUpload.HasFiles) { int xmlsImportados = 1; foreach (HttpPostedFile uploadedFile in this.txtUpload.PostedFiles) { string nomeArquivo = Path.Combine(Server.MapPath("Uploads"), uploadedFile.FileName); XmlDocument doc = new XmlDocument(); doc.Load(nomeArquivo); XmlNamespaceManager ns = new XmlNamespaceManager(doc.NameTable); ns.AddNamespace("nfe", "http://www.portalfiscal.inf.br/nfe"); var cnpjEmitente = ""; var razaoSocialEmitente = ""; var enderecoEmitente = ""; var estadoEmitente = ""; var informacoesEmitente = doc.SelectNodes("//nfe:emit", ns); foreach (XmlNode dadoEmit in informacoesEmitente) { foreach (XmlNode childNode in dadoEmit.ChildNodes) { if (childNode.Name == "CNPJ") { cnpjEmitente = childNode.InnerText; } if (childNode.Name == "xNome") { razaoSocialEmitente = childNode.InnerText; } if (childNode.Name == "enderEmit") { foreach (XmlNode emitEndereco in childNode.ChildNodes) { if (emitEndereco.Name == "xLgr") { enderecoEmitente = emitEndereco.InnerText; } if (emitEndereco.Name == "nro") { enderecoEmitente += ", " + emitEndereco.InnerText; } if (emitEndereco.Name == "UF") { estadoEmitente = emitEndereco.InnerText; } } } } } var dadosNfe = doc.SelectNodes("//nfe:ide", ns); var numeroNf = ""; foreach (XmlNode dadoNfe in dadosNfe) { foreach (XmlNode childNode in dadoNfe.ChildNodes) { if (childNode.Name == "nNF") { numeroNf = childNode.InnerText; } } } var paisesDanfe = PaisesDAO.ObterPaisesDanfe(); var nomeDestinatario = string.Empty; var paisDestinatario = string.Empty; var logradouroDestinatario = string.Empty; var logradouroNumeroDestinatario = string.Empty; var dadosDestinatario = doc.SelectNodes("//nfe:dest", ns); foreach (XmlNode dadoDest in dadosDestinatario) { foreach (XmlNode childNode in dadoDest.ChildNodes) { if (childNode.Name == "xNome") { nomeDestinatario = childNode.InnerText; } if (childNode.Name == "enderDest") { foreach (XmlNode childNodeDest in childNode.ChildNodes) { if (childNodeDest.Name == "xLgr") { logradouroDestinatario = childNodeDest.InnerText; } if (childNodeDest.Name == "nro") { logradouroNumeroDestinatario = childNodeDest.InnerText; } if (childNodeDest.Name == "cPais") { var paisSped = paisesDanfe .Where(c => c.CodigoSPED == childNodeDest.InnerText) .FirstOrDefault(); if (paisSped != null) { if (!string.IsNullOrEmpty(paisSped.Sigla1)) { paisDestinatario = paisSped.Sigla1; } } } } } } } var enderecoDestinatario = $"{logradouroDestinatario}, {logradouroNumeroDestinatario}"; var informacoesChaveNfe = doc.SelectSingleNode("//nfe:infProt", ns); var chaveNfe = informacoesChaveNfe.ChildNodes[2].InnerText; var item = doc.SelectSingleNode("//nfe:det", ns)?.FirstChild; var listaProdutos = new List <ProdutoNfe>(); int contaItem = 1; if (item != null) { var produtos = doc.SelectNodes("//nfe:prod", ns); foreach (XmlNode produto in produtos) { var descricaoProduto = ""; var unidadeComercializada = ""; var quantidadeEstatistica = ""; var quantidadeComercializada = ""; var valorProduto = ""; var ncm = ""; foreach (XmlNode childNode in produto.ChildNodes) { if (childNode.Name == "xProd") { descricaoProduto = childNode.InnerText; } if (childNode.Name == "uTrib") { unidadeComercializada = childNode.InnerText; } if (childNode.Name == "qCom") { quantidadeComercializada = childNode.InnerText.Replace(".", ","); } if (childNode.Name == "qTrib") { quantidadeEstatistica = childNode.InnerText.Replace(".", ","); } if (childNode.Name == "vProd") { valorProduto = childNode.InnerText.Replace(".", ","); } if (childNode.Name == "NCM") { ncm = childNode.InnerText; } } var produtoNfe = new ProdutoNfe( contaItem, descricaoProduto, unidadeComercializada, quantidadeComercializada.ToDecimal(), quantidadeEstatistica.ToDecimal(), valorProduto.ToDecimal(), chaveNfe, ncm, cnpjEmitente, razaoSocialEmitente, numeroNf.ToInt()); listaProdutos.Add(produtoNfe); contaItem++; } contaItem = 1; ExcluirItensSemVinculoDeNotaFiscal(dueBusca.Id); if (listaProdutos.Any()) { foreach (var produtoNFE in listaProdutos) { var notaFiscal = new NotaFiscal(); notaFiscal.TipoNF = "EXP"; notaFiscal.Item = produtoNFE.Item; notaFiscal.ChaveNF = chaveNfe; notaFiscal.NumeroNF = numeroNf; notaFiscal.CnpjNF = cnpjEmitente; notaFiscal.QuantidadeNF = produtoNFE.QuantidadeComercializada; notaFiscal.UnidadeNF = produtoNFE.UnidadeComercializada; notaFiscal.NCM = produtoNFE.NCM; notaFiscal.Arquivo = this.txtUpload.FileName; notaFiscal.Usuario = Convert.ToInt32(Session["UsuarioId"].ToString()); notaFiscal.DueId = this.txtDueID.Value.ToInt(); notaFiscal.VMLE = this.txtVMLE.Text.ToDecimal(); notaFiscal.VMCV = this.txtVMCV.Text.ToDecimal(); notaFiscal.Enquadramento = this.cbEnquadramento.SelectedValue.ToInt(); var existeNf = _notaFiscalDAO.ExisteNotaFiscalNaDUEFromXML(notaFiscal); if (existeNf > 0) { _notaFiscalDAO.ExcluirNotaFiscaiDuePorId(existeNf); } _notaFiscalDAO.Cadastrar(notaFiscal); string enquadramento = string.Empty; decimal vmle = notaFiscal.VMLE; decimal vmcv = notaFiscal.VMCV; if (this.cbEnquadramento.SelectedValue.ToInt() > 0) { enquadramento = this.cbEnquadramento.SelectedValue; } else { enquadramento = dueBusca.Enquadramento1_Default.ToString(); } //Para cada item da nota fiscal, criar um item na DUE com a mesma chave var dueId = _documentoUnicoExportacaoDAO.CriarItensDUEFromXML( dueBusca.Id, Convert.ToInt32(Session["UsuarioId"].ToString()), cnpjEmitente, razaoSocialEmitente, enderecoEmitente, estadoEmitente, nomeDestinatario, enderecoDestinatario, paisDestinatario, produtoNFE.ChaveNFE, produtoNFE.Item, produtoNFE.NCM, produtoNFE.DescricaoProduto, produtoNFE.UnidadeComercializada, produtoNFE.QuantidadeEstatistica, produtoNFE.QuantidadeComercializada, vmle, vmcv, enquadramento, dueBusca); _documentoUnicoExportacaoDAO.MarcarComoAutomatica(this.txtDueID.Value.ToInt()); } } } xmlsImportados++; } ViewState["Sucesso"] = true; ViewState["TotalNotasFiscais"] = this.txtUpload.PostedFiles.Count; ViewState["QuantidadeImportada"] = xmlsImportados; } } catch (Exception ex) { throw new Exception("Ocorreu um problema ao processar o XML - Detalhes:" + ex.ToString()); } } else { int quantidadeImportada = 0; var notasFiscais = ProcessarArquivo(this.txtUpload.PostedFile.InputStream, ";"); var dueBusca = _documentoUnicoExportacaoDAO.ObterDUEPorId(this.txtDueID.Value.ToInt()); if (dueBusca != null) { ExcluirItensSemVinculoDeNotaFiscal(dueBusca.Id); var notasValidas = new List <NotaFiscal>(); foreach (var nf in notasFiscais) { nf.Arquivo = this.txtUpload.FileName; nf.Usuario = Convert.ToInt32(Session["UsuarioId"].ToString()); nf.DueId = this.txtDueID.Value.ToInt(); nf.VMCV = this.txtVMCV.Text.ToDecimal(); nf.VMLE = this.txtVMLE.Text.ToDecimal(); nf.Enquadramento = this.cbEnquadramento.SelectedValue.ToInt(); if (nf.TipoNF == "EXP") { } var existeNf = _notaFiscalDAO.ExisteNotaFiscalNaDUE(nf); if (existeNf > 0) { _notaFiscalDAO.ExcluirNotaFiscaiDuePorId(existeNf); } _notaFiscalDAO.Cadastrar(nf); notasValidas.Add(nf); quantidadeImportada++; } var atributosCafe = dueBusca.Attr_Padrao_Qualidade_Default + dueBusca.Attr_Tipo_Default + dueBusca.Attr_Embarque_Em_Default + dueBusca.Attr_Caracteristica_Especial_Default + dueBusca.Attr_Outra_Caracteristica_Especial_Default + dueBusca.Attr_Metodo_Processamento_Default; foreach (var notaNcm in notasFiscais) { if (notaNcm.NCM != "09011110" && notaNcm.NCM != "09011190" && notaNcm.NCM != "09011200" && notaNcm.NCM != "09012100" && notaNcm.NCM != "09012200" && notaNcm.NCM != "21011110" && notaNcm.NCM != "21011190" && notaNcm.NCM != "21011200") { if (!string.IsNullOrEmpty(atributosCafe)) { ModelState.AddModelError(string.Empty, "Você informou atributos de café nas informações default, mas o NCM da nota que está sendo cadastrada é diferente de NCMs para exportação de café."); return; } } } CriarItensDUEAutomaticamente(notasValidas); _documentoUnicoExportacaoDAO.MarcarComoAutomatica(this.txtDueID.Value.ToInt()); ViewState["Sucesso"] = true; ViewState["TotalNotasFiscais"] = notasFiscais.Count; ViewState["QuantidadeImportada"] = quantidadeImportada; } } } catch (Exception ex) { DeletarArquivo(this.txtUpload); LogsService.Logar("CadastrarDUE.aspx", ex.ToString()); ModelState.AddModelError(string.Empty, ex.Message); } }
public void SetUp() { _produtoNfe = new ProdutoNfe(); }