Ir para conteúdo
  • Cadastre-se

dev botao

Exemplo Sped com Banco de dados


  • Este tópico foi criado há 4728 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde!

Será que seria possível de alguém disponibilizar o sped icms/ipi com um banco de dados pra exemplo. Não sei se sou apenas eu mas pelo demo, ficou fácil de montar os registros que tem apenas uma informação, como o nome da empresa, cnpj... mas para campos que possuem vários valores que eu tenho a dúvida. Por exemplo aqui:

with Registro0150New do

begin

COD_PART := '000001';

NOME := 'RAZAO SOCIAL DO CLIENTE';

COD_PAIS := '001';

CNPJ := '12345678000123';

CPF := '';

IE := '';

COD_MUN := 1;

SUFRAMA := '';

ENDERECO := 'ENDERECO';

NUM := '';

COMPL := 'COMPL';

BAIRRO := 'BAIRRO';

end;

Como eu poderia fazer pra ele puxar os cadastros da minha tabela?

Grato,

Rodrigo Machado

Link para o comentário
Compartilhar em outros sites

Bom dia Lampada! Obrigado pela ajuda. Estou tendo só uns problemas de '' is not valid integer value, mesmo tendo os dados na minha tabela preenchidos. Se puder me ajudar, estou fazendo assim:

procedure Tfrmspedfiscal.GerarDadosBloco(pBloco: String);

var Int1, Int2, Notas, iAno, iCFinalidade, iPerfil, iAtividade : Integer;

aTotalICMS : Double;

begin

aTotalICMS := 0;

iAno := StrToInt(eAno.Text);

iCFinalidade := tCFinalidade.ItemIndex;

iPerfil := tPerfil.ItemIndex;

iAtividade := tAtividade.ItemIndex;

if pBloco = '0' then

begin

with ACBrSpedFiscal1.Bloco_0 do

begin

// informações da Empresa

with Registro0000New do

begin

case iAno of

2009: begin

COD_VER := vlVersao101;

end;

2010: begin

COD_VER := vlVersao102;

end;

2011: begin

COD_VER := vlVersao103;

end;

end;

case iCFinalidade of

0: begin

COD_FIN := raOriginal;

end;

1: begin

COD_FIN := raSubstituto;

end;

end;

NOME := frmmodulo.qremitente.fieldbyname('FILIAL').AsString;

CNPJ := SN(frmmodulo.qremitente.fieldbyname('CNPJ').AsString);

CPF := '01295327465'; // Deve ser uma informação valida

UF := frmmodulo.qremitente.fieldbyname('UF').AsString;

IE := frmmodulo.qremitente.fieldbyname('IE').AsString;

COD_MUN := StrToInt(frmmodulo.qremitente.fieldbyname('COD_MUNICIPIO_IBGE').AsString);

IM := frmmodulo.qremitente.fieldbyname('INSC_MUNICIPAL').AsString;

SUFRAMA := eSuframa.Text;

case iPerfil of

0: begin

IND_PERFIL := pfPerfilA;

end;

1: begin

IND_PERFIL := pfPerfilB;

end;

2: begin

IND_PERFIL := pfPerfilC;

end;

end;

case iAtividade of

0: begin

IND_ATIV := atIndustrial;

end;

1: begin

IND_ATIV := atOutros;

end;

end;

end;

// informações complementares da Empresa

with Registro0001New do

begin

IND_MOV := imComDados;

with Registro0005New do

begin

FANTASIA := frmmodulo.qremitente.fieldbyname('FANTASIA').AsString;

CEP := SN(frmmodulo.qremitente.fieldbyname('CEP').AsString);

ENDERECO := frmmodulo.qremitente.fieldbyname('ENDERECO').AsString;

NUM := frmmodulo.qremitente.fieldbyname('NUMERO').AsString;

COMPL := frmmodulo.qremitente.fieldbyname('COMPLEMENTO').AsString;

