Created
July 3, 2017 15:48
-
-
Save pablotdv/d9957b2b117e0fbcb931b33b5e58032e to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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