Skip to content

Commit afa6a64

Browse files
authored
Merge pull request #4 from adeniltonbs/master
Merge
2 parents 358a67b + eb9df6e commit afa6a64

File tree

8 files changed

+381
-4
lines changed

8 files changed

+381
-4
lines changed

CTe.AppTeste/CTeTesteModel.cs

+248
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@
5858
using CTe.Servicos.ConsultaProtocolo;
5959
using CTe.Servicos.ConsultaRecibo;
6060
using CTe.Servicos.ConsultaStatus;
61+
using CTe.Servicos.EnviarCte;
6162
using CTe.Servicos.Eventos;
6263
using CTe.Servicos.Inutilizacao;
6364
using CTe.Servicos.Recepcao;
@@ -81,6 +82,12 @@ public RetornoEEnvio(RetornoBase retorno)
8182
Retorno = retorno.RetornoXmlString;
8283
}
8384

85+
public RetornoEEnvio(string envio, string retorno)
86+
{
87+
Envio = envio;
88+
Retorno = retorno;
89+
}
90+
8491
public string Envio { get; set; }
8592
public string Retorno { get; set; }
8693
}
@@ -1057,5 +1064,246 @@ private static int GetRandom()
10571064
var rand = new Random();
10581065
return rand.Next(11111111, 99999999);
10591066
}
1067+
1068+
public void CriarEnviarCTeConsultaReciboAutomatico2e3()
1069+
{
1070+
var config = new ConfiguracaoDao().BuscarConfiguracao();
1071+
CarregarConfiguracoes(config);
1072+
1073+
var cteEletronico = new CteEletronico();
1074+
1075+
#region infCte
1076+
1077+
cteEletronico.infCte = new infCte();
1078+
cteEletronico.infCte.versao = config.ConfigWebService.Versao;
1079+
1080+
#endregion
1081+
1082+
#region ide
1083+
1084+
cteEletronico.infCte.ide = new ide();
1085+
cteEletronico.infCte.ide.cUF = config.Empresa.SiglaUf;
1086+
cteEletronico.infCte.ide.cCT = GetRandom();
1087+
cteEletronico.infCte.ide.CFOP = 5353;
1088+
cteEletronico.infCte.ide.natOp = "PRESTAÇÃO DE SERVICO DE TRANSPORTE CT-E EXEMPLO";
1089+
1090+
if (config.ConfigWebService.Versao == versao.ve200)
1091+
{
1092+
cteEletronico.infCte.ide.forPag = forPag.Pago;
1093+
}
1094+
cteEletronico.infCte.ide.mod = ModeloDocumento.CTe;
1095+
cteEletronico.infCte.ide.serie = config.ConfigWebService.Serie;
1096+
cteEletronico.infCte.ide.nCT = config.ConfigWebService.Numeracao;
1097+
cteEletronico.infCte.ide.dhEmi = DateTime.Now;
1098+
cteEletronico.infCte.ide.tpImp = tpImp.Retrado;
1099+
cteEletronico.infCte.ide.tpEmis = tpEmis.teNormal;
1100+
cteEletronico.infCte.ide.tpAmb = config.ConfigWebService.Ambiente; // o serviço adicionara automaticamente isso para você
1101+
cteEletronico.infCte.ide.tpCTe = tpCTe.Normal;
1102+
cteEletronico.infCte.ide.procEmi = procEmi.AplicativoContribuinte;
1103+
cteEletronico.infCte.ide.verProc = "0.0.0.1";
1104+
cteEletronico.infCte.ide.cMunEnv = config.Empresa.CodigoIbgeMunicipio;
1105+
cteEletronico.infCte.ide.xMunEnv = config.Empresa.NomeMunicipio;
1106+
cteEletronico.infCte.ide.UFEnv = config.Empresa.SiglaUf;
1107+
cteEletronico.infCte.ide.modal = modal.rodoviario;
1108+
cteEletronico.infCte.ide.tpServ = tpServ.normal;
1109+
cteEletronico.infCte.ide.cMunIni = config.Empresa.CodigoIbgeMunicipio;
1110+
cteEletronico.infCte.ide.xMunIni = config.Empresa.NomeMunicipio;
1111+
cteEletronico.infCte.ide.UFIni = config.Empresa.SiglaUf;
1112+
cteEletronico.infCte.ide.cMunFim = config.Empresa.CodigoIbgeMunicipio;
1113+
cteEletronico.infCte.ide.xMunFim = config.Empresa.NomeMunicipio;
1114+
cteEletronico.infCte.ide.UFFim = config.Empresa.SiglaUf;
1115+
cteEletronico.infCte.ide.retira = retira.Nao;
1116+
1117+
if (config.ConfigWebService.Versao == versao.ve300)
1118+
{
1119+
cteEletronico.infCte.ide.indIEToma = indIEToma.ContribuinteIcms;
1120+
}
1121+
1122+
if (config.ConfigWebService.Versao == versao.ve200)
1123+
{
1124+
cteEletronico.infCte.ide.tomaBase3 = new toma03
1125+
{
1126+
toma = toma.Remetente
1127+
};
1128+
}
1129+
1130+
if (config.ConfigWebService.Versao == versao.ve300)
1131+
{
1132+
cteEletronico.infCte.ide.tomaBase3 = new toma3
1133+
{
1134+
toma = toma.Remetente
1135+
};
1136+
}
1137+
1138+
1139+
#endregion
1140+
1141+
#region emit
1142+
1143+
cteEletronico.infCte.emit = new emit();
1144+
cteEletronico.infCte.emit.CNPJ = config.Empresa.Cnpj;
1145+
cteEletronico.infCte.emit.IE = config.Empresa.InscricaoEstadual;
1146+
cteEletronico.infCte.emit.xNome = config.Empresa.Nome;
1147+
cteEletronico.infCte.emit.xFant = config.Empresa.NomeFantasia;
1148+
1149+
cteEletronico.infCte.emit.enderEmit = new enderEmit();
1150+
cteEletronico.infCte.emit.enderEmit.xLgr = config.Empresa.Logradouro;
1151+
cteEletronico.infCte.emit.enderEmit.nro = config.Empresa.Numero;
1152+
cteEletronico.infCte.emit.enderEmit.xCpl = config.Empresa.Complemento;
1153+
cteEletronico.infCte.emit.enderEmit.xBairro = config.Empresa.Bairro;
1154+
cteEletronico.infCte.emit.enderEmit.cMun = config.Empresa.CodigoIbgeMunicipio;
1155+
cteEletronico.infCte.emit.enderEmit.xMun = config.Empresa.NomeMunicipio;
1156+
cteEletronico.infCte.emit.enderEmit.CEP = long.Parse(config.Empresa.Cep);
1157+
cteEletronico.infCte.emit.enderEmit.UF = config.Empresa.SiglaUf;
1158+
cteEletronico.infCte.emit.enderEmit.fone = config.Empresa.Telefone;
1159+
1160+
#endregion
1161+
1162+
// Remetente , no caso adicionei os mesmos dados do emitente.. mas seriam o do remente.
1163+
#region rem
1164+
cteEletronico.infCte.rem = new rem();
1165+
cteEletronico.infCte.rem.CNPJ = config.Empresa.Cnpj;
1166+
cteEletronico.infCte.rem.IE = config.Empresa.InscricaoEstadual;
1167+
cteEletronico.infCte.rem.xNome = config.Empresa.Nome;
1168+
cteEletronico.infCte.rem.xFant = config.Empresa.NomeFantasia;
1169+
cteEletronico.infCte.rem.fone = config.Empresa.Telefone;
1170+
1171+
cteEletronico.infCte.rem.enderReme = new enderReme();
1172+
cteEletronico.infCte.rem.enderReme.xLgr = config.Empresa.Logradouro;
1173+
cteEletronico.infCte.rem.enderReme.nro = config.Empresa.Numero;
1174+
cteEletronico.infCte.rem.enderReme.xCpl = config.Empresa.Complemento;
1175+
cteEletronico.infCte.rem.enderReme.xBairro = config.Empresa.Bairro;
1176+
cteEletronico.infCte.rem.enderReme.cMun = config.Empresa.CodigoIbgeMunicipio;
1177+
cteEletronico.infCte.rem.enderReme.xMun = config.Empresa.NomeMunicipio;
1178+
cteEletronico.infCte.rem.enderReme.CEP = long.Parse(config.Empresa.Cep);
1179+
cteEletronico.infCte.rem.enderReme.UF = config.Empresa.SiglaUf;
1180+
#endregion
1181+
1182+
// Destinatário
1183+
#region dest
1184+
1185+
cteEletronico.infCte.dest = new dest();
1186+
cteEletronico.infCte.dest.CNPJ = config.Empresa.Cnpj;
1187+
cteEletronico.infCte.dest.IE = config.Empresa.InscricaoEstadual;
1188+
cteEletronico.infCte.dest.xNome = config.Empresa.Nome;
1189+
cteEletronico.infCte.dest.fone = config.Empresa.Telefone;
1190+
1191+
cteEletronico.infCte.dest.enderDest = new enderDest();
1192+
cteEletronico.infCte.dest.enderDest.xLgr = config.Empresa.Logradouro;
1193+
cteEletronico.infCte.dest.enderDest.nro = config.Empresa.Numero;
1194+
cteEletronico.infCte.dest.enderDest.xCpl = config.Empresa.Complemento;
1195+
cteEletronico.infCte.dest.enderDest.xBairro = config.Empresa.Bairro;
1196+
cteEletronico.infCte.dest.enderDest.cMun = config.Empresa.CodigoIbgeMunicipio;
1197+
cteEletronico.infCte.dest.enderDest.xMun = config.Empresa.NomeMunicipio;
1198+
cteEletronico.infCte.dest.enderDest.CEP = long.Parse(config.Empresa.Cep);
1199+
cteEletronico.infCte.dest.enderDest.UF = config.Empresa.SiglaUf;
1200+
1201+
#endregion
1202+
1203+
#region vPrest
1204+
1205+
cteEletronico.infCte.vPrest = new vPrest();
1206+
cteEletronico.infCte.vPrest.vTPrest = 100m;
1207+
cteEletronico.infCte.vPrest.vRec = 100m;
1208+
1209+
#endregion
1210+
1211+
#region imp
1212+
1213+
cteEletronico.infCte.imp = new imp();
1214+
cteEletronico.infCte.imp.ICMS = new ICMS();
1215+
1216+
var icmsSimplesNacional = new ICMSSN();
1217+
1218+
cteEletronico.infCte.imp.ICMS.TipoICMS = icmsSimplesNacional;
1219+
1220+
if (config.ConfigWebService.Versao == versao.ve300)
1221+
{
1222+
icmsSimplesNacional.CST = CST.ICMS90;
1223+
}
1224+
1225+
#endregion
1226+
1227+
#region infCTeNorm
1228+
1229+
cteEletronico.infCte.infCTeNorm = new infCTeNorm();
1230+
cteEletronico.infCte.infCTeNorm.infCarga = new infCarga();
1231+
cteEletronico.infCte.infCTeNorm.infCarga.vCarga = 1000m;
1232+
cteEletronico.infCte.infCTeNorm.infCarga.proPred = "Linguiça com piqui";
1233+
1234+
cteEletronico.infCte.infCTeNorm.infCarga.infQ = new List<infQ>();
1235+
cteEletronico.infCte.infCTeNorm.infCarga.infQ.Add(new infQ
1236+
{
1237+
cUnid = cUnid.KG,
1238+
qCarga = 10000,
1239+
tpMed = "quilos gramas"
1240+
});
1241+
1242+
cteEletronico.infCte.infCTeNorm.infDoc = new infDoc();
1243+
cteEletronico.infCte.infCTeNorm.infDoc.infNFe = new List<infNFe>();
1244+
cteEletronico.infCte.infCTeNorm.infDoc.infNFe.Add(new infNFe
1245+
{
1246+
chave = "52161021025760000123550010000087341557247948"
1247+
});
1248+
1249+
if (config.ConfigWebService.Versao == versao.ve200)
1250+
{
1251+
cteEletronico.infCte.infCTeNorm.seg = new List<seg>();
1252+
cteEletronico.infCte.infCTeNorm.seg.Add(new seg
1253+
{
1254+
respSeg = respSeg.Destinatario
1255+
});
1256+
}
1257+
1258+
cteEletronico.infCte.infCTeNorm.infModal = new infModal();
1259+
1260+
if (config.ConfigWebService.Versao == versao.ve200)
1261+
{
1262+
cteEletronico.infCte.infCTeNorm.infModal.versaoModal = versaoModal.veM200;
1263+
}
1264+
1265+
if (config.ConfigWebService.Versao == versao.ve300)
1266+
{
1267+
cteEletronico.infCte.infCTeNorm.infModal.versaoModal = versaoModal.veM300;
1268+
}
1269+
1270+
var rodoviario = new rodo();
1271+
rodoviario.RNTRC = config.Empresa.RNTRC;
1272+
1273+
if (config.ConfigWebService.Versao == versao.ve200)
1274+
{
1275+
rodoviario.dPrev = DateTime.Now;
1276+
rodoviario.lota = lota.Nao;
1277+
}
1278+
1279+
1280+
cteEletronico.infCte.infCTeNorm.infModal.ContainerModal = rodoviario;
1281+
#endregion
1282+
1283+
1284+
var numeroLote = InputBoxTuche("Número Lote");
1285+
1286+
1287+
var servico = new ServicoEnviarCte();
1288+
1289+
1290+
var retorno = servico.Enviar(Convert.ToInt32(numeroLote), cteEletronico);
1291+
1292+
1293+
string xmlRetorno = string.Empty;
1294+
1295+
if (retorno.CteProc != null)
1296+
xmlRetorno = retorno.CteProc.ObterXmlString();
1297+
1298+
if (retorno.RetConsReciCTe.protCTe[0].infProt.cStat != 100)
1299+
{
1300+
xmlRetorno = retorno.RetConsReciCTe.RetornoXmlString;
1301+
}
1302+
1303+
OnSucessoSync(new RetornoEEnvio(retorno.RetEnviCte.EnvioXmlString, xmlRetorno));
1304+
1305+
config.ConfigWebService.Numeracao++;
1306+
new ConfiguracaoDao().SalvarConfiguracao(config);
1307+
}
10601308
}
10611309
}