BAIRRO := frmmodulo.qremitente.fieldbyname('BAIRRO').AsString;

FONE := SN(frmmodulo.qremitente.fieldbyname('TELEFONE').AsString);

FAX := SN(frmmodulo.qremitente.fieldbyname('FAZ').AsString);

EMAIL := eEmail.Text;

end;

// informações da contabilidade.

with Registro0100New do

begin

NOME := frmmodulo.qremitente.fieldbyname('CONTADOR_NOME').AsString;

CPF := SN(frmmodulo.qremitente.fieldbyname('CONTADOR_CPF').AsString); // Deve ser uma informação valida

CRC := SN(frmmodulo.qremitente.fieldbyname('CONTADOR_CRC').AsString);

CNPJ := SN(frmmodulo.qremitente.fieldbyname('CONTADOR_CNPJ').AsString);

CEP := SN(frmmodulo.qremitente.fieldbyname('CONTADOR_CEP').AsString);

ENDERECO := frmmodulo.qremitente.fieldbyname('CONTADOR_ENDERECO').AsString;

NUM := frmmodulo.qremitente.fieldbyname('CONTADOR_NUMERO').AsString;

COMPL := frmmodulo.qremitente.fieldbyname('CONTADOR_COMPLEMENTO').AsString;

BAIRRO := frmmodulo.qremitente.fieldbyname('CONTADOR_BAIRRO').AsString;

FONE := SN(frmmodulo.qremitente.fieldbyname('CONTADOR_FONE').AsString);

FAX := SN(frmmodulo.qremitente.fieldbyname('CONTADOR_FAX').AsString);

EMAIL := frmmodulo.qremitente.fieldbyname('CONTADOR_EMAIL').AsString;

COD_MUN := frmmodulo.qremitente.fieldbyname('CONTADOR_COD_MUNICIPIO').AsInteger;

end;

(...)

end;

Link para o comentário
Compartilhar em outros sites

Caro lampada! Aos poucos estou conseguindo gerar o meu sped, mas só uma dúvida que ficou... no Registro 0150, o componente só me tras um registro, ou seja, eu executo o SQL abaixo:

// Clientes

         with Registro0150New do

         begin

            periodo := ' DATA_ULTIMACOMPRA >= :xDatai and DATA_ULTIMACOMPRA <= :xDataf ';

            query.Close;

            query.sql.clear;

            query.sql.add('select * from c000007 where '+ periodo);

            query.Params[0].asdatetime := ed_data_ini.date;

            query.Params[1].asdatetime := ed_data_fim.date;

            query.Active := True;

            query.Open;

            if query.RecordCount > 0 then

              begin

                query.first;

                while not query.eof do

                begin

                  COD_PART := query.fieldbyname('codigo').asstring;

                  NOME     := query.fieldbyname('nome').asstring;

                  COD_PAIS := '001';

                  if Length (SN(query.fieldbyname('cpf').asstring)) = 14 then

                    begin

                      CNPJ     := SN(query.fieldbyname('cpf').asstring);

                      CPF      := '';

                    end

                  else

                  if Length (SN(query.fieldbyname('cpf').asstring)) = 11 then

                    begin

                      CNPJ     := '';

                      CPF      := SN(query.fieldbyname('cpf').asstring);

                    end;

                  IE       := query.fieldbyname('rg').asstring;

                  COD_MUN  := StrToInt(query.fieldbyname('cod_municipio_ibge').asstring);

                  SUFRAMA  := '';

                  ENDERECO := query.fieldbyname('endereco').asstring;

                  NUM      := query.fieldbyname('numero').asstring;

                  COMPL    := query.fieldbyname('complemento').asstring;

                  BAIRRO   := query.fieldbyname('bairro').asstring;

                  query.next;

                end;

              end;

         end;

Mas ele só me traz o 1º registro da tabela que está nesse SQL. Tem alguma configuração que seja feita no componente, pois estou usando como base o demo que vem na pasta do ACBr.

