unit Frm_MovInutilizacaoCTe; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, EditNumber, jpeg, ExtCtrls, Buttons, ComCtrls; type TfrmMovInutilizacaoCTe = class(TForm) gbFaixa: TGroupBox; Label1: TLabel; edtAno: TEditNumber; Label2: TLabel; edtModelo: TEditNumber; Label4: TLabel; edtSerie: TEditNumber; Label5: TLabel; edtInicial: TEditNumber; Label6: TLabel; edtFinal: TEditNumber; Label3: TLabel; edtJustificativa: TEdit; Panel1: TPanel; btnInutilizar: TBitBtn; btnLimpar: TBitBtn; btnConsultaStatus: TBitBtn; MemoStatus: TMemo; btnInformacoes: TSpeedButton; procedure LimpaCampos; procedure FormShow(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: Char); procedure AtivaBotao; procedure edtAnoExit(Sender: TObject); procedure edtSerieExit(Sender: TObject); procedure edtInicialExit(Sender: TObject); procedure edtFinalExit(Sender: TObject); procedure edtJustificativaChange(Sender: TObject); procedure btnInutilizarClick(Sender: TObject); procedure btnLimparClick(Sender: TObject); procedure btnConsultaStatusClick(Sender: TObject); procedure btnInformacoesClick(Sender: TObject); private { Private declarations } sDocumento: String; sDataHora, sStat, sMotivo, sProtocolo: String; public { Public declarations } end; var frmMovInutilizacaoCTe: TfrmMovInutilizacaoCTe; implementation uses DateUtils, Math, Printers, pcnConversao, pcnAuxiliar, ACBrDFeUtil, CTA_DataModule, CNT_DataModule, DFe_DataModule, Frm_ACBrCTe; {$R *.dfm} { TfrmMovInutilizacaoCTe } procedure TfrmMovInutilizacaoCTe.LimpaCampos; begin sDocumento := 'CTE'; DMDFe.ConfigurarCTe(sDocumento); (* DM_CTA.ParamDFe.Close; DM_CTA.ParamDFe.SQL.Clear; DM_CTA.ParamDFe.SQL.Add('Select * From Sis_ParamDFe'); DM_CTA.ParamDFe.SQL.Add('Where Empresa = :xEmpresa'); DM_CTA.ParamDFe.SQL.Add('and Modulo = :xModulo'); DM_CTA.ParamDFe.SQL.Add('and Documento = :xDocumento'); DM_CTA.ParamDFe.Params[0].AsString := DM_CTA.xCodEmpresa; DM_CTA.ParamDFe.Params[1].AsString := DM_CTA.xModulo; DM_CTA.ParamDFe.Params[2].AsString := sDocumento; DM_CTA.ParamDFe.Active:=True; DM_CTA.ParamDFe.Open; // Configurações -> Arquivos DMDFe.CTe.Configuracoes.Arquivos.AdicionarLiteral := True; DMDFe.CTe.Configuracoes.Arquivos.EmissaoPathCTe := True; DMDFe.CTe.Configuracoes.Arquivos.PastaMensal := True; DMDFe.CTe.Configuracoes.Arquivos.PathCTe := Trim(DM_CTA.ParamDFePathSalvar.AsString); PathMensal := DMDFe.CTe.Configuracoes.Arquivos.GetPathCTe(0); DMDFe.CTe.Configuracoes.Arquivos.PathCan := Trim(DM_CTA.ParamDFePathSalvar.AsString); DMDFe.CTe.Configuracoes.Arquivos.PathCCe := Trim(DM_CTA.ParamDFePathSalvar.AsString); DMDFe.CTe.Configuracoes.Arquivos.PathEPEC := PathMensal; DMDFe.CTe.Configuracoes.Arquivos.PathInu := PathMensal; DMDFe.CTe.Configuracoes.Arquivos.Salvar := True; DMDFe.CTe.Configuracoes.Arquivos.SalvarCCeCanEvento := True; DMDFe.CTe.Configuracoes.Arquivos.PathEvento := PathMensal; // Configurações -> Certificados DMDFe.CTe.Configuracoes.Certificados.NumeroSerie := trim(DM_CTA.ParamDFeCertNumSerie.AsString); DMDFe.CTe.Configuracoes.Certificados.Senha := trim(DM_CTA.ParamDFeCertSenha.AsString); // Configurações -> Geral DMDFe.CTe.Configuracoes.Geral.FormaEmissao := teNormal; DMDFe.CTe.Configuracoes.Geral.PathSalvar := PathMensal; DMDFe.CTe.Configuracoes.Geral.PathSchemas := trim(DM_CTA.ParamDFePathSchema.AsString); DMDFe.CTe.Configuracoes.Geral.Salvar := True; // Configurações -> WebServices case DM_CTA.ParamDFeWSAmbiente.AsInteger of 0: DMDFe.CTe.Configuracoes.WebServices.Ambiente := taHomologacao; 1: DMDFe.CTe.Configuracoes.WebServices.Ambiente := taProducao; end; DMDFe.CTe.Configuracoes.WebServices.AguardarConsultaRet := 0; DMDFe.CTe.Configuracoes.WebServices.AjustaAguardaConsultaRet := False; DMDFe.CTe.Configuracoes.WebServices.IntervaloTentativas := 0; DMDFe.CTe.Configuracoes.WebServices.ProxyHost := trim(DM_CTA.ParamDFeProxyHost.AsString); DMDFe.CTe.Configuracoes.WebServices.ProxyPass := trim(DM_CTA.ParamDFeProxyPass.AsString); DMDFe.CTe.Configuracoes.WebServices.ProxyPort := trim(DM_CTA.ParamDFeProxyPorta.AsString); DMDFe.CTe.Configuracoes.WebServices.ProxyUser := trim(DM_CTA.ParamDFeProxyUser.AsString); DMDFe.CTe.Configuracoes.WebServices.Tentativas := 5; DMDFe.CTe.Configuracoes.WebServices.UF := DM_CTA.ParamDFeWSUF.AsString; DMDFe.CTe.Configuracoes.WebServices.Visualizar := (DM_CTA.ParamDFeWSVisualizar.AsString='S'); *) edtAno.StoreValue(YearOf(Date)); edtModelo.StoreValue(57); edtSerie.StoreValue(DM_CTA.ParamDFeSerie.AsInteger); edtInicial.StoreValue(0); edtInicial.SetFocus; edtFinal.StoreValue(0); edtJustificativa.Text := ''; btnInutilizar.Enabled := False; btnInutilizar.Visible := DM_CTA.PermiteControlar; end; procedure TfrmMovInutilizacaoCTe.FormShow(Sender: TObject); begin MemoStatus.Clear; LimpaCampos; end; procedure TfrmMovInutilizacaoCTe.FormKeyPress(Sender: TObject; var Key: Char); begin if key=#13 then begin Perform(CM_DialogKey, VK_TAB, 0); Key:=#0; end; end; procedure TfrmMovInutilizacaoCTe.AtivaBotao; begin btnInutilizar.Enabled:=(edtSerie.ValueInt>0) and (edtInicial.ValueInt>0) and (edtFinal.ValueInt>0) and (edtInicial.ValueInt<=edtFinal.ValueInt) and (Length(trim(edtJustificativa.Text))>15); end; procedure TfrmMovInutilizacaoCTe.edtAnoExit(Sender: TObject); begin if edtAno.ValueInt<2000 then edtAno.StoreValue(YearOf(Date)); AtivaBotao; end; procedure TfrmMovInutilizacaoCTe.edtSerieExit(Sender: TObject); begin AtivaBotao; end; procedure TfrmMovInutilizacaoCTe.edtInicialExit(Sender: TObject); begin AtivaBotao; end; procedure TfrmMovInutilizacaoCTe.edtFinalExit(Sender: TObject); begin AtivaBotao; end; procedure TfrmMovInutilizacaoCTe.edtJustificativaChange(Sender: TObject); begin AtivaBotao; end; procedure TfrmMovInutilizacaoCTe.btnInutilizarClick(Sender: TObject); var CNPJ: String; UF: Integer; begin DMDFe.DACTe.NumCopias := 1; DMDFe.DACTe.MostrarPreview := False; DM_CTA.Empresa.Close; DM_CTA.Empresa.SQL.Clear; DM_CTA.Empresa.SQL.Add('Select * From Sis_Empresa'); DM_CTA.Empresa.SQL.Add('Where Codigo = :xCodigo'); DM_CTA.Empresa.Params[0].AsString:=DM_CTA.ParamDFeEmitente.AsString; DM_CTA.Empresa.Active:=True; DM_CTA.Empresa.Open; if copy(DM_CTA.EmpresaCNPJ.AsString,10,4)<>'0000' then CNPJ := Copy(DM_CTA.EmpresaCNPJ.AsString, 2, 14) else CNPJ := Copy(DM_CTA.EmpresaCNPJ.AsString, 1, 9) + Copy(DM_CTA.EmpresaCNPJ.AsString, 14, 2); DMDFe.CTe.WebServices.Inutiliza(CNPJ, edtJustificativa.Text, edtAno.ValueInt, edtModelo.ValueInt, edtSerie.ValueInt, edtInicial.ValueInt, edtFinal.ValueInt); MemoStatus.Lines.Add('-------------------------------------------------------------------------------------------'); MemoStatus.Lines.Add(' => Inutilização de Numeração'); MemoStatus.Lines.Add('-------------------------------------------------------------------------------------------'); MemoStatus.Lines.Add(' Ano : ' + edtAno.Text); MemoStatus.Lines.Add(' Modelo : ' + edtModelo.Text); MemoStatus.Lines.Add(' Inicial : ' + edtInicial.Text); MemoStatus.Lines.Add(' Final : ' + edtFinal.Text); MemoStatus.Lines.Add(' Série : ' + edtSerie.Text); MemoStatus.Lines.Add(' Justificativa: ' + edtJustificativa.Text); UF := DMDFe.CTe.WebServices.Inutilizacao.cUF; sProtocolo := DMDFe.CTe.WebServices.Inutilizacao.Protocolo; sMotivo := DMDFe.CTe.WebServices.Inutilizacao.xMotivo; sStat := IntToStr(DMDFe.CTe.WebServices.Inutilizacao.cStat); sDataHora := DateTimeToStr(DMDFe.CTe.WebServices.Inutilizacao.dhRecbto); MemoStatus.Lines.Add(' Protocolo : ' + sProtocolo); MemoStatus.Lines.Add(' Motivo : ' + sMotivo); MemoStatus.Lines.Add(' Status : ' + sStat); MemoStatus.Lines.Add(' Data/Hora : ' + sDataHora); MemoStatus.Lines.Add(' '); DMDFe.CTe.InutCTe.LerXML(DMDFe.CTe.Configuracoes.Arquivos.GetPathInu + '\' + IntToStr(UF) + // Copy(edtAno.Text, 3, 2) + CNPJ + edtModelo.Text + edtSerie.Text + FormatFloat('000000000', edtInicial.ValueInt) + FormatFloat('000000000', edtFinal.ValueInt) + '-ProcInutCTe'); DMDFe.CTe.ImprimirInutilizacao; DMDFe.CTe.ImprimirInutilizacaoPDF; MessageDlg('Numeração Inutilizada', mtInformation, [mbOk], 0); LimpaCampos; end; procedure TfrmMovInutilizacaoCTe.btnLimparClick(Sender: TObject); begin MemoStatus.Clear; LimpaCampos; end; procedure TfrmMovInutilizacaoCTe.btnConsultaStatusClick(Sender: TObject); var sAmbiente: String; begin DMDFe.CTe.WebServices.StatusServico.Executar; sAmbiente := trim(TpAmbToStr( DMDFe.CTe.WebServices.StatusServico.tpAmb )); if sAmbiente = '1' then sAmbiente := sAmbiente + ' - Produção' else sAmbiente := sAmbiente + ' - Homologação'; MemoStatus.Lines.Add('-------------------------------------------------------------------------------------------'); MemoStatus.Lines.Add(' => Consultando Status do Serviço'); MemoStatus.Lines.Add('-------------------------------------------------------------------------------------------'); MemoStatus.Lines.Add(' Ambiente : ' + sAmbiente); MemoStatus.Lines.Add(' Versão Aplicativo : ' + DMDFe.CTe.WebServices.StatusServico.verAplic); MemoStatus.Lines.Add(' Status Código : ' + IntToStr( DMDFe.CTe.WebServices.StatusServico.cStat )); MemoStatus.Lines.Add(' Status Descrição : ' + DMDFe.CTe.WebServices.StatusServico.xMotivo); MemoStatus.Lines.Add(' UF : ' + CodigoParaUF( DMDFe.CTe.WebServices.StatusServico.cUF )); MemoStatus.Lines.Add(' Recebimento : ' + DFeUtil.SeSenao(DMDFe.CTe.WebServices.StatusServico.dhRecbto = 0, '', DateTimeToStr(DMDFe.CTe.WebServices.StatusServico.dhRecbto))); MemoStatus.Lines.Add(' Tempo Médio : ' + IntToStr( DMDFe.CTe.WebServices.StatusServico.TMed )); MemoStatus.Lines.Add(' Retorno : ' + DFeUtil.SeSenao(DMDFe.CTe.WebServices.StatusServico.dhRetorno = 0, '', DateTimeToStr(DMDFe.CTe.WebServices.StatusServico.dhRetorno))); MemoStatus.Lines.Add(' Observação : ' + DMDFe.CTe.WebServices.StatusServico.xObs); MemoStatus.Lines.Add('-------------------------------------------------------------------------------------------'); MemoStatus.Lines.Add(' '); end; procedure TfrmMovInutilizacaoCTe.btnInformacoesClick(Sender: TObject); begin frmACBrCTe.ShowModal; end; end.