-
Total de ítens
620 -
Registro em
-
Última visita
-
Days Won
4
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que Waldir Paim postou
-
File not Found: JwaWindows.dcu
Waldir Paim replied to angelosobreira's tópico in Dúvidas Gerais sobre o ACBr
Troque no uses : Por: Vamos aguardar a analise e esperar a correção. -
File not Found: JwaWindows.dcu
Waldir Paim replied to angelosobreira's tópico in Dúvidas Gerais sobre o ACBr
Angelo, Fiz um ajuste pra gente até que a correção oficial ocorra. Use essa unit em anexo. ACBrDFeCapicom.pas Troca ela ai e testa pra gente. -
Melhorias no arquivo ACBrCargaBal
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Regis, Fique a vontade para fazer os ajustes que julgar necessário. -
Atualização automática do sistema, via Web e Lan
Waldir Paim replied to sismais's tópico in Classificados
Oi Maicon Acredito que possa ser uma necessidade da grande maioria dos desenvolvedores Pascal. Gostaria de aproveitar essa oportunidade para sugerir a criação de uma ferramenta open ou free dependendo muito é claro do numero de interessados e colaboradores. Já faz algum tempo que estamos trabalhando numa ferramenta pascal para web, compilando em Delphi Sealte e Free Pascal. Acredito que em breve estaremos com Delphi compilando para Linux e com isso nossa ferramenta já está sendo desenvolvida esperando essa novidade. Se está disposto e não tem muita pressa podemos reunir um numero razoável de interessados e dar inicio a essa sua carência. Os requisitos: Depende do numero de participantes, pode ser coletivo ou privado. Delphi 32 e 64 e Free Pascal 3.1 ou superior. Podemos criar uma classe abstrata e deixar o usuário definir a conexão. HTPP ou HTTPS sem duvidas e rodando local e web sem precisar de Nginx, Apache ou similares; Usando classes nativas das IDEs. Pode ser possível mas vai depender muito do recurso existir na IDE. -
Melhorias no arquivo ACBrCargaBal
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Oi Daniel, Segue anexo. ACBrCargaBal.pas -
Erro na Atualização - 11376
Waldir Paim replied to Dercide Alvarez's tópico in Dúvidas Gerais sobre o ACBr
Acredito que a correção pode ser essa: De : function TDFeCapicom.GetCertDataVenc: TDateTime; begin CarregarCertificadoSeNecessario; if Assigned(FCertificado) then Result := FCertificado.ValidToDate else Result := inherited; end; function TDFeCapicom.GetCertNumeroSerie: String; begin CarregarCertificadoSeNecessario; if Assigned(FCertificado) then Result := FCertificado.SerialNumber else Result := inherited; end; function TDFeCapicom.GetCertSubjectName: String; begin CarregarCertificadoSeNecessario; if Assigned(FCertificado) then Result := FCertificado.SubjectName else Result := inherited; end; Para: function TDFeCapicom.GetCertDataVenc: TDateTime; begin CarregarCertificadoSeNecessario; if Assigned(FCertificado) then Result := FCertificado.ValidToDate else Result := inherited GetCertDataVenc; end; function TDFeCapicom.GetCertNumeroSerie: String; begin CarregarCertificadoSeNecessario; if Assigned(FCertificado) then Result := FCertificado.SerialNumber else Result := inherited GetCertNumeroSerie; end; function TDFeCapicom.GetCertSubjectName: String; begin CarregarCertificadoSeNecessario; if Assigned(FCertificado) then Result := FCertificado.SubjectName else Result := inherited GetCertSubjectName; end; Aqui compilou, mas vamos aguardar a correção definitiva. -
Segue anexo ACBrNFeNotasFiscais.pas
-
Régys, Consegui achar o problema. Voltei essa alteração na unit ACBrNFeNotasFiscais De: function TNotasFiscais.LoadFromFile(CaminhoArquivo: String; AGerarNFe: Boolean = True): Boolean; var XMLStr: String; XMLUTF8: AnsiString; i, l: integer; MS: TMemoryStream; begin Result := False; MS := TMemoryStream.Create; try MS.LoadFromFile(CaminhoArquivo); XMLUTF8 := ReadStrFromStream(MS, MS.Size); finally MS.Free; end; l := Self.Count; // Indice da última nota já existente { Chamando ParseTXT, para converter de UTF8 para a String nativa e Decodificar caracteres HTML Entity } XMLStr := ParseText(XMLUTF8, True); LoadFromString(XMLStr, AGerarNFe); // Atribui Nome do arquivo a novas notas inseridas // for i := l to Self.Count - 1 do Self.Items[i].NomeArq := CaminhoArquivo; Result := True; end; Para: function TNotasFiscais.LoadFromFile(CaminhoArquivo: String; AGerarNFe: Boolean = True): Boolean; var XMLStr: String; XMLUTF8: AnsiString; i, l: integer; MS: TMemoryStream; begin Result := False; MS := TMemoryStream.Create; try MS.LoadFromFile(CaminhoArquivo); XMLUTF8 := ReadStrFromStream(MS, MS.Size); finally MS.Free; end; l := Self.Count; // Indice da última nota já existente // Converte de UTF8 para a String nativa da IDE // XMLStr := DecodeToString(XMLUTF8, True); LoadFromString(XMLStr, AGerarNFe); // Atribui Nome do arquivo a novas notas inseridas // for i := l to Self.Count - 1 do Self.Items[i].NomeArq := CaminhoArquivo; Result := True; end; E voltou a funcionar normalmente. Na verdade a alteração foi aqui: De: Para: Essa alteração foi feita no ultimo commit dessa unit.
-
Régys, Ainda estou verificando, mas já sei que é aqui: procedure NotaFiscal.Validar; var Erro, AXML: String; NotaEhValida, ok: Boolean; ALayout: TLayOut; VerServ: Real; Modelo: TpcnModeloDF; cUF: Integer; begin AXML := XMLAssinado; with TACBrNFe(TNotasFiscais(Collection).ACBrNFe) do begin VerServ := FNFe.infNFe.Versao; Modelo := StrToModeloDF(ok, IntToStr(FNFe.Ide.modelo)); cUF := FNFe.Ide.cUF; if EhAutorizacao( DblToVersaoDF(ok, VerServ), Modelo, cUF) then ALayout := LayNfeAutorizacao else ALayout := LayNfeRecepcao; // Extraindo apenas os dados da NFe (sem nfeProc) AXML := '<NFe xmlns' + RetornarConteudoEntre(AXML, '<NFe xmlns', '</NFe>') + '</NFe>'; NotaEhValida := SSL.Validar(AXML, GerarNomeArqSchema(ALayout, VerServ), Erro); //aqui ele não valida a nota. if not NotaEhValida then begin FErroValidacao := ACBrStr('Falha na validação dos dados da nota: ') + IntToStr(NFe.Ide.nNF) + sLineBreak + FAlertas ; FErroValidacaoCompleto := FErroValidacao + sLineBreak + Erro; raise EACBrNFeException.CreateDef( IfThen(Configuracoes.Geral.ExibirErroSchema, ErroValidacaoCompleto, ErroValidacao)); end; end; end; Para chegar ai gera um XML com o & no nome e tenta consulta a nota. Apresenta a mensagem de erro. Ainda estou no debug e assim que ter uma resposta mais definitiva posto aqui. Acho que entendi! function TDFeOpenSSL.Validar(const ConteudoXML, ArqSchema: String; out MsgErro: String): Boolean; var doc, schema_doc: xmlDocPtr; parser_ctxt: xmlSchemaParserCtxtPtr; schema: xmlSchemaPtr; valid_ctxt: xmlSchemaValidCtxtPtr; schemError: xmlErrorPtr; AXml: AnsiString; begin InitXmlSec; Result := False; doc := Nil; schema_doc := Nil; parser_ctxt := Nil; schema := Nil; valid_ctxt := Nil; try AXml := NativeStringToUTF8(ConteudoXML); //aqui entra & e sai &. doc := xmlParseDoc(PAnsiChar(AXml)); //aqui ele retorna nil em doc. if ((doc = nil) or (xmlDocGetRootElement(doc) = nil)) then begin MsgErro := 'Erro: unable to parse'; // exit; end;
-
Concordo contigo, Tenho a mesma situação aqui, meu caso acontece na tag <xNome></xNome>. Vou faz um debug para verificar onde ocorre o problema com mais clareza. Só para constar não estou usando o ACBrMonitorPLU uso o componente diretamente.
-
Ola, Uma pergunta quanto ao seu ambiente! A impressão ocorre na mesma maquina ou pela rede? Se for pela rede o sistema operacional é o mesmo ou muda? Pergunto isso pois algum tempo passei por isso e a impressão ocorria pela rede do Windows XP para Windows 7 onde esta a impressora. Resolvi mudando tudo para Windows 7 ou imprimindo local.
-
Melhorias no arquivo ACBrIBPTax
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Entendido, já reverti a alteração. Obrigado pela atenção. -
Remoção de Hints e Warning do ACBr
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Nas unit onde adicionei esse código : Favor considerar esse outro: para manter compatibilidade com D7. -
Melhorias no arquivo ACBrCargaBal
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Antes de retomar esse assunto eu gostaria de me desculpar com os colegas pela grosseria de não detalhar as alterações na unit. Fiz algumas alterações na unit em anexo que possa ser útil os utilizadores da ferramenta. Adicionei a property CodigoReceita : Integer read getCodigoReceita write fCodigoReceita; //usa código da receita se não for informado usa código do item Como descrito no comentário a receita possui um código e pode ser utlizado em outros itens, dessa forma o programador pode utilizar uma receita para vários itens. Na classe TACBrCargaBal mudei algumas funções de private para protected, pois dessa forma o código fica acessível para um aproveitamento das implementações. Na claase TACBrCargaBalNutricional adicionei a procedure Limpar; Estou a disposição se precisar de mais detalhes. -
Melhorias no arquivo ACBrIBPTax
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Regis, Veja : TACBrIBPTaxRegistro = class private FTabela: TACBrIBPTaxTabela; FExcecao: String; FNCM: string; FDescricao: string; FEstadual: Double; FFederalNacional: Double; FFederalImportado: Double; FMunicipal: Double; fVigenciaInicio: TDateTime; fVigenciaFim: TDateTime; public property NCM: string read FNCM write FNCM; property Descricao: string read FDescricao write FDescricao; property Excecao: String read FExcecao write FExcecao; property Tabela: TACBrIBPTaxTabela read FTabela write FTabela; property FederalNacional: Double read FFederalNacional write FFederalNacional; property FederalImportado: Double read FFederalImportado write FFederalImportado; property Estadual: Double read FEstadual write FEstadual; property Municipal: Double read FMunicipal write FMunicipal; property VigenciaInicio : TDateTime read fVigenciaInicio write fVigenciaInicio; //essa aqui eu inclui property VigenciaFim : TDateTime read fVigenciaFim write fVigenciaFim; //essa aqui eu inclui end; Eu posso esta com a unit desatualizada, pode confirmar pra mim se tem essas duas propriedades na sua unit? Achei as propriedade que você citou! Elas estão na class TACBrIBPTax mas acredito que o lugar certo delas seria ali onde sugeri. -
Melhorias no arquivo ACBrIBPTax
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Oi Regis, Na unit anexada eu inclui a data de vigência, sendo assim a gente consegue testar se o NCM ainda está dentro do prazo de vigência, com o programador pode por um flag para inativar os NCM espirados. Se puder avaliar a melhoria seria bem interessante ter essa funcionalidade. -
Melhorias nos arquivos ACBrEPCBloco_0 e ACBrEPCBloco_M
Waldir Paim replied to Waldir Paim's tópico in ACBrSPEDPisCofins
Gostaria de se possível uma nova avaliação dessas melhorias. Na correria do dia a dia acabei não explicando direito o que foi feito e o código não foi aceito. Mas vou tentar explicar melhor abaixo: Inclui na classe TRegistroM001 a possibilidade de localizar o registro LocalizaRegistroM400 e LocalizaRegistroM800, essa possibilidade pode facilitar muito o dia a dia do desenvolvedor. Na TRegistroM400 inclui a possibilidade de LocalizaRegistroM410 e a justificativa é a mesma da anterior. Na TRegistroM800 adicionei a LocalizaRegistroM810 que tambem tende a facilitar a vida de quem usa. Fiz uma contribuição nesse post : Mas como o mesmo está travado e o assunto é do mesmo contexto vou tentar argumentar aqui a sua aceitação descrevendo as alterações efetuadas. A discórdia na alteração se tratava de outra unit e não nessa em especifico. Veja: na classe TRegistro0450List apenas inclui a sobrecarga da função LocalizaRegistro e na TRegistro0460List fiz o mesmo procedimento, isso não gera erros não compromete a segurança do código apenas agrega valor. ACBrEFDBloco_0.pas -
Aqui rodou os três testes. Quando sobrar um tempo vou te propor uma alteração nesses testes. Mas por enquanto acredito que já podemos encerrar esses tópico.
-
Remoção de Hints e Warning do ACBr
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Na unit ACBrNFeWebServices; uma revisão na procedure TNFeRetRecepcao.Clear; a propriedade FNFeRetorno só é destruida se if Assigned(FNFeRetorno) and Assigned(FNotasFiscais) for verdadeiro, eu acredito que deva ser movido para fora do begin end dessse bloco e ser destruida se ela estiver atribuida. ACBrNFeWebServices.pas -
Remoção de Hints e Warning do ACBr
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Daniel, Segue mais algumas remoções de avisos, vou separar por finalidade para um melhor controle entendimento. Nessas alterações fiz algumas remoções de avisos e uma alteração na unit ACBrTEFD; Dela eu removi a propriedade privada fAutoAtivarGP : Boolean; e adicionei function GetAutoAtivarGP: Boolean; procedure SetAutoAtivarGP(const Value: Boolean); Dessa forma ela usa as classes filhas para essa funcionalidade. Na unit ACBrTEFDClass ; mudei de protected para public a propriedade citada acima e fiz também algumas remoções de avisos e fiz uma outra alteração na procedure TACBrTEFDClass.VerificaAtivo; onde o raise estava no lugar errado. ACBrTEFDTicketCar.pas ACBrTEFDClass.pas ACBrTEFDBanese.pas ACBrTEFDCliSiTef.pas ACBrTEFD.pas Na pasta do ACBrSerial Uma correção e remoção de avisos, Na procedure TACBrECFNaoFiscal.VendeItem a variável fsVendaBruta recebia o valor dessa forma fsVendaBruta := fsGrandeTotal ; mas na verdade deveria receber assim : fsVendaBruta := RoundTo( (Qtd * ValorUnitario) + fsVendaBruta,-2) ; Nas outras unit somente remoção de avisos. ACBrECFClass.pas ACBrECF.pas ACBrECFNaoFiscal.pas ACBrECFBematech.pas ACBrECFEscECF.pas ACBrECFSweda.pas ACBrECFSchalter.pas ACBrCHQElgin.pas ACBrECFEpson.pas ACBrECFFiscNET.pas ACBrECFVirtual.pas ACBrECFVirtualNaoFiscal.pas ACBrDevice.pas ACBrComum Somente remoção de avisos. ACBrPAFClass.pas ACBrAAC.pas -
Elton, Ele não roda a menos que eu faça como descrevi aqui:
-
Remoção de Hints e Warning do ACBr
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Daniel, Não vou mexer nesses avisos até que cheguemos a uma definição. Mas segue algumas units com remoção dos avisos. ACBrECFNCR.pas ACBrECFSwedaSTX.pas ACBrECFVirtual.pas -
Remoção de Hints e Warning do ACBr
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Segue mais duas unit para verificação! Na unit ACBrEFDBloco_C_Events.pas apenas inclui a function GetOnWriteRegistroC460 para ser utilizada em ver da variavel FOnWriteRegistroC460. Já na unit a alteração provavelmente está correta mas demanda uma atenção especial pois não testei. Como disse acredito que esteja certa pois a alteração foi a inclusão da procedure WriteRegistroM225 dentro da WriteRegistroM220 conforme feito na procedure WriteRegistroM625 dentro da WriteRegistroM620 ambos registros são gerados simultaneamente; Segue anexos. ACBrEFDBloco_C_Events.pas ACBrEPCBloco_M_Class.pas -
Remoção de Hints e Warning do ACBr
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Segue mais unit alterada para remoção dos avisos. Nas units ACBrBase.pas inclui na Uses System.UITypes que a IDE solicitava. Use o código abaixo: uses o DELPHICOMPILER16_UP pois procurei quando o System.UITypes foi adicionado conforme descrito abaixo: Na unit AJBarcode.pas fiz exatamente o mesmo procedimento, sei que trata-se de uma unit de terceiros mas acredito que está sendo mantida pelo ACBr. Na unit do ACBrUtil.pas mudei o tipo de paramentro de entrada da procedure WriteLog(const ArqTXT : String...) de AnsiString para String e com isso evitando o cast, na function TranslateUnprintable fiz um cast nesse trecho : Ch := '['+AnsiString(IntToStr(ASC))+']' e um cast na function ParseTextn nesse treco: AStr := string(Texto); ACBrBase.pas ACBrUtil.pas AJBarcode.pas -
Remoção de Hints e Warning do ACBr
Waldir Paim replied to Waldir Paim's tópico in Dúvidas Gerais sobre o ACBr
Daniel, Minha sugestão inicial seria aplicar as diretivas Desativa o W1057 {$WARN IMPLICIT_STRING_CAST OFF} e Desativa o W1058 {$WARN IMPLICIT_STRING_CAST_LOSS OFF} Como descrito nesse link http://stackoverflow.com/questions/376785/identifiers-for-delphis-warn-compiler-directive Dessa forma já faz uma limpeza rápida, mas não resolve o problema. Veja o que diz a Embarcadero sobre o W1057 http://docwiki.embarcadero.com/RADStudio/Seattle/en/W1057_Implicit_string_cast_from_'%s'_to_'%s'_(Delphi) Me parece que ele não representa muito problema para o código. Sobre o W1058, pelo que percebi ele é mais nocivo e da forma que está a poluição causada pela presença de ambos sem um tratamento adequado pode esconder os verdeiros problemas no código. Tem esse outro link aqui onde essas diretivas podem ser desabilitas na IDE. https://marc.durdin.net/2012/05/delphi-xe2s-hidden-hints-and-warnings-options/