Grato,

Rodrigo Machado

Link para o comentário
Compartilhar em outros sites

A sua query deveria estar fora do "with Registro0150New do".

deveria ser :

while not query.eof do

begin

with Registro0150New do

begin

end;

end;

e está

with Registro0150New do

begin

while not query.eof do

begin

end;

end;

Entendeu?

Quantas reuniões foram mesmo esta semana? Reúna os amigos!

Link para o comentário
Compartilhar em outros sites

Olá a todos!

Assim como Rodrigo, eu também gostaria de saber se seria possível alguém disponibilizar um exemplo do sped Pis/Cofins com um banco de dados, parecido com o que Italo Jr fez com o CT-e, disponibilizando um txt contendo um exemplo completo (RotinaCompleta.txt).

Dese já fico muito grato!

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...

Olá a todos!

Assim como Rodrigo, eu também gostaria de saber se seria possível alguém disponibilizar um exemplo do sped Pis/Cofins com um banco de dados, parecido com o que Italo Jr fez com o CT-e, disponibilizando um txt contendo um exemplo completo (RotinaCompleta.txt).

Dese já fico muito grato!

Olhe nesse link e verá exemplos do arquivo preenchidos.

http://www1.receita.fazenda.gov.br/sped-fiscal-pis-cofins/exemplos-de-arquivos.htm

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

Pessoal, quanto ao exemplo do PIS/COFINS, ainda estamos trabalhando em testes e desenvolvimento do componente... o exemplo seria um proximo passo, no entanto, a forma de desenvolve-lo é identica ao do SPED Fiscal, então tendo em mão o layout do SPED PIS/COFINS e o exemplo do ACBr Fiscal você consegue facilmente desenvolver a integração com o SPED PIS/COFINS!

Link para o comentário
Compartilhar em outros sites

bom dia galera!

Estou meio que enrolado com o meu sped, só que ele é o icms/ipi.

No Bloco C, tem a parte do C190, que está me dando uma dorzinha de cabeça... Vou postar parte do meu código pra ver se vcs podem me ajudar a localizar o meu erro.

