
softcom.wendel
Membros-
Total de ítens
139 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que softcom.wendel postou
-
Ok..Segue em anexo o Arquivo... Obrigado pela atenção ACBrPAF_D_Class.pas
-
Achei os erros...peço ao Pessoal do ACBR Para dar uma olhada pfv Na Unit ACBrPAF_D_Class. function TPAF_D.WriteRegistroD9: String; begin if Assigned(FRegistroD9) then begin with FRegistroD9 do begin Check(funChecaCNPJ(FRegistroD1.CNPJ), '(D9) TOTALIZAÇÃO: O CNPJ "%s" digitado é inválido!', [FRegistroD1.CNPJ]); Check(funChecaIE(FRegistroD1.IE, FRegistroD1.UF), '(D9) TOTALIZAÇÃO: A Inscrição Estadual "%s" digitada é inválida!', [FRegistroD1.IE]); /// Result := LFill('D9') + LFill(FRegistroD1.CNPJ, 14) + RFill(FRegistroD1.IE, 14) + LFill(TOT_REG_D2, 6) + AQUI ESTAVA LFill(TOT_REG_D2, 6, 0) LFill(TOT_REG_D3, 6) + AQUI ESTAVA LFill(TOT_REG_D2, 6, 0) sLineBreak; end; end; end; Passando AQUI ESTAVA LFill(TOT_REG_D2, 6, 0) ele entra no LFill para Numeric. E na Função abaixo ja deixei como eu coloquei function TPAF_D.WriteRegistroD2: String; var intFor: integer; strRegistroD2: String; strRegistroD3: String; begin strRegistroD2 := ''; strRegistroD3 := ''; if Assigned(FRegistroD2) then begin FRegistroD2.Sort(@OrdenarD2); for intFor := 0 to FRegistroD2.Count - 1 do begin with FRegistroD2.Items[intFor] do begin Check(funChecaCNPJ(FRegistroD1.CNPJ), '(D2) DAV EMITIDOS: O CNPJ "%s" digitado é inválido!', [FRegistroD1.CNPJ]); strRegistroD2 := strRegistroD2 + LFill('D2') + LFill(FRegistroD1.CNPJ, 14) + RFill(NUM_FAB, 20) + RFill(MF_ADICIONAL, 1) + RFill(TIPO_ECF, 7) + RFill(MARCA_ECF, 20) + RFill(MODELO_ECF, 20, ifThen(RegistroValido, ' ', '?')) + LFill(COO, 6) + RFill(NUM_DAV, 13) + LFill(DT_DAV, 'yyyymmdd') + RFill(TIT_DAV, 30) + LFill( FormatCurr('###,##0.00', VLT_DAV), 8, '0') + //LFill(VLT_DAV, 8, 2) + LFill(COO_DFV, 6) + LFill(NUMERO_ECF, 3) + RFill(NOME_CLIENTE, 40) + LFill(CPF_CNPJ, 14) + sLineBreak; end; // Registro FILHOS strRegistroD3 := strRegistroD3 + WriteRegistroD3( FRegistroD2.Items[intFor] ); FRegistroD9.TOT_REG_D2 := FRegistroD9.TOT_REG_D2 + 1; FRegistroD9.TOT_REG := FRegistroD9.TOT_REG + 1; end; Result := strRegistroD2 + strRegistroD3; end; end; Acho que assim fica correto...ou não?
-
Rsss...cara..se pensarmos por esse lado...poderíamos criptografar os dados na tabela de Log..para ninguém saber o que tem la..mas sempre tem uns que podem sair apagando tudo e todos nas tabelas...e isso eu creio que não tem como controlar...na realidade acho que o governo esta tentando cercar uma coisa que não tem como, mas fazer o que. Mas vcs acham que da forma que fiz não daria certo?
-
Pessoal Encontrei o problema mas não entendi como poderei resolver, pois olhando o código do ACBR me parece que esta tudo OK. O problema me parece que esta sendo gerado na coluna "D2.VLT_DAV" que esta sendo gerada sem o tamanho correto que seria de 8 Caracteres, ou seja, nao esta completando com espaços a esquerda. Alguém passou pelo mesmo problema?
-
Pessoal, estou com um problema estranho...vejam o meu código procedure DAVEmitidos(DtInicial, DtFinal: TDateTime; Arquivo, Abrir: Boolean); Var slArquivo: TStringList; ListaDAV: TObjectList; i, Cod_Rel_Paf:integer; R06: TR06VO; D2: TRegistroD2; Impressora: TImpressoraVO; ArqNom: String; begin // Try // ListaDAV := TDAVController.ListarDAVPeriodo(DtInicial, DtFinal); // If Assigned(ListaDAV) Then Begin // If (Arquivo) Then Begin // registro D1 // preencher header do arquivo PreencherHeader(DMEcf.ACBrPAF.PAF_D.RegistroD1); // registro D2 DMEcf.ACBrPAF.AssinarArquivo := False; DMEcf.ACBrPAF.PAF_D.RegistroD2.Clear; //dados da impressora Impressora := TImpressoraController.CarregarImpressora(1); // For i := 0 To ListaDAV.Count - 1 Do Begin // D2 := DMEcf.ACBrPAF.PAF_D.RegistroD2.New; // D2.RegistroValido := TDAVController.VerificarHASH(TDAVVO(ListaDAV.Items)); // D2.NUM_FAB := Impressora.Serie; D2.MF_ADICIONAL := Impressora.MFD; D2.TIPO_ECF := Impressora.Tipo; D2.MARCA_ECF := Impressora.Marca; D2.MODELO_ECF := Impressora.Modelo; D2.NUMERO_ECF := Impressora.NUMERO_ECF; D2.COO := IntToStr(TDAVVO(ListaDAV.Items).COO); D2.NUM_DAV := Format('%.13d', [TDAVVO(ListaDAV.Items).Id]); D2.DT_DAV := TDAVVO(ListaDAV.Items).DT_EMISSAO; // Verificar D2.TIT_DAV := Impressora.DAV_NOME; D2.VLT_DAV := TDAVVO(ListaDAV.Items).VLR_TOTAL; // End; // ArqNom := ExtractFilePath(Application.ExeName) + 'Arquivos\DAVEmitidos.txt'; DMEcf.ACBrPAF.SaveFileTXT_D('DAVEmitidos.txt'); DMEcf.Assinar(ArqNom, true); if Abrir then Abrir_Arq( ArqNom ); // End Else Begin // Try // slArquivo := TStringList.Create; // slArquivo.Add(Replicate('=', DMEcf.ECF.Colunas)); slArquivo.Add(Centraliza('DAV EMITIDOS', DMEcf.ECF.Colunas)); slArquivo.Add(Centraliza('PERIODO: ' + DateToStr(DtInicial) + ' A ' + DateToStr(DtFinal), DMEcf.ECF.Colunas)); slArquivo.Add(Replicate('=', DMEcf.ECF.Colunas)); // ...05...10...15...20...25...30...35...40...45... slArquivo.Add('NUMERO DT EMIS TITULO IMP COO VLR'); // 0000000001 01/01/01 ORCAMENTO 0001 slArquivo.Add(Replicate('=', DMEcf.ECF.Colunas)); // For i := 0 To ListaDAV.Count - 1 Do slArquivo.Add(Format('%.10d %8s %-7s %5s %5s %7s', [TDAVVO(ListaDAV.Items).ID, FormatDateTime('dd/mm/yy', TDAVVO(ListaDAV.Items).DT_EMISSAO), 'ORÇAMENT', FormatFloat('###0', TDAVVO(ListaDAV.Items).COO_IMP), FormatFloat('###0', TDAVVO(ListaDAV.Items).COO), FormatFloat('#,##0.00', TDAVVO(ListaDAV.Items).VLR_TOTAL)])); // slArquivo.Add(Replicate('=', DMEcf.ECF.Colunas)); if DMECF.VCODIGO_REL_GER_PAF <> '' then Cod_Rel_Paf := Strtoint(Trim(DMECF.VCODIGO_REL_GER_PAF)) else Cod_Rel_Paf := 2; DMEcf.ECF.RelatorioGerencial(slArquivo, 1, Cod_Rel_Paf); { TODO : Está correta essa implementação para gravação do registro R06? } Try // R06 := TR06VO.Create; // R06.USUARIO := 1; R06.COO := StrToInt(DMEcf.ECF.NumCOO); R06.GNF := StrToInt(DMEcf.ECF.NumGNF); R06.GRG := StrToInt(DMEcf.ECF.NumGRG); R06.CDC := StrToInt(DMEcf.ECF.NumCDC); R06.NUM_FABRICACAO := DMEcf.ECF.NumSerie; R06.MF_ADICIONAL := DMEcf.ECF.MFAdicional; R06.MODELO := DMEcf.ModeloECF; R06.NUM_ECF := DMEcf.NumeroECF; R06.DATA := DMEcf.ECF.DataHora; R06.Denominacao := 'RG'; R06.DataEmissao := FormatDateTime('yyyy-mm-dd', DMEcf.ECF.DataHora); R06.HoraEmissao := FormatDateTime('hh:nn:ss', DMEcf.ECF.DataHora); // TRegistroRController.GravaR06(R06); Except // On E:Exception Do MessageDlg(E.Message, mtError, [mbOk], 0); // End; // Finally // slArquivo.Free; slArquivo := Nil; // End; // End; // End // Else Application.MessageBox('Não existem DAV para o período informado.', 'Informação do Sistema', MB_OK + MB_ICONINFORMATION); // Finally // ListaDAV.Free; ListaDAV := Nil; // End; // end; */*/*/*/*/*/*/*/*/*/ Vejam que para o DAVs por arquivo esta aparentemente tudo certo...mas o arquivo esta sendo gerado faltando dados...vejam a tela do Validador..esta me dizendo que esta faltando dados...percebi que o valor esta meio fora de lugar..mas não achei o pq disso
-
Pessoal eu fiz da seguinte forma. Criei uma tabela de LOGS, como mencionado nos outros Posts CREATE TABLE LOG_DADOS ( ORIGEM DORIGEM NOT NULL /* DORIGEM = VARCHAR(10) */, CODIGO DCODIGO NOT NULL /* DCODIGO = INTEGER */, DATA DDATA NOT NULL /* DDATA = TIMESTAMP */, "HASH" DMD5 NOT NULL /* DMD5 = VARCHAR(32) */ ); Então a cada Inclusão eu altero o LOG de dados com o HASH, a Origem(DAV, R... e etc)...mas na hora de ler os dados eu faço a seguinte consulta Exemplo para os DAVS. ConsultaSQL := ' select L.CODIGO, D.CODIGO_AGRUP, D.DT_EMISSAO, ' + ' D.CLIENTE, D.NOME, D.ENDERECO, D.CIDADE, ' + ' D.UF, D.CPF_CNPJ, D.RG_IE, D.BAIRRO, ' + ' D.CEP , D.VLR_ITENS, D.VLR_DESCONTO, D.VLR_TOTAL, ' + ' D.VENDEDOR, D.CCF, D.CANCELADO, D.COO, D.NUMECF, ' + ' D.VENDA, D.VLR_ACRESCIMO, D.NOME_VENDEDOR, D.SELECIONADO, ' + ' D.HASH, D.SITUACAO, D.COO_IMPRESSAO, L."HASH" AS HASH_LOG, L.DATA ' + ' from DAVS D ' + ' right join VER_LOG_DADOS ('+ QuotedStr('DAV') + ') L ON ( D.codigo = L.codigo ) ' + ' where CAST(L.DATA AS DATE) >= :DT_INICIAL AND CAST(L.DATA AS DATE) <= :DT_FINAL ' + ' ORDER BY D.CODIGO '; Query.sql.Text := ConsultaSQL; Query.Open; Query.First; // While Not(Query.Eof) Do Begin // DAV := TDAVVO.Create; // DAV.ID := Query.FieldByName('CODIGO').AsInteger; if Query.FieldByName('DT_EMISSAO').IsNull then DAV.DT_EMISSAO := Query.FieldByName('DATA').AsDateTime else DAV.DT_EMISSAO := Query.FieldByName('DT_EMISSAO').AsDateTime; DAV.VLR_TOTAL := Query.FieldByName('VLR_TOTAL').AsFloat; DAV.COO := Query.FieldByName('COO').AsInteger; DAV.COO_IMP := Query.FieldByName('COO_IMPRESSAO').AsInteger; DAV.Id_Agrup := Query.FieldByName('CODIGO_AGRUP').AsInteger; DAV.Cliente := Query.FieldByName('CLIENTE').AsInteger; DAV.Nome := Query.FieldByName('NOME').AsString; DAV.Endereco := Query.FieldByName('ENDERECO').AsString; DAV.Bairro := Query.FieldByName('BAIRRO').AsString; DAV.Cidade := Query.FieldByName('CIDADE').AsString; DAV.UF := Query.FieldByName('UF').AsString; DAV.CEP := Query.FieldByName('CEP').AsString; DAV.CPF_CNPJ := Query.FieldByName('CPF_CNPJ').AsString; DAV.RG_IE := Query.FieldByName('RG_IE').AsString; DAV.CCF := Query.FieldByName('CCF').AsInteger; DAV.VLR_ITENS := Query.FieldByName('VLR_ITENS').AsFloat; DAV.VLR_DESCONTO := Query.FieldByName('VLR_DESCONTO').AsFloat; DAV.HASH := Query.FieldByName('HASH').AsString; DAV.HASH_LOG := Query.FieldByName('HASH_LOG').AsString; // ListaDAV.Add(DAV); // Query.next; // End; // Result := ListaDAV; Essa consulta me retorna os registros de DAVS e seus respectivos LOGS...qdo um DAV é excluído a Consulta é retornada sem os dados do DAV, mas com os dados necessários para criar a Linha...que são as colunas, L.CODIGO e HASH_LOG...os outros virão em branco, assim como o HASH não bate com o Log do HASH do LOG eu sei que foi apagada. Creio que resolve todas assituações...concordam comigo? Abaixo o Código da função completo: procedure DAVEmitidos(DtInicial, DtFinal: TDateTime; Arquivo, Abrir: Boolean); Var slArquivo: TStringList; ListaDAV: TObjectList; i, Cod_Rel_Paf:integer; R06: TR06VO; D2: TRegistroD2; Impressora: TImpressoraVO; ArqNom: String; begin // Try // ListaDAV := TDAVController.ListarDAVPeriodo(DtInicial, DtFinal); // If Assigned(ListaDAV) Then Begin // If (Arquivo) Then Begin // registro D1 // preencher header do arquivo PreencherHeader(DMEcf.ACBrPAF.PAF_D.RegistroD1); // registro D2 DMEcf.ACBrPAF.AssinarArquivo := False; DMEcf.ACBrPAF.PAF_D.RegistroD2.Clear; //dados da impressora Impressora := TImpressoraController.CarregarImpressora(1); // For i := 0 To ListaDAV.Count - 1 Do Begin // D2 := DMEcf.ACBrPAF.PAF_D.RegistroD2.New; // D2.RegistroValido := TDAVController.VerificarHASH(TDAVVO(ListaDAV.Items[i])); // D2.NUM_FAB := Impressora.Serie; D2.MF_ADICIONAL := Impressora.MFD; D2.TIPO_ECF := Impressora.Tipo; D2.MARCA_ECF := Impressora.Marca; D2.MODELO_ECF := Impressora.Modelo; D2.NUMERO_ECF := Impressora.NUMERO_ECF; D2.COO := IntToStr(TDAVVO(ListaDAV.Items[i]).COO); D2.NUM_DAV := Format('%.13d', [TDAVVO(ListaDAV.Items[i]).Id]); D2.DT_DAV := TDAVVO(ListaDAV.Items[i]).DT_EMISSAO; // Verificar D2.TIT_DAV := Impressora.DAV_NOME; D2.VLT_DAV := TDAVVO(ListaDAV.Items[i]).VLR_TOTAL; // End; // ArqNom := ExtractFilePath(Application.ExeName) + 'Arquivos\DAVEmitidos.txt'; DMEcf.ACBrPAF.SaveFileTXT_D('DAVEmitidos.txt'); DMEcf.Assinar(ArqNom, true); if Abrir then Abrir_Arq( ArqNom ); // End Else Begin // Try // slArquivo := TStringList.Create; // slArquivo.Add(Replicate('=', DMEcf.ECF.Colunas)); slArquivo.Add(Centraliza('DAV EMITIDOS', DMEcf.ECF.Colunas)); slArquivo.Add(Centraliza('PERIODO: ' + DateToStr(DtInicial) + ' A ' + DateToStr(DtFinal), DMEcf.ECF.Colunas)); slArquivo.Add(Replicate('=', DMEcf.ECF.Colunas)); // ...05...10...15...20...25...30...35...40...45... slArquivo.Add('NUMERO DT EMIS TITULO IMP COO VLR'); // 0000000001 01/01/01 ORCAMENTO 0001 slArquivo.Add(Replicate('=', DMEcf.ECF.Colunas)); // For i := 0 To ListaDAV.Count - 1 Do slArquivo.Add(Format('%.10d %8s %-7s %5s %5s %7s', [TDAVVO(ListaDAV.Items[i]).ID, FormatDateTime('dd/mm/yy', TDAVVO(ListaDAV.Items[i]).DT_EMISSAO), 'ORÇAMENT', FormatFloat('###0', TDAVVO(ListaDAV.Items[i]).COO_IMP), FormatFloat('###0', TDAVVO(ListaDAV.Items[i]).COO), FormatFloat('#,##0.00', TDAVVO(ListaDAV.Items[i]).VLR_TOTAL)])); // slArquivo.Add(Replicate('=', DMEcf.ECF.Colunas)); if DMECF.VCODIGO_REL_GER_PAF <> '' then Cod_Rel_Paf := Strtoint(Trim(DMECF.VCODIGO_REL_GER_PAF)) else Cod_Rel_Paf := 2; DMEcf.ECF.RelatorioGerencial(slArquivo, 1, Cod_Rel_Paf); { TODO : Está correta essa implementação para gravação do registro R06? } Try // R06 := TR06VO.Create; // R06.USUARIO := 1; R06.COO := StrToInt(DMEcf.ECF.NumCOO); R06.GNF := StrToInt(DMEcf.ECF.NumGNF); R06.GRG := StrToInt(DMEcf.ECF.NumGRG); R06.CDC := StrToInt(DMEcf.ECF.NumCDC); R06.NUM_FABRICACAO := DMEcf.ECF.NumSerie; R06.MF_ADICIONAL := DMEcf.ECF.MFAdicional; R06.MODELO := DMEcf.ModeloECF; R06.NUM_ECF := DMEcf.NumeroECF; R06.DATA := DMEcf.ECF.DataHora; R06.Denominacao := 'RG'; R06.DataEmissao := FormatDateTime('yyyy-mm-dd', DMEcf.ECF.DataHora); R06.HoraEmissao := FormatDateTime('hh:nn:ss', DMEcf.ECF.DataHora); // TRegistroRController.GravaR06(R06); { TODO : Precisamos fazer alguma coisa em relacao ao registro R07? } Except // On E:Exception Do MessageDlg(E.Message, mtError, [mbOk], 0); // End; // Finally // slArquivo.Free; slArquivo := Nil; // End; // End; // End // Else Application.MessageBox('Não existem DAV para o período informado.', 'Informação do Sistema', MB_OK + MB_ICONINFORMATION); // Finally // ListaDAV.Free; ListaDAV := Nil; // End; // end;
-
Ok..Obrigado pela ajuda Régys.
-
Bom Dia Pessoal. Eu utilizava uma função interna para o radapé do cupom onde eram colocados MD5, DAV, PRÉVENDA E ETC Agora comecei a utilizar as funções do ACBR ECF.InfoRodapeCupom.Dav := ''; ECF.InfoRodapeCupom.DavOs := ''; ECF.InfoRodapeCupom.PreVenda := ''; if DMECF.Ecf_MFD then DMECF.ECF.IdentificaPAF('SOFTPDV 2.0', DMECF.MD5_Laudo) ELSE DMECF.ECF.InfoRodapeCupom.MD5 := FormataString( DMECF.MD5_Laudo, 48) + #13 + #10; IF VendasNUM_PREVENDA.VALUE > 0 THEN begin DMECF.ECF.InfoRodapeCupom.PreVenda := FormataNumero( VendasNUM_PREVENDA.AsString, 10); end else IF VendasNUM_DAV.VALUE > 0 THEN Begin DMECF.ECF.InfoRodapeCupom.Dav := FormataString( FormataNumero( VendasNUM_DAV.AsString, 10 ), 48) ; NumDav := VendasNUM_DAV.Value; End else if VendasMESA.VALUE > 0 THEN begin Obs := Obs + 'ECF ' + FormataNumero( VendasECF_CONFERENCIA.AsString, 3) + '-CONFERENCIA DE MESA-CER ' + FormataNumero( VendasCER_CONFERENCIA.AsString, 4) + '-COO ' + FormataNumero( VendasCOO_CONFERENCIA.AsString, 6) ; end; Mas esta saindo tudo truncando no rodape Esta saido Assim=> MD-5: XXXXXXXXXXDAV0000000020 Ou seja...nao esta pulando a linha para cada informação. O que posso estar fazendo errado?
-
Boa tarde, estou criando A CCe dentro de meu Software e o componente esta devolvendo o erro "URL não disponível para o estado solicitado.", mas o emissor é de MS ( Código 50 ) e me parece que o MS já estaria correta a URL, alguem saberia me responder o por que do erro? Olhei o Forum todo e não consegui achar nada sobre este erro. Agradeço a atenção Wendel Wagner
-
Bom Dia a Todos. No meu paf eu Implementei uma função para iniciar o Dia Fiscal, é uma espécie de caixa que server também para atender alguns requisitos do paf, como por exemplo a posição do estoque e o requisito que tem que gravar a data e hora do primeiro documento emitido. Mas nas ecfs daruma o comando "DataMovimento" retorna 01/01/00, e só fica correto quando emito um cupom. Vejam as duas funções Funcao Confere DIA */*/*/*/*/*/*/*/*/*/*/*/*/*/ Decodedate (DMECF.DataMovimento, Ano, Mes, Dia ); Data := EncodeDate(Ano, Mes, Dia); Sql := ' SELECT COO_LX FROM DIA_FISCAL D ' + ' WHERE CAST(D.data AS DATE) = :DATA' ; With DMDia_Fiscal do begin Confere.Close; Confere.SQL.Clear; Confere.SQL.Add( Sql ); Confere.ParamByName('DATA').AsDate := Data; Confere.Open; if Confere.Fields[0].IsNull then Result := true else begin Result := False; MessageDlg('Já existe um dia Fiscal aberto para o Movimento Atual = ' + DatetoStr(Data), mtError, [mbOK], 0); end; Confere.Close; end; /*/*/*/*/*/*/*/*/*/*/*/*/*/* if (Conferedia) then Begin //Chamando a Leitura X DMECF.LeituraX(False); // dsEditar.DataSet.Open; dsEditar.DataSet.Append; Decodedate (DMECF.DataMovimento, Ano, Mes, Dia ); dsEditar.DataSet.FieldByName('DATA').AsDateTime := EncodeDate(Ano, Mes, Dia); dsEditar.DataSet.Post; dsEditar.DataSet.Close; //Grava o Estoque Atual Grava_Estoque; DsSelecionar.DataSet.Refresh; MessageDlg('Dia Fiscal Aberto com sucesso, Bom trabalho!', mtError, [mbOK], 0); End; */*/*/*/*/*/*/*/*/* Alguem sabe como resolver isso na daruma sem ter que abrir um cupom Fiscal? Ou tem outra solução para este caso. Agradeço a Atenção Wendel Wagner
-
Existe a possibilidade no ACBRTEFD de fazer a seguinte operação? RECEBIMENTO COM CARTAO, Ou seja, não há um cupom fiscal aberto, pois o cupom foi emitido no ato da venda. O Cliente pede para pagar uma parcela com o cartao de crédito, como fazer este recebimento no ACBRTEFD? Agradeço a Atenção
-
Obrigado..baixei e vou testar agora
-
Como configurar o Acbr para funcionar pela USB? Obrigado pela atenção
-
Class para Calculo de Impostos
softcom.wendel replied to softcom.wendel's tópico in Legislação Fiscal e Tributária
Ok... Fiz algumas análises e a classe poderá servir tanto para o cálculo correto para o preenchimento da Nota de saida como para calcular o custo correto de uma nota de entrada e validar os dados da mesma. Para a saida é simples, são cálculos normais, mas para a entrada eu tenho rotinas que calculam o custo correto da mercadoria: Icm de Credito Icm de Débito Ipi Frete e etc Destes dados montamos o PMZ (Preço margem Zero) e o custo de compra, então montamos o Preço de venda com base em uma determinada fórmula. Vou utilizar como base uma Unit que encontrei na Clube Delphi que ja contem algumas rotinas prontas e esta bem organizada (No meu entendimento é claro..rsss). Ai vou postando no Forum?...ou como faço? -
Class para Calculo de Impostos
um tópico no fórum postou softcom.wendel Legislação Fiscal e Tributária
Pessoal boa tarde. Possuo uma rotina que faz o cálculo de impostos de uma nfe, mas estou pensando em gerar uma classe que faça isso automaticamente passando como parametros os dados necessários, mas antes de começar isso gostaria de verificar se ja nao existe algo assim no ACBR. Agradeço a atenção -
Numero CER para conferencia de Mesas
softcom.wendel replied to softcom.wendel's tópico in ACBrSerial
Perfeito, funcionou corretamente. Segue código, pois pode ajudar alguem e se eu tiver feito errado por favor me corrijam. function TDMECF.NumCER: Integer; var vRel : TACBrECFRelatorioGerencial; I, Resp: INTEGER; begin Resp := 0; ecf.CarregaRelatoriosGerenciais; for I := 0 to ecf.RelatoriosGerenciais.Count - 1 do Begin vRel := ecf.RelatoriosGerenciais.Objects[I]; if Uppercase(vRel.Descricao)='PAF-ECF' then Resp := vRel.Contador; End; Result := Resp; end; -
Bom dia Pessoal Como obter o numero do CER para a conferencia de Mesa? Obrigado pela atenção
-
ACBR tentando assinar o Arquivo
softcom.wendel replied to softcom.wendel's tópico in ACBrSintegra/ACBrPAF
Deu certo....obrigado pela ajuda. -
Bom Dia Kiko...era isso mesmo... Tinha este código logo acima with Ide.NFref.Add do begin e nos dados estava assim if ReferenciadaTipoNFe then // TAG - Informação das NF/NF-e referenciadas - - Ocorrência 0-N ******** begin // Se a nota referenciada for um NFe preencher o campo abaixo: Ano := Copy(IntToStr(YearOf(BuscaNFeDATA_NF.AsDateTime)), 3, 2); Mes := FormatFloat('00', MonthOf(BuscaNFEDATA_NF.AsDateTime)); ChaveRef := BuscaNFeCHAVE_NFE.AsString; Ide.NFref.Add; Ide.NFref[0].refNFe := ChaveRef; // B13 - Chave de acesso das NF-e referenciadas end; Ou seja, estava dando dois ADD..retirei a linha e deu tudo certo.....obrigado pela ajuda....t+
-
Ola Kiko... fiz a alteração mas tbm deu erro...segue em anexo o xml....mas agora da o erro CANNOT BE EMPTY ACCORDING TO THE DTD/SCHEMA Segue em anexo o xml.. vlw pela ajuda 50111009517945000150550010000002111000002113-NFe.xml
-
Boa tarde pessoal. Estou com um problema na Nfe referenciada, segue trecho do código //:: Abre a qry para pegar o numero da chave de acesso da NFe. BuscaNFe.Close; BuscaNFe.ParamByName('NFE').AsInteger := VendasNFE_REFERENCIADA.Value; BuscaNFe.Open; //:: Verifica a existencia da nfe nos arquivos de NFe's emitidas if not BuscaNFe.IsEmpty then begin ReferenciadaTipoNFe := True; end else begin raise Exception.Create('Nota a ser complementada não encontrada com base no [NÚMERO DA NFE] informado, ou foi cancelada!!!'); end; if ReferenciadaTipoNFe then // TAG - Informação das NF/NF-e referenciadas - - Ocorrência 0-N ******** begin // Se a nota referenciada for um NFe preencher o campo abaixo: Ano := Copy(IntToStr(YearOf(BuscaNFeDATA_NF.AsDateTime)), 3, 2); Mes := FormatFloat('00', MonthOf(BuscaNFEDATA_NF.AsDateTime)); Ide.NFref.Add; Ide.NFref[0].refNFe := BuscaNFeCHAVE_NFE.AsString; // B13 - Chave de acesso das NF-e referenciadas Ide.NFref[0].RefNF.CNPJ := edtEmitCNPJ.Text ; // B17 - CNPJ do emitente Ide.NFref[0].RefNF.cUF := Codigo_Ibge_Uf(Trim(edtEmitUF.Text)); // B15 - Código da UF do emitente do Documento Fiscal - Tabela do IBGE Ide.NFref[0].RefNF.modelo := BuscaNFeMODELO.AsInteger; // B18 - Modelo do Documento Fiscal - Ex. 01 Ide.NFref[0].RefNF.nNF := BuscaNFeNF.AsInteger; // B20 - Número do Documento Fiscal Ide.NFref[0].RefNF.AAMM := Ano+Mes; // B16 - Ano e Mês de emissão da NF-e Ide.NFref[0].RefNF.serie := BuscaNFeSERIE.AsInteger; // B19 - Série do Documento Fiscal - informar zero se inexistente end; BuscaNFe.Close; Esta dando o erro de Modelo inválido, mas olhei o Xml ( Em anexo ) e o modelo esta correto, creio eu. Alguem poderia me ajudar. Segue em anexo a tela do erro e o xml. Agradeço a Atenção 50111009517945000150550010000002111000002113-NFe.xml
-
ACBR tentando assinar o Arquivo
softcom.wendel replied to softcom.wendel's tópico in ACBrSintegra/ACBrPAF
Opa...Era para ter digitado Regys e nao daniel, desculpa -
ACBR tentando assinar o Arquivo
softcom.wendel replied to softcom.wendel's tópico in ACBrSintegra/ACBrPAF
Boa tarde Daniel. Tive problemas para utilziar o ACBR EAD. Estava dando um erro de String e AnsiString para Compilar qdo tem o ACBREAD instanciado. -
Qdo tento gerar a leitura de memória fiscal por período ele chama o seguinte código Self.LeituraMemoriaFiscalSerial(DataInicial, DataFinal, PathArquivo, False); Self.AssinaArquivoComEAD(PathArquivo); Mas a parte de assinatura estou utilizando a dll da bematech....ele teria mesmo que passar pelo AssinaArquivoComEAD, ou teria que fazer um teste assign? Agradeço a Atenção
-
Incompatible types: 'Array' and 'PWideChar'
um tópico no fórum postou softcom.wendel ACBrSintegra/ACBrPAF
Qdo tento compilar o fonte do Paf esta dando o erro Incompatible types: 'Array' and 'PWideChar' ACBrEAD.pas Delphi 2010. Obrigado pela atenção