Jump to content

dev botao

Exemplo Sped com Banco de dados


rodrigo_sanmac
  • Este tópico foi criado há 4947 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

  • 2 weeks later...

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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.

The popup will be closed in 10 seconds...