Segue:

              qrcupom_item.close;

              qrcupom_item.sql.clear;

              qrcupom_item.sql.add('select');

              qrcupom_item.sql.add('sum(base_calculo) as base_icms,');

              qrcupom_item.sql.add('sum(valor_icms) as valor_icms,');

              qrcupom_item.sql.add('sum(base_sub) as base_sub,');

              qrcupom_item.sql.add('sum(icms_sub) as icms_sub,');

              qrcupom_item.sql.add('sum(valor_ipi) as valor_ipi,');

              qrcupom_item.sql.add('sum(total) as valor_total,');

              qrcupom_item.sql.add('cst, cfop, icms');

              qrcupom_item.sql.add('from c000062');

              qrcupom_item.SQL.add('where codnota = '''+qrItens.fieldbyname('codigo').asstring+'''');

              qrcupom_item.sql.add('group by cfop');

              qrcupom_item.SQL.add('order by cfop');

              qrcupom_item.open;

              qrcupom_item.first;

              while not qrcupom_item.eof do

              begin

                with RegistroC190New do    //Inicio Adicionar os Impostos:

                begin

                  CST_ICMS    := qrcupom_item.fieldbyname('cst').asstring;

                  CFOP        := qrcupom_item.fieldbyname('cfop').asstring;

                  ALIQ_ICMS   := StrToFloat(qrcupom_item.fieldbyname('icms').asstring);

                  VL_OPR      := 0;

                  VL_BC_ICMS  := StrToFloat(qrcupom_item.fieldbyname('base_icms').asstring);

                  VL_ICMS     := StrToFloat(qrcupom_item.fieldbyname('valor_icms').asstring);

                  VL_BC_ICMS_ST := StrToFloat(qrcupom_item.fieldbyname('base_sub').asstring);

                  VL_ICMS_ST    := StrToFloat(qrcupom_item.fieldbyname('icms_sub').asstring);

                  VL_RED_BC     := 0;

                  VL_IPI        := StrToFloat(qrcupom_item.fieldbyname('valor_ipi').asstring);

                  COD_OBS       := '000';

                  qrcupom_item.next;

                end;

              end;

Isso eu faço logo depois do C170, mas pelo que vi, ele não está me filtrando corretamente... não sei se erro de estrutura do sql ou na forma de fazê-lo.

Se alguém puder me ajudar, fico grato.

Atcs,

Rodrigo Machado

[editado] "Lembre-se de usar a tag code ao postar um código" - EMBarbosa

Link para o comentário
Compartilhar em outros sites

qrcupom_item.close;

qrcupom_item.sql.clear;

qrcupom_item.sql.add('select');

qrcupom_item.sql.add('sum(base_calculo) as base_icms,');

qrcupom_item.sql.add('sum(valor_icms) as valor_icms,');

qrcupom_item.sql.add('sum(base_sub) as base_sub,');

qrcupom_item.sql.add('sum(icms_sub) as icms_sub,');

qrcupom_item.sql.add('sum(valor_ipi) as valor_ipi,');

qrcupom_item.sql.add('sum(total) as valor_total,');

qrcupom_item.sql.add('cst, cfop, icms');

qrcupom_item.sql.add('from c000062');

qrcupom_item.SQL.add('where codnota = '''+qrItens.fieldbyname('codigo').asstring+'''');

qrcupom_item.sql.add('group by cfop');

qrcupom_item.SQL.add('order by cfop');

qrcupom_item.open;

qrcupom_item.first;

while not qrcupom_item.eof do

begin

with RegistroC190New do //Inicio Adicionar os Impostos:

begin

CST_ICMS := qrcupom_item.fieldbyname('cst').asstring;

CFOP := qrcupom_item.fieldbyname('cfop').asstring;

ALIQ_ICMS := StrToFloat(qrcupom_item.fieldbyname('icms').asstring);

VL_OPR := 0;

VL_BC_ICMS := StrToFloat(qrcupom_item.fieldbyname('base_icms').asstring);

VL_ICMS := StrToFloat(qrcupom_item.fieldbyname('valor_icms').asstring);

VL_BC_ICMS_ST := StrToFloat(qrcupom_item.fieldbyname('base_sub').asstring);

VL_ICMS_ST := StrToFloat(qrcupom_item.fieldbyname('icms_sub').asstring);

VL_RED_BC := 0;

VL_IPI := StrToFloat(qrcupom_item.fieldbyname('valor_ipi').asstring);

COD_OBS := '000';

qrcupom_item.next;

end;

qrcupom_item.next;

end;

Rodrigo faça o teste do SQL, em uma ferramenta antes de jogar para seu código, assim poderá vê se a filtragem, e agrupamentos estão corretos.

Abraço

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Link para o comentário
Compartilhar em outros sites

ok Isaque, obrigado pela atenção... é que o meu conhecimento em SQL é fraquinho, sei apenas o básico mesmo, e estou tentando fazer o máximo pra deixar ele bem enxuto e simples, pois, dependo de vcs, poderiam até usar um exemplo com banco de dados nos fontes do projeto... acredito que ficaria bem mais simples para quem ainda não fez o sped. Pelo que eu vejo com algumas softhouses, eles estão exportando um txt que o sistema da contabilidade (sistema de terceiros) importa e monta o sped. Acho que isso se dá por falta de tempo dos programadores, visto que é muita coisa para se fazer hoje em dia.

Mas valeu mesmo, vou tentar identificar aqui onde está o meu erro.

Abs,

Rodrigo Machado

Link para o comentário
Compartilhar em outros sites

  • Consultores

Rodrigo,

O Isaque já deu as dicas de onde o código está errado. É só você observar o que ele marcou com a cor vermelha...

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4728 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.