CTe.AppTeste/MainWindow.xaml

+1
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,7 @@
236236
<Button Grid.Row="2" Grid.Column="0" Click="EventoCancelarCTe_Click">Evento Cancelar CT-e</Button>
237237
<Button Grid.Row="2" Grid.Column="1" Click="CartaCorrecao_Click">Carta Correção</Button>
238238
<Button Grid.Row="3" Grid.Column="0" Click="CriarEnviarCTe2_Click">Criar e Enviar CT-e 2.00 Ou 3.00</Button>
239+
<Button Grid.Row="3" Grid.Column="1" Click="CriarEnviarAutomaticoCTe2_Click">Criar e Enviar/Consulta Recibo Automatico CT-e 2.00 Ou 3.00</Button>
239240

240241
<TabControl Grid.Row="5" Grid.Column="0" Grid.ColumnSpan="2">
241242
<TabItem Header="XmlEnvio">

CTe.AppTeste/MainWindow.xaml.cs

+5
Original file line numberDiff line numberDiff line change
@@ -133,5 +133,10 @@ private void ConsultaPorNumeroRecibo_Click(object sender, RoutedEventArgs e)
133133
{
134134
_model.ConsultaPorNumeroRecibo();
135135
}
136+
137+
private void CriarEnviarAutomaticoCTe2_Click(object sender, RoutedEventArgs e)
138+
{
139+
_model.CriarEnviarCTeConsultaReciboAutomatico2e3();
140+
}
136141
}
137142
}

