Skip to content

Instantly share code, notes, and snippets.

@pablotdv
Created July 3, 2017 15:48
Show Gist options
  • Save pablotdv/d9957b2b117e0fbcb931b33b5e58032e to your computer and use it in GitHub Desktop.
Save pablotdv/d9957b2b117e0fbcb931b33b5e58032e to your computer and use it in GitHub Desktop.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Devcompy.Models.Entities.Financeiro;
using Devcompy.Repositories.Business2.Financeiros.Models;
using Devcompy.Repositories.Business2.Pessoas;
using Devcompy.Lib;
using System.Configuration;
using Devcompy.Repositories.Business2.Estoques.Enums;
using Devcompy.Models.Entities.Pessoas;
using Devcompy.Lib.Validations;
using Devcompy.Repositories.Business2.Estoques;
using System.Globalization;
using System.IO;
using System.Xml.Serialization;
using System.Security.Cryptography.X509Certificates;
using System.Web;
using Devcompy.Models.Entities.Financeiro.Enums;
using Devcompy.Models.Entities;
using Devcompy.Lib.NFe.PL_008f;
namespace Devcompy.Repositories.Business2.Financeiros
{
public class NotaFiscalEletronicaXmlBusiness2 : BaseBusiness
{
public NotaFiscalEletronicaXmlBusiness2(int usuarioId)
: base(usuarioId)
{ }
public static NotaFiscalEletronicaXmlEntity Create(int id)
{
using (DevcompyContext context = new DevcompyContext())
{
var entity = context.NotaFiscalEletronicaXmlEntity.SingleOrDefault(a => a.NotaFiscalEletronicaXmlId == id);
if (entity != null)
{
entity.NotaFiscalEletronica = context.NotaFiscalEletronicaEntity.FirstOrDefault(a => a.NFeId == entity.NotaFiscalEletronicaId);
}
return entity;
}
}
public bool Salvar(NotaFiscalEletronicaXmlEntity entity)
{
entity.Documento = this.GerarDocumento(entity);
return base.SaveChanges(entity);
}
private string GerarDocumento(NotaFiscalEletronicaXmlEntity entity)
{
switch ((NotaFiscalEletronicaXmlTipoEnum)entity.Tipo)
{
case NotaFiscalEletronicaXmlTipoEnum.EnviNFe: return this.GerarDocumentoEnviNFe(entity.NotaFiscalEletronicaId);
default: return entity.Documento;
}
}
private string GerarDocumentoEnviNFe(int nfeId)
{
try
{
try
{
var nfeEntity = Context.NotaFiscalEletronicaEntity.SingleOrDefault(a => a.NFeId == nfeId);
var empresa = Context.EmpresaEntity.SingleOrDefault(a => a.EmpresaId == nfeEntity.EmpresaId);
empresa.PessoaJuridica = Context.PessoaJuridicaEntity.FirstOrDefault(a => a.PessoaId == empresa.EmpresaId);
string idLote = String.Format("{0:yyyymmddhhmmss}", DateTime.Now);
var endereco = PessoaBusiness2.EnderecoPrincipal(empresa.EmpresaId);
if (endereco == null)
throw new DevcompyException("Endereço do emitente é obrigatório!");
if (endereco.Cidade == null)
throw new DevcompyException("Cidade não informada no endereço do emitente!");
if (endereco.Cidade.Estado == null)
throw new DevcompyException("Estado não informado na cidade do endereço do emitente!");
if (endereco.Cidade.Estado.Sigla == null)
throw new DevcompyException("Sigla não informado no cadasdo do estado do endereço do emitente");
var cliente = Context.PessoaEntity.FirstOrDefault(a => a.PessoaId == nfeEntity.PessoaId);
var clienteEndereco = PessoaBusiness2.EnderecoPrincipal(cliente.PessoaId);
if (clienteEndereco == null)
throw new DevcompyException("Endereço do destinatário é obrigatório!");
if (clienteEndereco.Cidade == null)
throw new DevcompyException("Cidade não informada no endereço do destinatário!");
if (clienteEndereco.Cidade.Estado == null)
throw new DevcompyException("Estado não informado na cidade do endereço do destinatário!");
if (clienteEndereco.Cidade.Estado.Sigla == null)
throw new DevcompyException("Sigla não informado no cadasdo do estado do endereço do destinatário");
TNFe nfe = new TNFe();
nfe.infNFe = new TNFeInfNFe();
nfe.infNFe.versao = "3.10";
string cNF = nfeEntity.CodigoNumerico.ToString();
string nNF = nfeEntity.NumeroDocumentoFiscal.ToString();
string serie = Devcompy2.ToInt32(nfeEntity.SerieDocumentoFiscal, 1).ToString();
string cDV = nfeEntity.DigitoVerificador.ToString();
string chave = nfeEntity.ChaveAcesso;
nfe.infNFe.Id = "NFe" + chave;
nfe.infNFe.ide = new TNFeInfNFeIde();
nfe.infNFe.ide.cUF = TCodUfIBGE.Item43;
nfe.infNFe.ide.cNF = cNF.PadLeft(8, '0');
nfe.infNFe.ide.natOp = nfeEntity.NaturezaOperacao;
if (nfeEntity.IndPag == IndPagEnum.PagamentoAvista)
nfe.infNFe.ide.indPag = TNFeInfNFeIdeIndPag.Item0;
else if (nfeEntity.IndPag == IndPagEnum.PagamentoAprazo)
nfe.infNFe.ide.indPag = TNFeInfNFeIdeIndPag.Item1;
else if (nfeEntity.IndPag == IndPagEnum.Outros)
nfe.infNFe.ide.indPag = TNFeInfNFeIdeIndPag.Item2;
nfe.infNFe.ide.mod = TMod.Item55;
nfe.infNFe.ide.serie = serie;
nfe.infNFe.ide.nNF = nNF;
nfeEntity.DataEmissao = DateTime.Now;
nfe.infNFe.ide.dhEmi = String.Format("{0:yyyy-MM-ddTHH:mm:sszzz}", nfeEntity.DataEmissao);
nfe.infNFe.ide.idDest = TNFeInfNFeIdeIdDest.Item1;
if (endereco.Cidade.Estado.Sigla != clienteEndereco.Cidade.Estado.Sigla)
nfe.infNFe.ide.idDest = TNFeInfNFeIdeIdDest.Item2;
nfe.infNFe.infAdic = new TNFeInfNFeInfAdic();
if (!String.IsNullOrWhiteSpace(nfeEntity.InfoCpl.Trim()))
nfe.infNFe.infAdic.infCpl = nfeEntity.InfoCpl.Trim();
if (!String.IsNullOrWhiteSpace(nfeEntity.InfAdFisco.Trim()))
nfe.infNFe.infAdic.infAdFisco = nfeEntity.InfAdFisco.Trim();
var tpAmb = TAmb.Item2;
if (nfeEntity.TpAmb == TpAmbEnum.Producacao)
tpAmb = TAmb.Item1;
if (nfeEntity.DataHoraSaida.HasValue)
{
nfe.infNFe.ide.dhSaiEnt = String.Format("{0:yyyy-MM-ddTHH:mm:sszzz}", nfeEntity.DataHoraSaida);
}
if (nfeEntity.TpNF == TpNFEnum.Entrada)
nfe.infNFe.ide.tpNF = TNFeInfNFeIdeTpNF.Item0;
else if (nfeEntity.TpNF == TpNFEnum.Saida)
nfe.infNFe.ide.tpNF = TNFeInfNFeIdeTpNF.Item1;
if (!endereco.Cidade.CodigoIbge.HasValue)
this.Erros.Add(new DevcompyException("Campo \"Código da NFe\" não preenchido para a cidade " + endereco.Cidade.Descricao));
nfe.infNFe.ide.cMunFG = endereco.Cidade.CodigoIbge.ToString();
nfe.infNFe.ide.tpImp = TNFeInfNFeIdeTpImp.Item1;
nfe.infNFe.ide.tpEmis = TNFeInfNFeIdeTpEmis.Item1;
nfe.infNFe.ide.cDV = cDV;
nfe.infNFe.ide.tpAmb = tpAmb;
nfe.infNFe.ide.indFinal = GetIndFinal(nfeEntity.IndFinal);
if (nfeEntity.FinNFe.HasValue)
nfe.infNFe.ide.finNFe = GetFinNfe(nfeEntity.FinNFe.Value);
//ver par vincular documentos de entrada
var nfeRefs = (from n in Context.NFeRefEntity
join nota in Context.EstoqueEntity on n.EstoqueId equals nota.EstoqueId
where n.NFeId == nfeEntity.NFeId
select new
{
ChaveAcesso = nota.ChaveAcesso
}).ToList();
if (nfeRefs.Count() > 0)
{
nfe.infNFe.ide.NFref = new TNFeInfNFeIdeNFref[nfeRefs.Count()];
foreach (var nfeRef in nfeRefs)
{
TNFeInfNFeIdeNFref nfRef = new TNFeInfNFeIdeNFref();
nfRef.ItemElementName = ItemChoiceType1.refNFe;
nfRef.Item = nfeRef.ChaveAcesso;
nfe.infNFe.ide.NFref[nfeRefs.IndexOf(nfeRef)] = nfRef;
}
}
var nfeEstornos = (from e in Context.NFeEstoqueEntity
join ne in Context.NotaFiscalEletronicaEntity on e.NFeId equals ne.NFeId
where (
from n2 in Context.NFeEstoqueEntity
join e2 in Context.EstoqueEntity on n2.EstoqueId equals e2.EstoqueId
where n2.NFeId == nfeEntity.NFeId
select e2.NFeEstornoId
).Contains(e.NFeId)
select ne).ToList();
if (nfeEstornos.Count() > 0)
{
nfe.infNFe.ide.NFref = new TNFeInfNFeIdeNFref[nfeEstornos.Count()];
TNFeInfNFeIdeNFref nfRef = new TNFeInfNFeIdeNFref();
nfRef.ItemElementName = ItemChoiceType1.refNFe;
foreach (var nfeEstorno in nfeEstornos)
{
nfRef.Item = nfeEstorno.ChaveAcesso;
nfe.infNFe.ide.NFref[nfeEstornos.IndexOf(nfeEstorno)] = nfRef;
}
}
nfe.infNFe.ide.procEmi = TProcEmi.Item0;
nfe.infNFe.ide.verProc = "3.10";
nfe.infNFe.emit = new TNFeInfNFeEmit();
nfe.infNFe.emit.ItemElementName = ItemChoiceType2.CNPJ;
nfe.infNFe.emit.Item = empresa.PessoaJuridica.CpfCnpj.Trim();
nfe.infNFe.emit.xNome = empresa.PessoaJuridica.Nome;
nfe.infNFe.emit.xFant = empresa.PessoaJuridica.NomeFantasia;
nfe.infNFe.emit.enderEmit = new TEnderEmi();
nfe.infNFe.emit.enderEmit.xLgr = endereco.Logradouro;
nfe.infNFe.emit.enderEmit.nro = endereco.Numero;
if (!String.IsNullOrWhiteSpace(endereco.Complemento))
nfe.infNFe.emit.enderEmit.xCpl = endereco.Complemento;
nfe.infNFe.emit.enderEmit.xBairro = endereco.Bairro.Descricao;
if (!endereco.Cidade.CodigoIbge.HasValue)
throw new DevcompyException("Campo \"Código da NFe\" não preenchido para a cidade " + endereco.Cidade.Descricao);
nfe.infNFe.emit.enderEmit.cMun = endereco.Cidade.CodigoIbge.ToString();
nfe.infNFe.emit.enderEmit.xMun = endereco.Cidade.Descricao;
nfe.infNFe.emit.enderEmit.UF = (TUfEmi)Enum.Parse(typeof(TUfEmi), endereco.Cidade.Estado.Sigla, true);
nfe.infNFe.emit.enderEmit.CEP = endereco.Cep;
nfe.infNFe.emit.enderEmit.cPais = TEnderEmiCPais.Item1058;
nfe.infNFe.emit.enderEmit.xPais = TEnderEmiXPais.Brasil;
nfe.infNFe.emit.IE = empresa.PessoaJuridica.InscricaoEstadual;
nfe.infNFe.emit.CRT = TNFeInfNFeEmitCRT.Item1;
nfe.infNFe.dest = new TNFeInfNFeDest();
var cpfCnpj = ItemChoiceType3.CNPJ;
if (cliente is PessoaJuridicaEntity)
cpfCnpj = ItemChoiceType3.CNPJ;
else cpfCnpj = ItemChoiceType3.CPF;
if (tpAmb == TAmb.Item2)
{
nfe.infNFe.dest.ItemElementName = ItemChoiceType3.CNPJ;
nfe.infNFe.dest.Item = "99999999000191";
nfe.infNFe.dest.xNome = "NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL";
nfe.infNFe.dest.indIEDest = TNFeInfNFeDestIndIEDest.Item9;
}
else
{
nfe.infNFe.dest.ItemElementName = cpfCnpj;
nfe.infNFe.dest.Item = cliente.CpfCnpj.Trim();
nfe.infNFe.dest.xNome = cliente.Nome;
nfe.infNFe.dest.indIEDest = TNFeInfNFeDestIndIEDest.Item2;
if (cpfCnpj == ItemChoiceType3.CNPJ)
{
if (cliente is PessoaJuridicaEntity)
{
var pj = cliente as PessoaJuridicaEntity;
if (!String.IsNullOrWhiteSpace(pj.InscricaoEstadual))
{
nfe.infNFe.dest.IE = pj.InscricaoEstadual;
nfe.infNFe.dest.indIEDest = TNFeInfNFeDestIndIEDest.Item1;
}
else nfe.infNFe.dest.indIEDest = TNFeInfNFeDestIndIEDest.Item9;
}
else nfe.infNFe.dest.indIEDest = TNFeInfNFeDestIndIEDest.Item9;
}
}
if (!String.IsNullOrEmpty(cliente.Email))
nfe.infNFe.dest.email = cliente.Email;
nfe.infNFe.dest.enderDest = new TEndereco();
if (clienteEndereco == null)
this.Erros.Add(new DevcompyException("Endereço não informado para o cliente."));
else
{
if (String.IsNullOrWhiteSpace(clienteEndereco.Logradouro))
this.Erros.Add(new DevcompyException(Mensagens.CampoNaoPreenchidoCliente("Logradouro")));
else nfe.infNFe.dest.enderDest.xLgr = clienteEndereco.Logradouro;
if (String.IsNullOrWhiteSpace(clienteEndereco.Numero))
this.Erros.Add(new DevcompyException(Mensagens.CampoNaoPreenchidoCliente("Número")));
else nfe.infNFe.dest.enderDest.nro = clienteEndereco.Numero;
if (!String.IsNullOrWhiteSpace(clienteEndereco.Complemento))
nfe.infNFe.dest.enderDest.xCpl = clienteEndereco.Complemento;
if (clienteEndereco.Bairro == null)
this.Erros.Add(new DevcompyException(Mensagens.CampoNaoPreenchidoCliente("Bairro")));
else nfe.infNFe.dest.enderDest.xBairro = clienteEndereco.Bairro.Descricao;
if (clienteEndereco.Cidade != null && !clienteEndereco.Cidade.CodigoIbge.HasValue)
this.Erros.Add(new DevcompyException("Campo \"Código da NFe\" não preenchido para a cidade " + clienteEndereco.Cidade.Descricao));
else nfe.infNFe.dest.enderDest.cMun = clienteEndereco.Cidade.CodigoIbge.ToString();
if (clienteEndereco.Cidade == null)
this.Erros.Add(new DevcompyException(Mensagens.CampoNaoPreenchidoCliente("Cidade")));
else nfe.infNFe.dest.enderDest.xMun = clienteEndereco.Cidade.Descricao;
nfe.infNFe.dest.enderDest.UF = (TUf)Enum.Parse(typeof(TUf), clienteEndereco.Cidade.Estado.Sigla, true);
if (!String.IsNullOrWhiteSpace(clienteEndereco.Cep))
nfe.infNFe.dest.enderDest.CEP = clienteEndereco.Cep;
else this.Erros.Add(new DevcompyException("Campo \"CEP\" não preenchido no cadastro do cliente"));
nfe.infNFe.dest.enderDest.cPais = Tpais.Item1058;
nfe.infNFe.dest.enderDest.xPais = "BRASIL";
var telefonePrincipal = PessoaBusiness2.TelefonePrincipal(cliente.PessoaId);
if (!String.IsNullOrEmpty(telefonePrincipal))
nfe.infNFe.dest.enderDest.fone = telefonePrincipal;
}
nfe.infNFe.transp = new TNFeInfNFeTransp();
nfe.infNFe.transp.modFrete = TNFeInfNFeTranspModFrete.Item9;
if (nfeEntity.ModFrete.HasValue)
{
switch (nfeEntity.ModFrete.Value)
{
case ModFreteEnum.Emitente:
nfe.infNFe.transp.modFrete = TNFeInfNFeTranspModFrete.Item0;
break;
case ModFreteEnum.DestinatarioTemetente:
nfe.infNFe.transp.modFrete = TNFeInfNFeTranspModFrete.Item1;
break;
case ModFreteEnum.Terceiros:
nfe.infNFe.transp.modFrete = TNFeInfNFeTranspModFrete.Item2;
break;
case ModFreteEnum.SemFrete:
nfe.infNFe.transp.modFrete = TNFeInfNFeTranspModFrete.Item9;
break;
}
}
int i = 1;
int j = 0;
decimal valorTotal = 0;
decimal nfeValorDesconto = 0;
decimal nfeVoutros = 0;
decimal vBC = 0;
decimal vICMS = 0;
decimal vIPI = 0;
decimal vST = 0;
decimal vBCST = 0;
decimal vICMSDeson = 0;
#region Produtos
var produtos = NotaFiscalEletronicaBusiness2.PesquisarEstoque(nfeEntity.NFeId).OrderBy(a => a.EstoqueProdutoId).ToList();
nfe.infNFe.det = new TNFeInfNFeDet[produtos.Count()];
foreach (var produto in produtos)
{
decimal valorVenda = produto.ValorVenda;
decimal valorAcrescimo = Math.Abs(produto.ValorAcrescimo);
if (produto.AcrescimoDesconto == false)
{
valorVenda = produto.ValorVenda + Math.Abs(produto.ValorAcrescimo) - Math.Abs(produto.ValorDesconto);
}
TNFeInfNFeDet infNfeDet = new TNFeInfNFeDet();
infNfeDet.nItem = i.ToString();
infNfeDet.prod = new TNFeInfNFeDetProd();
infNfeDet.prod.cProd = produto.ProdutoId.ToString();
if (produto.CodBarras == null)
produto.CodBarras = "";
infNfeDet.prod.cEAN = produto.CodBarras;
infNfeDet.prod.xProd = produto.Descricao;
infNfeDet.prod.NCM = produto.CodigoNCM;
if (produto.CFOPNFe.HasValue)
infNfeDet.prod.CFOP = GetCFOP(produto.CFOPNFe.Value);
if (produto.UnidadeComercial != null)
infNfeDet.prod.uCom = produto.UnidadeComercial.Trim();
else infNfeDet.prod.uCom = "UN";
infNfeDet.prod.qCom = Math.Abs(produto.Quantidade).ToString("#0.0000", CultureInfo.InvariantCulture);
infNfeDet.prod.vUnCom = valorVenda.ToString("#0.0000", CultureInfo.InvariantCulture);
var vProd = valorVenda * Math.Abs(produto.Quantidade);
infNfeDet.prod.vProd = vProd.ToString("#0.00", CultureInfo.InvariantCulture);
decimal vOutros = 0;
if (produto.AcrescimoDesconto == true)
{
vOutros = valorAcrescimo * produto.QuantidadeAbs;
if (vOutros > 0)
infNfeDet.prod.vOutro = vOutros.ToString("#0.00", CultureInfo.InvariantCulture);
}
infNfeDet.prod.cEANTrib = produto.CodBarras;
infNfeDet.prod.vUnTrib = valorVenda.ToString("#0.0000", CultureInfo.InvariantCulture);
//if (valorFrete.HasValue && nfe.infNFe.transp.modFrete == TNFeInfNFeTranspModFrete.Item0)
//{
// if (produto == produtos.Last())
// infNfeDet.prod.vFrete = valorFrete.Value.ToString("#0.00", CultureInfo.InvariantCulture);
// else
// {
// decimal percentual = ((produto.ValorTotal * 100) / estoque.ValorTotal) / 100;
// decimal vFrete = estoque.ValorFrete.Value * percentual;
// infNfeDet.prod.vFrete = vFrete.ToString("#0.00", CultureInfo.InvariantCulture);
// valorFrete = valorFrete - vFrete;
// }
//}
//infNfeDet.prod.vFrete = 0.ToString("#0.00", CultureInfo.InvariantCulture);
infNfeDet.prod.uTrib = infNfeDet.prod.uCom;
infNfeDet.prod.qTrib = Math.Abs(produto.Quantidade).ToString("#0.0000", CultureInfo.InvariantCulture);
decimal valorDesconto = 0;
if (produto.AcrescimoDesconto == true)
{
valorDesconto = Math.Abs(produto.ValorDesconto * Math.Abs(produto.Quantidade));
if (valorDesconto > 0)
infNfeDet.prod.vDesc = valorDesconto.ToString("#0.00", CultureInfo.InvariantCulture);
}
infNfeDet.prod.indTot = TNFeInfNFeDetProdIndTot.Item1;
//TNFeInfNFeDetImpostoICMSICMSSN900
//TODO: Retirar da Classe TNFeInfNFeDetImpostoICMSICMSSN900 modBC e modBCST
TNFeInfNFeDetImpostoICMS icms = SetaIcms(ref vBC, ref vICMS, ref vST, ref vBCST, produto);
TNFeInfNFeDetImpostoPIS pis = SetaPis();
var estoqueProdutoIpi = Context.EstoqueProdutoIpi.FirstOrDefault(a => a.EstoqueProdutoIpiId == produto.EstoqueProdutoId);
TIpi ipi = null;
if (estoqueProdutoIpi != null)
{
ipi = new TIpi();
if (!String.IsNullOrWhiteSpace(estoqueProdutoIpi.clEnq))
ipi.clEnq = estoqueProdutoIpi.clEnq;
if (!String.IsNullOrWhiteSpace(estoqueProdutoIpi.CNPJProd))
ipi.CNPJProd = estoqueProdutoIpi.CNPJProd;
if (!String.IsNullOrWhiteSpace(estoqueProdutoIpi.cSelo))
ipi.cSelo = estoqueProdutoIpi.cSelo;
if (estoqueProdutoIpi.qSelo.HasValue)
ipi.qSelo = estoqueProdutoIpi.qSelo.Value.ToString();
if (!String.IsNullOrWhiteSpace(estoqueProdutoIpi.cEnq))
ipi.cEnq = estoqueProdutoIpi.cEnq;
if (estoqueProdutoIpi.CST.StartsWith("IPITRIB"))
{
TIpiIPITrib ipiTrib = new TIpiIPITrib();
switch (estoqueProdutoIpi.CST)
{
case "IPITRIB00":
ipiTrib.CST = TIpiIPITribCST.Item00;
break;
case "IPITRIB49":
ipiTrib.CST = TIpiIPITribCST.Item49;
break;
case "IPITRIB50":
ipiTrib.CST = TIpiIPITribCST.Item50;
break;
case "IPITRIB99":
ipiTrib.CST = TIpiIPITribCST.Item99;
break;
};
//Percentual
if (estoqueProdutoIpi.TipoCalculo.HasValue && estoqueProdutoIpi.TipoCalculo.Value == 0)
{
ipiTrib.Items = new string[2];
ipiTrib.ItemsElementName = new ItemsChoiceType[2];
if (estoqueProdutoIpi.vBC.HasValue)
{
ipiTrib.Items[0] = estoqueProdutoIpi.vBC.Value.ToString("#0.00", CultureInfo.InvariantCulture);
ipiTrib.ItemsElementName[0] = ItemsChoiceType.vBC;
}
if (estoqueProdutoIpi.pIPI.HasValue)
{
ipiTrib.Items[1] = estoqueProdutoIpi.pIPI.Value.ToString("#0.00", CultureInfo.InvariantCulture);
ipiTrib.ItemsElementName[1] = ItemsChoiceType.pIPI;
}
}
//Valor
else if (estoqueProdutoIpi.TipoCalculo.HasValue && estoqueProdutoIpi.TipoCalculo.Value == 1)
{
ipiTrib.Items = new string[2];
ipiTrib.ItemsElementName = new ItemsChoiceType[2];
if (estoqueProdutoIpi.qUnid.HasValue)
{
ipiTrib.Items[0] = estoqueProdutoIpi.qUnid.Value.ToString("#0.0000", CultureInfo.InvariantCulture);
ipiTrib.ItemsElementName[0] = ItemsChoiceType.qUnid;
}
if (estoqueProdutoIpi.vUnid.HasValue)
{
ipiTrib.Items[1] = estoqueProdutoIpi.vUnid.Value.ToString("#0.0000", CultureInfo.InvariantCulture);
ipiTrib.ItemsElementName[1] = ItemsChoiceType.vUnid;
}
}
if (estoqueProdutoIpi.vIPI.HasValue)
{
ipiTrib.vIPI = estoqueProdutoIpi.vIPI.Value.ToString("#0.00", CultureInfo.InvariantCulture);
vIPI += estoqueProdutoIpi.vIPI.Value;
}
ipi.Item = ipiTrib;
}
else if (estoqueProdutoIpi.CST.StartsWith("IPINT"))
{
TIpiIPINT ipiInt = new TIpiIPINT();
switch (estoqueProdutoIpi.CST)
{
case "IPINT01": ipiInt.CST = TIpiIPINTCST.Item01; break;
case "IPINT02": ipiInt.CST = TIpiIPINTCST.Item02; break;
case "IPINT03": ipiInt.CST = TIpiIPINTCST.Item03; break;
case "IPINT04": ipiInt.CST = TIpiIPINTCST.Item04; break;
case "IPINT05": ipiInt.CST = TIpiIPINTCST.Item05; break;
case "IPINT51": ipiInt.CST = TIpiIPINTCST.Item51; break;
case "IPINT52": ipiInt.CST = TIpiIPINTCST.Item52; break;
case "IPINT53": ipiInt.CST = TIpiIPINTCST.Item53; break;
case "IPINT54": ipiInt.CST = TIpiIPINTCST.Item54; break;
case "IPINT55": ipiInt.CST = TIpiIPINTCST.Item55; break;
};
ipi.Item = ipiInt;
}
}
infNfeDet.imposto = new TNFeInfNFeDetImposto();
//infNfeDet.imposto.Items = new List<object>();
if (infNfeDet.imposto.Items == null)
{
if (ipi != null)
infNfeDet.imposto.Items = new object[2];
else infNfeDet.imposto.Items = new object[1];
}
infNfeDet.imposto.Items[0] = icms;
if (ipi != null)
infNfeDet.imposto.Items[1] = ipi;
infNfeDet.imposto.PIS = pis;
infNfeDet.imposto.COFINS = new TNFeInfNFeDetImpostoCOFINS();
infNfeDet.imposto.COFINS.Item = new TNFeInfNFeDetImpostoCOFINSCOFINSNT();
(infNfeDet.imposto.COFINS.Item as TNFeInfNFeDetImpostoCOFINSCOFINSNT).CST = TNFeInfNFeDetImpostoCOFINSCOFINSNTCST.Item07;
nfe.infNFe.det[j] = infNfeDet;
j++;
i++;
valorTotal += (valorVenda * produto.QuantidadeAbs);
nfeValorDesconto += valorDesconto;
nfeVoutros += vOutros;
}
#endregion
#region Servios
//var servicos = this.PesquisarServicos(nfeEntity.NFeId);
#endregion
nfe.infNFe.total = new TNFeInfNFeTotal();
nfe.infNFe.total.ICMSTot = new TNFeInfNFeTotalICMSTot();
nfe.infNFe.total.ICMSTot.vBC = vBC.ToString("#0.00", CultureInfo.InvariantCulture);
nfe.infNFe.total.ICMSTot.vICMS = vICMS.ToString("#0.00", CultureInfo.InvariantCulture);
nfe.infNFe.total.ICMSTot.vST = vST.ToString("#0.00", CultureInfo.InvariantCulture);
nfe.infNFe.total.ICMSTot.vBCST = vBCST.ToString("#0.00", CultureInfo.InvariantCulture);
nfe.infNFe.total.ICMSTot.vICMSDeson = vICMSDeson.ToString("#0.00", CultureInfo.InvariantCulture);
nfe.infNFe.total.ICMSTot.vProd = valorTotal.ToString("#0.00", CultureInfo.InvariantCulture);
nfe.infNFe.total.ICMSTot.vSeg = "0.00";
if (nfeValorDesconto > 0)
nfe.infNFe.total.ICMSTot.vDesc = nfeValorDesconto.ToString("#0.00", CultureInfo.InvariantCulture);
else nfe.infNFe.total.ICMSTot.vDesc = "0.00";
nfe.infNFe.total.ICMSTot.vII = "0.00";
nfe.infNFe.total.ICMSTot.vIPI = vIPI.ToString("#0.00", CultureInfo.InvariantCulture);
nfe.infNFe.total.ICMSTot.vPIS = "0.00";
nfe.infNFe.total.ICMSTot.vCOFINS = "0.00";
if (nfeVoutros > 0)
nfe.infNFe.total.ICMSTot.vOutro = nfeVoutros.ToString("#0.00", CultureInfo.InvariantCulture);
else nfe.infNFe.total.ICMSTot.vOutro = "0.00";
nfe.infNFe.total.ICMSTot.vFrete = "0.00";
nfe.infNFe.total.ICMSTot.vNF = (valorTotal - nfeValorDesconto + nfeVoutros + vST + vIPI).ToString("#0.00", CultureInfo.InvariantCulture);
if (nfeEntity.TransportadoraId.HasValue)
{
var transp = Context.PessoaEntity.FirstOrDefault(a => a.PessoaId == nfeEntity.TransportadoraId);
if (transp is PessoaJuridicaEntity)
{
var transpJuridica = transp as PessoaJuridicaEntity;
var transportadora = new TNFeInfNFeTranspTransporta();
transportadora.ItemElementName = ItemChoiceType6.CNPJ;
transportadora.Item = transp.CpfCnpj.Trim();
transportadora.xNome = transp.Nome;
transportadora.IE = transpJuridica.InscricaoEstadual;
var enderecoTransportadora = PessoaBusiness2.EnderecoPrincipal(transpJuridica.PessoaId);
if (enderecoTransportadora != null && enderecoTransportadora.Cidade != null && enderecoTransportadora.Cidade.Estado != null)
{
transportadora.UF = (TUf)Enum.Parse(typeof(TUf), enderecoTransportadora.Cidade.Estado.Sigla, true); ;
transportadora.UFSpecified = true;
}
if (enderecoTransportadora != null && enderecoTransportadora.Cidade != null)
transportadora.xMun = enderecoTransportadora.Cidade.Descricao;
nfe.infNFe.transp.transporta = transportadora;
}
}
var volumes = Context.NFeVolEntity.Where(a => a.NFeId == nfeEntity.NFeId).ToList();
if (volumes.Count() > 0)
{
if (nfe.infNFe.transp == null)
nfe.infNFe.transp = new TNFeInfNFeTransp();
nfe.infNFe.transp.vol = new TNFeInfNFeTranspVol[volumes.Count()];
foreach (var volume in volumes)
{
int index = volumes.IndexOf(volume);
nfe.infNFe.transp.vol[index] = new TNFeInfNFeTranspVol();
if (volume.QtVol.HasValue)
nfe.infNFe.transp.vol[index].qVol = volume.QtVol.Value.ToString();
if (!String.IsNullOrWhiteSpace(volume.Esp))
nfe.infNFe.transp.vol[index].esp = volume.Esp.Trim();
if (!String.IsNullOrWhiteSpace(volume.Marca))
nfe.infNFe.transp.vol[index].marca = volume.Marca.Trim();
if (!String.IsNullOrWhiteSpace(volume.NumeroVol))
nfe.infNFe.transp.vol[index].nVol = volume.NumeroVol.Trim();
if (volume.PesoLiquido.HasValue)
nfe.infNFe.transp.vol[index].pesoL = volume.PesoLiquido.Value.ToString("#0.000", CultureInfo.InvariantCulture);
if (volume.PesoBruto.HasValue)
nfe.infNFe.transp.vol[index].pesoB = volume.PesoBruto.Value.ToString("#0.000", CultureInfo.InvariantCulture);
if (!String.IsNullOrWhiteSpace(volume.Lacres))
{
List<string> lacres = new List<string>();
if (volume.Lacres.Contains(','))
{
lacres = volume.Lacres.Split(',').ToList();
}
else
{
lacres.Add(volume.Lacres);
}
nfe.infNFe.transp.vol[index].lacres = new TNFeInfNFeTranspVolLacres[lacres.Count()];
foreach (var lacre in lacres)
{
int indexLacre = lacres.IndexOf(lacre);
nfe.infNFe.transp.vol[index].lacres[indexLacre] = new TNFeInfNFeTranspVolLacres();
nfe.infNFe.transp.vol[index].lacres[indexLacre].nLacre = lacre;
}
}
}
}
TEnviNFe enviNfe = new TEnviNFe();
//enviNfe.NFe = new List<TNFe>();
enviNfe.NFe = new TNFe[1];
enviNfe.NFe[0] = nfe;
enviNfe.idLote = idLote;
enviNfe.versao = "3.10";
//enviNfe.indSinc = TEnviNFeIndSinc.Item0;
if (!Directory.Exists(this.CaminhoArquivos + @"\NFe\XML\"))
Directory.CreateDirectory(this.CaminhoArquivos + @"\NFe\XML\");
string arquivoXml = String.Format(this.CaminhoArquivos + @"\NFe\XML\{0}-enviNFe.xml", chave);
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "http://www.portalfiscal.inf.br/nfe");
DevcompySerializer<TEnviNFe>.Save(enviNfe, arquivoXml, ns);
Devcompy.Lib.NFe.AssinaturaDigital AD = new Devcompy.Lib.NFe.AssinaturaDigital();
StreamReader SR;
string _stringXml;
SR = File.OpenText(arquivoXml);
_stringXml = SR.ReadToEnd();
SR.Close();
X509Certificate2 cert = new X509Certificate2();
//
// seleciona certificado do repositório MY do windows
//
Devcompy.Lib.NFe.Certificado certificado = new Devcompy.Lib.NFe.Certificado();
cert = certificado.BuscaArquivo(empresa.NfeCertificado, empresa.NfeCertificadoSenha);
int resultado = AD.Assinar(_stringXml, "infNFe", cert, "NFe");
if (resultado == 0)
{
StreamWriter SW;
SW = File.CreateText(arquivoXml);
SW.Write(AD.XMLStringAssinado);
SW.Close();
}
Context.SaveChanges();
return AD.XMLStringAssinado;
}
catch (DevcompyException de)
{
Erros.Add(de);
}
}
finally
{
if (Erros.Count != 0)
throw new DevcompyException(this.ConsisteErros());
}
return null;
}
private TNFeInfNFeIdeIndFinal GetIndFinal(IndFinalEnum indFinal)
{
switch(indFinal)
{
case IndFinalEnum.Normal: return TNFeInfNFeIdeIndFinal.Item0;
case IndFinalEnum.ConsumidorFinal: return TNFeInfNFeIdeIndFinal.Item1;
default: throw new NotImplementedException();
}
}
private static TNFeInfNFeDetImpostoPIS SetaPis()
{
TNFeInfNFeDetImpostoPIS pis = new TNFeInfNFeDetImpostoPIS();
var itemPis = new TNFeInfNFeDetImpostoPISPISNT();
itemPis.CST = TNFeInfNFeDetImpostoPISPISNTCST.Item07;
pis.Item = itemPis;
return pis;
}
private TNFeInfNFeDetImpostoICMS SetaIcms(ref decimal vBC, ref decimal vICMS, ref decimal vST, ref decimal vBCST, NFeEstoquePesquisa produto)
{
TNFeInfNFeDetImpostoICMS icms = new TNFeInfNFeDetImpostoICMS();
var estoqueProdutoIcms = Context.EstoqueProdutoIcms.FirstOrDefault(a => a.EstoqueProdutoIcmsId == produto.EstoqueProdutoId);
if (estoqueProdutoIcms != null)
{
var orig = (Torig)Enum.Parse(typeof(Torig), "Item" + estoqueProdutoIcms.orig);
if (estoqueProdutoIcms.CSOSN == "ICMSSN101")
{
var icmsSN101 = new TNFeInfNFeDetImpostoICMSICMSSN101();
icmsSN101.CSOSN = TNFeInfNFeDetImpostoICMSICMSSN101CSOSN.Item101;
if (!String.IsNullOrWhiteSpace(estoqueProdutoIcms.orig))
icmsSN101.orig = orig;
if (estoqueProdutoIcms.pCredSN.HasValue)
icmsSN101.pCredSN = estoqueProdutoIcms.pCredSN.Value.ToString("#0.00", CultureInfo.InvariantCulture);
if (estoqueProdutoIcms.vCredICMSSN.HasValue)
{
icmsSN101.vCredICMSSN = estoqueProdutoIcms.vCredICMSSN.Value.ToString("#0.00", CultureInfo.InvariantCulture);
vICMS += estoqueProdutoIcms.vCredICMSSN.Value;
}
icms.Item = icmsSN101;
}
else if (estoqueProdutoIcms.CSOSN == "ICMSSN102")
{
var icmsSN102 = new TNFeInfNFeDetImpostoICMSICMSSN102();
icmsSN102.CSOSN = TNFeInfNFeDetImpostoICMSICMSSN102CSOSN.Item102;
if (!String.IsNullOrWhiteSpace(estoqueProdutoIcms.orig))
icmsSN102.orig = orig;
icms.Item = icmsSN102;
}
else if (estoqueProdutoIcms.CSOSN == "ICMSSN103")
{
var icmsSN103 = new TNFeInfNFeDetImpostoICMSICMSSN102();
icmsSN103.CSOSN = TNFeInfNFeDetImpostoICMSICMSSN102CSOSN.Item103;
if (!String.IsNullOrWhiteSpace(estoqueProdutoIcms.orig))
icmsSN103.orig = orig;
icms.Item = icmsSN103;
}
else if (estoqueProdutoIcms.CSOSN == "ICMSSN300")
{
var icmsSN300 = new TNFeInfNFeDetImpostoICMSICMSSN102();
icmsSN300.CSOSN = TNFeInfNFeDetImpostoICMSICMSSN102CSOSN.Item300;
if (!String.IsNullOrWhiteSpace(estoqueProdutoIcms.orig))
icmsSN300.orig = orig;
icms.Item = icmsSN300;
}
else if (estoqueProdutoIcms.CSOSN == "ICMSSN400")
{
var icmsSN300 = new TNFeInfNFeDetImpostoICMSICMSSN102();
icmsSN300.CSOSN = TNFeInfNFeDetImpostoICMSICMSSN102CSOSN.Item400;
if (!String.IsNullOrWhiteSpace(estoqueProdutoIcms.orig))
icmsSN300.orig = orig;
icms.Item = icmsSN300;
}
else if (estoqueProdutoIcms.CSOSN == "ICMSSN201")
{
var icmsSN201 = new TNFeInfNFeDetImpostoICMSICMSSN201();
icmsSN201.CSOSN = TNFeInfNFeDetImpostoICMSICMSSN201CSOSN.Item201;
if (!String.IsNullOrWhiteSpace(estoqueProdutoIcms.orig))
icmsSN201.orig = orig;
if (!String.IsNullOrWhiteSpace(estoqueProdutoIcms.modBCST))
icmsSN201.modBCST = (TNFeInfNFeDetImpostoICMSICMSSN201ModBCST)Enum.Parse(typeof(TNFeInfNFeDetImpostoICMSICMSSN201ModBCST), "Item" + estoqueProdutoIcms.modBCST);
if (estoqueProdutoIcms.pCredSN.HasValue)
icmsSN201.pCredSN = estoqueProdutoIcms.pCredSN.Value.ToString("#0.00", CultureInfo.InvariantCulture);
if (estoqueProdutoIcms.pICMSST.HasValue)
icmsSN201.pICMSST = estoqueProdutoIcms.pICMSST.Value.ToString("#0.00", CultureInfo.InvariantCulture);
if (estoqueProdutoIcms.pMVAST.HasValue)
icmsSN201.pMVAST = estoqueProdutoIcms.pMVAST.Value.ToString("#0.00", CultureInfo.InvariantCulture);
if (estoqueProdutoIcms.pRedBCST.HasValue)
icmsSN201.pRedBCST = estoqueProdutoIcms.pRedBCST.Value.ToString("#0.00", CultureInfo.InvariantCulture);
if (estoqueProdutoIcms.vBCST.HasValue)
{
icmsSN201.vBCST = estoqueProdutoIcms.vBCST.Value.ToString("#0.00", CultureInfo.InvariantCulture);
vBCST += estoqueProdutoIcms.vBCST.Value;
}
if (estoqueProdutoIcms.vCredICMSSN.HasValue)
icmsSN201.vCredICMSSN = estoqueProdutoIcms.vCredICMSSN.Value.ToString("#0.00", CultureInfo.InvariantCulture);
if (estoqueProdutoIcms.vICMSST.HasValue)
{
icmsSN201.vICMSST = estoqueProdutoIcms.vICMSST.Value.ToString("#0.00", CultureInfo.InvariantCulture);
vST += estoqueProdutoIcms.vICMSST.Value;
}
icms.Item = icmsSN201;
}
else if (estoqueProdutoIcms.CSOSN == "ICMSSN202" || estoqueProdutoIcms.CSOSN == "ICMSSN203")
{
var icmsSN = new TNFeInfNFeDetImpostoICMSICMSSN202();
if (estoqueProdutoIcms.CSOSN == "ICMSSN202")
icmsSN.CSOSN = TNFeInfNFeDetImpostoICMSICMSSN202CSOSN.Item202;
else icmsSN.CSOSN = TNFeInfNFeDetImpostoICMSICMSSN202CSOSN.Item203;
if (!String.IsNullOrWhiteSpace(estoqueProdutoIcms.orig))
icmsSN.orig = orig;
if (!String.IsNullOrWhiteSpace(estoqueProdutoIcms.modBCST))
icmsSN.modBCST = (TNFeInfNFeDetImpostoICMSICMSSN202ModBCST)Enum.Parse(typeof(TNFeInfNFeDetImpostoICMSICMSSN202ModBCST), "Item" + estoqueProdutoIcms.modBCST);
if (estoqueProdutoIcms.pICMSST.HasValue)
icmsSN.pICMSST = estoqueProdutoIcms.pICMSST.Value.ToString("#0.00", CultureInfo.InvariantCulture);
if (estoqueProdutoIcms.pMVAST.HasValue)
icmsSN.pMVAST = estoqueProdutoIcms.pMVAST.Value.ToString("#0.00", CultureInfo.InvariantCulture);
if (estoqueProdutoIcms.pRedBCST.HasValue)
icmsSN.pRedBCST = estoqueProdutoIcms.pRedBCST.Value.ToString("#0.00", CultureInfo.InvariantCulture);
if (estoqueProdutoIcms.vBCST.HasValue)
{
icmsSN.vBCST = estoqueProdutoIcms.vBCST.Value.ToString("#0.00", CultureInfo.InvariantCulture);
vBCST += estoqueProdutoIcms.vBCST.Value;
}
if (estoqueProdutoIcms.vICMSST.HasValue)
{
icmsSN.vICMSST = estoqueProdutoIcms.vICMSST.Value.ToString("#0.00", CultureInfo.InvariantCulture);
vST += estoqueProdutoIcms.vICMSST.Value;
}
icms.Item = icmsSN;
}
else if (estoqueProdutoIcms.CSOSN == "ICMSSN500")
{
var icmsSN = new TNFeInfNFeDetImpostoICMSICMSSN500();
icmsSN.CSOSN = TNFeInfNFeDetImpostoICMSICMSSN500CSOSN.Item500;
if (!String.IsNullOrWhiteSpace(estoqueProdutoIcms.orig))
icmsSN.orig = orig;
if (estoqueProdutoIcms.vBCSTRet.HasValue)
icmsSN.vBCSTRet = estoqueProdutoIcms.vBCSTRet.Value.ToString("#0.00", CultureInfo.InvariantCulture);
if (estoqueProdutoIcms.vICMSSTRet.HasValue)
icmsSN.vICMSSTRet = estoqueProdutoIcms.vICMSSTRet.Value.ToString("#0.00", CultureInfo.InvariantCulture);
}
else if (estoqueProdutoIcms.CSOSN == "ICMSSN900")
{
var itemIcms900 = new TNFeInfNFeDetImpostoICMSICMSSN900();
itemIcms900.CSOSN = TNFeInfNFeDetImpostoICMSICMSSN900CSOSN.Item900;
if (!String.IsNullOrWhiteSpace(estoqueProdutoIcms.modBC))
itemIcms900.modBC = (TNFeInfNFeDetImpostoICMSICMSSN900ModBC)Enum.Parse(typeof(TNFeInfNFeDetImpostoICMSICMSSN900ModBC), "Item" + estoqueProdutoIcms.modBC);
if (!String.IsNullOrWhiteSpace(estoqueProdutoIcms.modBCST))
itemIcms900.modBCST = (TNFeInfNFeDetImpostoICMSICMSSN900ModBCST)Enum.Parse(typeof(TNFeInfNFeDetImpostoICMSICMSSN900ModBCST), "Item" + estoqueProdutoIcms.modBCST);
if (!String.IsNullOrWhiteSpace(estoqueProdutoIcms.orig))
itemIcms900.orig = orig;
if (estoqueProdutoIcms.pCredSN.HasValue)
itemIcms900.pCredSN = estoqueProdutoIcms.pCredSN.Value.ToString("#0.00", CultureInfo.InvariantCulture);
if (estoqueProdutoIcms.pICMS.HasValue)
itemIcms900.pICMS = estoqueProdutoIcms.pICMS.Value.ToString("#0.00", CultureInfo.InvariantCulture);
if (estoqueProdutoIcms.pICMSST.HasValue)
itemIcms900.pICMSST = estoqueProdutoIcms.pICMSST.Value.ToString("#0.00", CultureInfo.InvariantCulture);
if (estoqueProdutoIcms.pMVAST.HasValue)
itemIcms900.pMVAST = estoqueProdutoIcms.pMVAST.Value.ToString("#0.00", CultureInfo.InvariantCulture);
if (estoqueProdutoIcms.pRedBC.HasValue)
itemIcms900.pRedBC = estoqueProdutoIcms.pRedBC.Value.ToString("#0.00", CultureInfo.InvariantCulture);
if (estoqueProdutoIcms.pRedBCST.HasValue)
itemIcms900.pRedBCST = estoqueProdutoIcms.pRedBCST.Value.ToString("#0.00", CultureInfo.InvariantCulture);
if (estoqueProdutoIcms.vBC.HasValue)
{
itemIcms900.vBC = estoqueProdutoIcms.vBC.Value.ToString("#0.00", CultureInfo.InvariantCulture);
vBC += estoqueProdutoIcms.vBC.Value;
}
if (estoqueProdutoIcms.vBCST.HasValue)
{
itemIcms900.vBCST = estoqueProdutoIcms.vBCST.Value.ToString("#0.00", CultureInfo.InvariantCulture);
vBCST += estoqueProdutoIcms.vBCST.Value;
}
if (estoqueProdutoIcms.vCredICMSSN.HasValue)
itemIcms900.vCredICMSSN = estoqueProdutoIcms.vCredICMSSN.Value.ToString("#0.00", CultureInfo.InvariantCulture);
if (estoqueProdutoIcms.pCredSN.HasValue)
itemIcms900.pCredSN = estoqueProdutoIcms.pCredSN.Value.ToString("#0.00", CultureInfo.InvariantCulture);
if (estoqueProdutoIcms.pICMS.HasValue)
itemIcms900.pICMS = estoqueProdutoIcms.pICMS.Value.ToString("#0.00", CultureInfo.InvariantCulture);
if (estoqueProdutoIcms.vICMS.HasValue)
{
itemIcms900.vICMS = estoqueProdutoIcms.vICMS.Value.ToString("#0.00", CultureInfo.InvariantCulture);
vICMS += estoqueProdutoIcms.vICMS.Value;
}
if (estoqueProdutoIcms.vICMSST.HasValue)
{
itemIcms900.vICMSST = estoqueProdutoIcms.vICMSST.Value.ToString("#0.00", CultureInfo.InvariantCulture);
vST += estoqueProdutoIcms.vICMSST.Value;
}
icms.Item = itemIcms900;
}
}
else
{
if (this.Sistema.CST == "SN900")
{
var itemIcms900 = new TNFeInfNFeDetImpostoICMSICMSSN900();
itemIcms900.orig = Torig.Item0;
itemIcms900.CSOSN = TNFeInfNFeDetImpostoICMSICMSSN900CSOSN.Item900;
icms.Item = itemIcms900;
}
else if (this.Sistema.CST == "SN102")
{
var itemIcms102 = new TNFeInfNFeDetImpostoICMSICMSSN102();
itemIcms102.orig = Torig.Item0;
itemIcms102.CSOSN = TNFeInfNFeDetImpostoICMSICMSSN102CSOSN.Item300;
icms.Item = itemIcms102;
}
else if (this.Sistema.CST == "SN500")
{
var itemIcmsSN500 = new TNFeInfNFeDetImpostoICMSICMSSN500();
itemIcmsSN500.orig = Torig.Item0;
itemIcmsSN500.CSOSN = TNFeInfNFeDetImpostoICMSICMSSN500CSOSN.Item500;
icms.Item = itemIcmsSN500;
}
}
return icms;
}
public override string CaminhoArquivos
{
get
{
string caminho = @"\Arquivos\";
if (HttpContext.Current != null)
caminho = HttpContext.Current.Server.MapPath("~/Admin/_Arquivos");
if (!Directory.Exists(caminho))
Directory.CreateDirectory(caminho);
return caminho;
}
}
public static Torig GetOrig(string value)
{
return (Torig)Enum.Parse(typeof(TCfop), "Item" + value);
}
public static TCfop GetCFOP(int value)
{
return (TCfop)Enum.Parse(typeof(TCfop), "Item" + value.ToString());
}
public static TFinNFe GetFinNfe(FinNFeEnum value)
{
return (TFinNFe)Enum.Parse(typeof(TFinNFe), "Item" + ((int)value).ToString());
}
public bool Excluir(int id)
{
return base.Remove<NotaFiscalEletronicaXmlEntity>(id);
}
public List<NotaFiscalEletronicaXmlModel> Pesquisar()
{
using (DevcompyContext context = new DevcompyContext())
{
return (from f in context.NotaFiscalEletronicaXmlEntity
select new NotaFiscalEletronicaXmlModel() { }).ToList();
}
}
public static NotaFiscalEletronicaXmlEntity Create(string chaveAcesso, NotaFiscalEletronicaXmlTipoEnum tipo)
{
using (DevcompyContext context = new DevcompyContext())
{
var entity = context.NotaFiscalEletronicaXmlEntity.FirstOrDefault(a => a.NotaFiscalEletronica.ChaveAcesso.Equals(chaveAcesso) && a.Tipo == tipo);
if (entity != null)
{
entity.NotaFiscalEletronica = context.NotaFiscalEletronicaEntity.FirstOrDefault(a => a.NFeId == entity.NotaFiscalEletronicaId);
}
return entity;
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment