private string Assign(Models.Models.NFeSStructure.NFeSIssueRequest.tbnfd NFeSIR) { try { return(Functions.XmlFunctions.ClassForStringXml( Functions.XmlFunctions.StringXmlForClass <Models.Models.NFeSStructure.NFeSIssueRequest.tbnfd>( Functions.XmlFunctions.Signature.Sign( Functions.XmlFunctions.ClassForStringXml(NFeSIR) ) ) )); } catch (Exception ex) { throw ex; } }
public NFeSRequestPreview Issue(NFeSRequest NFeS) { try { ValidateIssue(NFeS); //Objetos da Nota Fiscal: var Taker = new TakerDomain().Get <Takers>(NFeS.TakerId); var Company = new CompanyDomain().Get <Companys>(CompanyDomain.Type.Company, NFeS.CompanyId); var CFPS = new CFPSDomain().Get <CFPS>(NFeS.CFPSId); var TaxpayerActivities = new TaxpayerActivitiesDomain().Get(NFeS.TaxpayerActivitiesId); var ShippingCompany = new ShippingCompany(); if (NFeS.ShippingCompanyId > 0) { ShippingCompany = new ShippingCompanyDomain().Get <ShippingCompany>(NFeS.ShippingCompanyId); } //Nota Fiscal: var NFeSRequest = new Models.Models.NFeSStructure.NFeSIssueRequest.tbnfd(); var NotaFiscal = new Models.Models.NFeSStructure.NFeSIssueRequest.tbnfdNfd() { numeronfd = Homologation.NumberNF, codseriedocumento = Homologation.Serie, codnaturezaoperacao = CFPS.CFPSCod, codigocidade = Homologation.CityCod, inscricaomunicipalemissor = Homologation.IM, dataemissao = Functions.DateTimeBr().ToString("dd/MM/yyyy"), razaotomador = Taker.Name, nomefantasiatomador = Taker.NameFantasy, enderecotomador = Taker.Street, numeroendereco = Taker.Number, cidadetomador = Taker.City, estadotomador = Taker.State, paistomador = Homologation.Country, fonetomador = Taker.Telephone, faxtomador = Taker.Telephone, ceptomador = Taker.CEP, bairrotomador = Taker.Neighborhood, emailtomador = Taker.Email, tppessoa = Taker.TypePerson, cpfcnpjtomador = Taker.CPF_CNPJ, inscricaoestadualtomador = Taker.RG_IE, inscricaomunicipaltomador = Taker.IM, observacao = NFeS.Note, razaotransportadora = Functions.IIf(ShippingCompany.Name), cpfcnpjtransportadora = Functions.IIf(ShippingCompany.CPF_CNPJ), pis = Homologation.PIS, cofins = Homologation.COFINS, csll = Homologation.CSLL, irrf = Homologation.IRRF, inss = Homologation.INSS, descdeducoesconstrucao = string.Empty, totaldeducoesconstrucao = string.Empty, tributadonomunicipio = string.Empty, vlroutros = string.Empty, numerort = string.Empty, codigoseriert = string.Empty, dataemissaort = string.Empty, fatorgerador = Functions.DateTimeBr().Month + "/" + Functions.DateTimeBr().Year, enderecotransportadora = Functions.IIf(ShippingCompany.Street) + "," + Functions.IIf(ShippingCompany.Neighborhood) + "," + Functions.IIf(ShippingCompany.City) + "," + Functions.IIf(ShippingCompany.State), }; //Faturas: NotaFiscal.tbfatura = new Models.Models.NFeSStructure.NFeSIssueRequest.tbnfdNfdFatura[NFeS.Invoices.Count]; for (int X = 0; X < NFeS.Invoices.Count; X++) { NFeSRequestInvoices Invoice = NFeS.Invoices[X]; NotaFiscal.tbfatura[X] = new Models.Models.NFeSStructure.NFeSIssueRequest.tbnfdNfdFatura { numfatura = Invoice.Number.ToString(), vencimentofatura = DateTime.Parse(Invoice.Maturity).ToString("dd/MM/yyyy"), valorfatura = Invoice.Value.ToString() }; } //Serviços: NotaFiscal.tbservico = new Models.Models.NFeSStructure.NFeSIssueRequest.tbnfdNfdServico[NFeS.Itens.Count]; for (int X = 0; X < NFeS.Itens.Count; X++) { NFeSRequestItens Item = NFeS.Itens[X]; Services Services = new ServiceDomain().Get <Services>(Item.ServicesId); NotaFiscal.tbservico[X] = new Models.Models.NFeSStructure.NFeSIssueRequest.tbnfdNfdServico { quantidade = Item.Amount.ToString(), descricao = Services.Description, codatividade = TaxpayerActivities.CNAE, valorunitario = Item.Value.ToString(), aliquota = TaxpayerActivities.Aliquot.ToString(), impostoretido = CFPS.TaxWithheld }; } NFeSRequest.nfd = NotaFiscal; string XmlRPS = API.Send(API.GetCity(Company.City), Homologation.CPF, Homologation.Password, int.Parse(Homologation.CityCod), this.Assign(NFeSRequest)); if (Functions.XmlFunctions.IsXml(XmlRPS)) { //Enviando o RPS para receber a NFSe(5 tentativas)// int Cont = 0; string XmlAuthorized = string.Empty; //Primeira tentativa XmlAuthorized = API.Receive(API.GetCity(Company.City), Homologation.CPF, Homologation.Password, Homologation.IM, XmlRPS); bool Auth = Functions.XmlFunctions.IsXml(XmlAuthorized); while (!Auth & Cont <= 5) { XmlAuthorized = API.Receive(API.GetCity(Company.City), Homologation.CPF, Homologation.Password, Homologation.IM, XmlRPS); Auth = Functions.XmlFunctions.IsXml(XmlAuthorized); Cont++; System.Threading.Thread.Sleep(5000); } if (Functions.XmlFunctions.IsXml(XmlAuthorized)) { var NFeSAuthorized = Functions.XmlFunctions.StringXmlForClass <Models.Models.NFeSStructure.NFeSProcessingResult.tbnfd>(XmlAuthorized); string XmlUrl = API.GetUrl(API.City.Serra, int.Parse(Homologation.CityCod), int.Parse(NFeSAuthorized.nfdok.NewDataSet.NOTA_FISCAL.NumeroNota), int.Parse(NFeSAuthorized.nfdok.NewDataSet.NOTA_FISCAL.CodigoSerie), Homologation.IM); if (Functions.XmlFunctions.IsXml(XmlUrl)) { var NFeSUrl = Functions.XmlFunctions.StringXmlForClass <Models.Models.NFeSStructure.NFeSPreview.util>(XmlUrl); string PDF = Download(NFeSUrl.urlNfd); //Salvando no banco os dados da nota fiscal Save(Taker, Company, CFPS, ShippingCompany, NFeSAuthorized, NFeSUrl, XmlAuthorized, PDF); //Enviando email para o tomador SendEmail(Taker, Company, NFeSAuthorized, NFeSUrl); return(new NFeSRequestPreview(NFeSUrl.urlNfd, PDF)); } else { throw new InternalProgramException(XmlUrl); } } else { throw new InternalProgramException(XmlAuthorized); } } else { throw new InternalProgramException(XmlRPS); } } catch (Exception ex) { throw ex; } }