CTe.Servicos/CTe.Servicos.csproj

+2
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@
4545
<Compile Include="ConsultaStatus\StatusServico.cs" />
4646
<Compile Include="Enderecos\Helpers\UrlHelper.cs" />
4747
<Compile Include="Enderecos\UrlCTe.cs" />
48+
<Compile Include="EnviarCte\RetornoEnviarCte.cs" />
49+
<Compile Include="EnviarCte\ServicoEnviarCte.cs" />
4850
<Compile Include="Eventos\Contratos\IServicoController.cs" />
4951
<Compile Include="Eventos\EventoCancelamento.cs" />
5052
<Compile Include="Eventos\EventoCartaCorrecao.cs" />
+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using CTe.Classes;
2+
using CTe.Classes.Servicos.Recepcao;
3+
using CTe.Classes.Servicos.Recepcao.Retorno;
4+
5+
namespace CTe.Servicos.EnviarCte
6+
{
7+
public class RetornoEnviarCte
8+
{
9+
public retEnviCte RetEnviCte { get; private set; }
10+
public retConsReciCTe RetConsReciCTe { get; private set; }
11+
public cteProc CteProc { get; private set; }
12+
13+
public RetornoEnviarCte(retEnviCte retEnviCte, retConsReciCTe retConsReciCTe, cteProc cteProc)
14+
{
15+
RetEnviCte = retEnviCte;
16+
RetConsReciCTe = retConsReciCTe;
17+
CteProc = cteProc;
18+
}
19+
}
20+
}
+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
using System.Collections.Generic;
2+
using CTe.Classes;
3+
using CTe.Classes.Servicos.Recepcao;
4+
using CTe.Classes.Servicos.Recepcao.Retorno;
5+
using CTe.Servicos.ConsultaRecibo;
6+
using CTe.Servicos.Recepcao;
7+
8+
namespace CTe.Servicos.EnviarCte
9+
{
10+
public class ServicoEnviarCte
11+
{
12+
public RetornoEnviarCte Enviar(int lote, Classes.CTe cte)
13+
{
14+
ServicoCTeRecepcao servicoRecepcao = new ServicoCTeRecepcao();
15+
16+
retEnviCte retEnviCte = servicoRecepcao.CTeRecepcao(lote, new List<Classes.CTe> {cte});
17+
18+
if (retEnviCte.cStat != 103)
19+
{
20+
return new RetornoEnviarCte(retEnviCte, null, null);
21+
}
22+
23+
ConsultaReciboServico servicoConsultaRecibo = new ConsultaReciboServico(retEnviCte.infRec.nRec);
24+
25+
retConsReciCTe retConsReciCTe = servicoConsultaRecibo.Consultar();
26+
27+
28+
cteProc cteProc = null;
29+
if (retConsReciCTe.cStat == 104)
30+
{
31+
32+
if (retConsReciCTe.protCTe[0].infProt.cStat != 100)
33+
{
34+
return new RetornoEnviarCte(retEnviCte, retConsReciCTe, null);
35+
}
36+
37+
cteProc = new cteProc
38+
{
39+
CTe = cte,
40+
versao = ConfiguracaoServico.Instancia.VersaoLayout,
41+
protCTe = retConsReciCTe.protCTe[0]
42+
};
43+
}
44+
45+
cteProc.SalvarXmlEmDisco();
46+
47+
return new RetornoEnviarCte(retEnviCte, retConsReciCTe, cteProc);
48+
}
49+
}
50+
}

0 commit comments

Comments
 (0)