Bom dia pessoal, tudo bem?
Então, estou com um erro aqui na minha aplicação desde segunda dia 01/10. Seguinte fiz uma aplicação simples para consultar a situação do icms dos clientes de uma base de dados, onde eu seleciono os clientes direto do banco com um Select e vejo se a situação do ICMS do cliente está habilitado ou não habilitado pelo retorno do Web Service ConsultaCadastro. Rodo essa aplicação mensalmente para atualizar a situação do icms dos clientes baseado na base de dados do sintegra das UFs que possuem ele.
Mas essa semana fui fazer o procedimento e começo a dar um erro na minha aplicação a Exceção ESOAPHTTP. aparecendo uma msg "Erro no suporte a canais seguros", sendo que tenho esse mesmo problema ao tentar usar o Web Service StatusServico para testar a conexão
Já tentei, trocar o certificado (ambos são validos), tentei atualizar e recompilar os fontes do ACBr, mas nada resolve.
Segue as imagens da aplicação e da tela de erro, e o fonte da aplicação:
Aplicação:
Tela de Erro:
Código-Fonte da aplicação:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ACBrNFe, ComCtrls, DB, DBTables;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
Database1: TDatabase;
QryClientes: TQuery;
QryTeste: TQuery;
QryUpdate: TQuery;
QryClientesCODCLIENTE: TFloatField;
QryClientesCNPJ: TStringField;
QryClientesINSCRICAO_ESTADUAL: TStringField;
QryClientesUF: TStringField;
QryClientesSITUACAO_ICMS: TStringField;
QryClientesREGIME_DE_APURACAO: TStringField;
QryClientesSITUACAO_CNPJ: TStringField;
QryClientesQUANTIDADE_IE: TStringField;
STP_teste: TStoredProc;
QryTesteCODCLIENTE: TFloatField;
QryTesteCNPJ: TStringField;
QryTesteINSCRICAO_ESTADUAL: TStringField;
QryTesteUF: TStringField;
QryTesteSITUACAO_ICMS: TStringField;
QryTesteREGIME_DE_APURACAO: TStringField;
QryTesteSITUACAO_CNPJ: TStringField;
Memo2: TMemo;
ACBrNFe: TACBrNFe;
Edit1: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
razaoSocial: string;
inscricaoEstadual: string;
regime: string;
estado: string;
cidade: string;
bairro: string;
logradouro: string;
numero: string;
CEP: string;
CNPJ: string;
qtd_cnpj_inv: Integer;
cnpj_invalido: array[1..32416] of string;
qtd_cnpj_ie: Integer;
cnpj_varias_ie: array[1..32416] of string;
x: Integer;
y: Integer;
erro: string;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ACBrNFe.WebServices.StatusServico.Executar; // Este comando, retorna True quando o serviço está em operação.
// Após este comando, é possível acessar a propriedade
ShowMessage(ACBrNFe.WebServices.StatusServico.Msg);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
QryTeste.SQL.Text := Edit1.Text;
if Trim(Edit1.text) <> '' then
begin
QryTeste.Close;
QryTeste.Open;
QryTeste.First;
while not QryTeste.Eof do
begin
CNPJ := QryTesteCNPJ.Value;
estado := QryTesteUF.Value;
ACBrNFe.WebServices.ConsultaCadastro.UF := estado;
ACBrNFe.WebServices.ConsultaCadastro.CNPJ := CNPJ;
try
ACBrNFe.WebServices.ConsultaCadastro.Executar;
if ACBrNFe.WebServices.ConsultaCadastro.RetConsCad.InfCad[0].cSit = 1 then
begin
regime := ACBrNFe.WebServices.ConsultaCadastro.RetConsCad.InfCad[0].xRegApur;
inscricaoEstadual := ACBrNFe.WebServices.ConsultaCadastro.RetConsCad.InfCad[0].IE;
QryUpdate.Close;
QryUpdate.SQL.Clear;
QryUpdate.SQL.Add('UPDATE TESTE_ICMS_CLIENTES SET SITUACAO_ICMS = ''HABILITADO'', REGIME_DE_APURACAO = :xRegime, INSCRICAO_ESTADUAL = :xIE, SITUACAO_CNPJ = ''VALIDO'' WHERE CODCLIENTE = :xCliente');
QryUpdate.ParamByName('xRegime').Value := regime;
QryUpdate.ParamByname('xIE').Value := inscricaoEstadual;
QryUpdate.ParamByName('xCliente').Value := QryTesteCODCLIENTE.Value;
QryUpdate.ExecSQL;
QryUpdate.SQL.Clear;
QryUpdate.SQL.Add('commit');
QryUpdate.ExecSQL;
//ShowMessage('SIT = 1')
end
else
if ACBrNFe.WebServices.ConsultaCadastro.RetConsCad.InfCad[0].cSit = 0 then
begin
if ACBrNFe.WebServices.ConsultaCadastro.RetConsCad.InfCad[0].CNPJ = '' then
begin
QryUpdate.Close;
QryUpdate.SQL.Clear;
QryUpdate.SQL.Add('UPDATE TESTE_ICMS_CLIENTES SET SITUACAO_CNPJ = ''CNPJ INVALIDO'' WHERE CODCLIENTE = :xCliente');
QryUpdate.ParamByName('xCliente').Value := QryTesteCODCLIENTE.Value;
QryUpdate.ExecSQL;
QryUpdate.SQL.Clear;
QryUpdate.SQL.Add('commit');
QryUpdate.ExecSQL;
erro := IntToStr(ACBrNFe.WebServices.ConsultaCadastro.cStat);
Memo2.Lines.Add(CNPJ + ' ERRO: '+ erro + ' MOVITO: ' + ACBrNFe.WebServices.ConsultaCadastro.xMotivo);
Memo2.Lines.Add('');
//showMessage('CNPJ INVALIDO!')
end
else
begin
regime := ACBrNFe.WebServices.ConsultaCadastro.RetConsCad.InfCad[0].xRegApur;
inscricaoEstadual := ACBrNFe.WebServices.ConsultaCadastro.RetConsCad.InfCad[0].IE;
QryUpdate.Close;
QryUpdate.SQL.Clear;
QryUpdate.SQL.Add('UPDATE TESTE_ICMS_CLIENTES SET SITUACAO_ICMS = ''NAO HABILITADO'', REGIME_DE_APURACAO = :xRegime, INSCRICAO_ESTADUAL = :xIE, SITUACAO_CNPJ = ''VALIDO'' WHERE CODCLIENTE = :xCliente');
QryUpdate.ParamByName('xRegime').Value := regime;
QryUpdate.ParamByname('xIE').Value := inscricaoEstadual;
QryUpdate.ParamByName('xCliente').Value := QryTesteCODCLIENTE.Value;
QryUpdate.ExecSQL;
QryUpdate.SQL.Clear;
QryUpdate.SQL.Add('commit');
QryUpdate.ExecSQL;
//ShowMessage('SIT = 0')
end;
end;
except
Memo1.Lines.Add(QryTesteCODCLIENTE.asString);
end;
QryTeste.Next;
end;
ShowMessage('ACABOU A CONSULTA!');
end
else
begin
ShowMessage('DIGITE A CONSULTA SQL!');
end;
end;
end.
Alguém sabe o que pode ser?
Desde já agradeço.