Rotina para Digitação de Uma nota Fiscal com itens

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Ricardo Sales Ribeiro
Usuário Nível 3
Usuário Nível 3
Mensagens: 279
Registrado em: 13 Jul 2004 18:06
Localização: Fortaleza-Ceara

Rotina para Digitação de Uma nota Fiscal com itens

Mensagem por Ricardo Sales Ribeiro »

Olá Pessoal
Boa Noite!

Gostaria de uma ajuda, uma rotina onde eu digite num parte superior da tela, dados de uma nota fiscal, como datas, fornecedor, valores, base de calculos, uma nota fiscal basica, e mas em baixo em uma outra situação a digitação dos itens, de tal forma q alí ao digitar eu pudesse tb, corrigir, excluir um item errado, alterar e só fechar no final, inclusive checando o total com o valor digitado acima, tipo total de mercadorias.

Uma outra situação, seria com um comando, alternar estar nos itens e/ou nos dados acima.

Se alguem tiver uma rotina assim, gostaria de um exemplo, eu implementaria de acordo com a minha necessidade.

Agradeço desde já a colaboração dos amigos

Gde abraço
Ricardo Sales
Fortaleza-Ce
lodara53@yahoo.com.br
lodara53@hotmail.com
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Rotina para Digitação de Uma nota Fiscal com itens

Mensagem por billy1943 »

O que você pede é meio complicado para uma rotina abranger.
Como deve saber uma Nota fiscal simples ou eletrônica depende, previamente, de geração de muitos arquivos:
1 - Clientes ou Fornecedores
2 - Arquivo de produtos
3 - Códigos de tributação (ICMS, PIS, COFINS, IPI)
4 - Duplicatas a receber ou a pagar
5 - Dados da empresa que fatura
6 - Notas já processadas
7 - Ítens das notas processadas
Poderia acrescentar outros arquivos de menor participação.

Assim sugiro que já tenha essa pré-estrutura completa primeiro.

Caso já a tenha funcionando, fica mais fácil você trabalhar, no que você pretende que poderia se resumir à
geração de um arquivo temporário para os ítens faturados, onde você "andaria" por eles, alterando os códigos
de produtos, quantidades, preços, descontos, CFOPs, etc.

Quando o total dos ítens pelas quantidades estiverem conferindo com o total da Nota (aí reside um contrasenso pois se você já dispor dos valores significa que você já efetuou todos os cálculos, não é ?), você gravaria todos os dados
dela, com as duplicatas, etc.

Comece a montar essa tarefa a partir do ponto onde você já tem tudo funcionando e bem, pois faturamento envolve muitos
riscos (fiscais principalmente) e a emissão das Notas Fiscais é o cerne do sistema.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Avatar do usuário
Ricardo Sales Ribeiro
Usuário Nível 3
Usuário Nível 3
Mensagens: 279
Registrado em: 13 Jul 2004 18:06
Localização: Fortaleza-Ceara

Rotina para Digitação de Uma nota Fiscal com itens

Mensagem por Ricardo Sales Ribeiro »

Amigo Billy.
Boa Tarde


É exatamente o q vc descreveu, já tenho muita coisa pronta, o q eu preciso é justamente essa rotina q vc descreveu dos itens, digitação dos itens da nota, em arquivo temporario para depois salva-los. Não consigo criar uma rotina assim, tenho um cliente q me reclama q, qdo estar no 10. item por exemplo, e ele erra, aí tem q sair da rotina total e recomeçar a digitação, é esse o meu dilema, por isso descrevi, por partes, a digitação dos dados da notas e a digitação dos itens.
Internamente na rotina, as consolidações, tipo total tos itens bate com total da nota, isso eu sei fazer, só ta pegando essa rotina dos itens em arquivo temporario, com a possibilidade de retornar aos dados da nota, sem sair do programa de faturamento.

Em Delphi, isso é fichinha, eu já vi, mas eu gostaria de realizar em clipper, gostaria de sua ajuda ou de alguem q me pudesse fornecer uma rotina onde eu pudesse fazer esses procedimentos, eu implementaria, só quero um começo q dê certo. Aí me serviria para digitar as vendas como tb as entradas, conferindo-as.

Agradeço desde já.
Ricardo Sales
Fortaleza-Ce
lodara53@yahoo.com.br
lodara53@hotmail.com
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Rotina para Digitação de Uma nota Fiscal com itens

Mensagem por Clipper »

Prezado Ricardo

Uma maneira simples que uso para fazer o que você quer é assim :

1 - Inicio a nota com a digitação dos dados básicos (Cliente, Cfop, data, etc)
2 - Para essa nota nova crio um arquivo temporário que conterá os itens. Ex : IT001234.DBF
3 - Vou digitando os itens e incluindo nesse arquivo (Digitando e apresentando como um browser)
4 - A cada novo item faço o cálculo e apresento na tela
5 - Faço a finalização da nota e imprimo
6 - Após finalizar a nota transfiro os itens para o arquivo fixo de itens e excluo o arquivo temporário

Sendo assim mesmo que eu erre algum item posso facilmente corrigir apenas o item que errei, posso excluir um item e incluir novos itens se for o caso.
Posso a qualquer tempo reeditar os itens usando um browser onde tem todas a opções que preciso, incluir, alterar, excluir.
Posso parar a digitação da nota, sair e continuar a digitação depois, pois tudo estará guardado no arquivo temporário, e enquanto eu não finalizar a nota ele estará lá.

Espero que lhe sirva como exemplo.

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1297
Registrado em: 06 Jul 2004 00:44
Contato:

Rotina para Digitação de Uma nota Fiscal com itens

Mensagem por ANDRIL »

Estou tambem tentando desenvolver esta rotina. Só que aqui quero vincular a NOTA DE SAIDA com a VENDA, ou seja, o usuario faz a venda normalmente e depois na hora de emitir a nota digita o numero da venda, que já preenche os dados da nota, ficando assim menos detalhes a serem verificados.

Agora há saidas como REMESSA e etc, entao acho que neste caso, poderia tambem criar uma rotina para nao ser obrigatorio ter uma venda para que a nota seja gerada, outra questão seria as notas de entrada, que tambem tem que ser criadas.

Minha pergunta é, será que posso ter esta funcao de lancar nota AVULSA assim o usuario escolhe se é saida/entrada e preenche a nota normalmente e no final cadastro ela no controle de notas. O objetivo deste controle é geração dos arquivos da CAT85 para notas modelo 2 e CAT102 para modelo 1 e 1A, será que há algum problema? Apos estar gerando estes arquivos, vou partir para o SINTEGRA.

Abraços.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
Amparo
Usuário Nível 3
Usuário Nível 3
Mensagens: 342
Registrado em: 20 Ago 2010 10:38
Localização: caieiras / sao paulo

Rotina para Digitação de Uma nota Fiscal com itens

Mensagem por Amparo »

ola amigos,

Ricardo Sales

pelo que entendi seu cliente esta lançando uma nota fiscal de um fornecedor ou seja uma nota de compra que a empresa efetuou, entao pergunto aos colegas. Por que digitar nota por nota de entrada se voce pode importar a nota do arquivo XML para um arquivo temporario, depois basta o usuario alterar apenas o codigo do produto para o seu codigo interno, exemplo no arquivo XML o produto tipo CAFE PELE tem o seu codigo assim 896534 (codigo do fornecedor ) e no seu sistema o codigo é 10450910 ou apenas CAFE PELE, isso diminuiria a digitação e o erro certo? apos alterar todos os codigo o usuario pede para checar a nota digita, quando ele fizer isto o sistema procura o cnpj do fornecedor pega o codigo dele e procura no cadastro de pedido de compra os pedidos abertos deste fornecedor ai voce seleciona o pedido que esta recebendo e o sistema se encarrega de fazer a checagem dos item recebido com os itens no pedido, tipo quantidade que esta sendo recebida, se o produto foi realmente solicitado, caso esteje tudo certo fecha a nota de entrada, caso nao da alerta para efetuar a correção.

talvez o codigo do produto possa ser amarado pelo codigo NCM uma vez que este codigo é padrao e a nivel mercosul, se isso for possivel nao precisa nem de alterar codigo por codigo basta procurar no cadastro de produto o codigo NCM correspodente ao codigo do arquivo XML.

nao sei dizer mais acredito que antes de fazer todo este processo seria possivel consultar primeiro se a nota recebida (DANFE) é legal ou nao, quando for receber basta passar a nota em um leitor de codigo de barra ou digitar a chave de acesso e o sistema procura na receita se esta autorizada ou nao ai começa a fazer o processo acima.


isto é uma ideia, e acredito que alguns colegas ja começaram a colocar isso em pratica, o que os colegas acham?
abraços
Avatar do usuário
Ricardo Sales Ribeiro
Usuário Nível 3
Usuário Nível 3
Mensagens: 279
Registrado em: 13 Jul 2004 18:06
Localização: Fortaleza-Ceara

Rotina para Digitação de Uma nota Fiscal com itens

Mensagem por Ricardo Sales Ribeiro »

Olá amigos
Boa tarde

Eu a ideia valida, e vou trabalhar nisso tb, o q eu preciso agora é um exemplo bem pratico do uso do Browser, já tentei varias vezes e não consigo finalizar a rotina.
Se for possivel me fornecer uma rotina, onde tenha como Gerar, incluir, excluir, modificar registros, e gravar em arquivo temporario, eu adaptarei as minhas necessidades.
Outra ajuda é alguma coisa sobre eu lê o xml e salva-lo num dbf, isso ajudadria bastante sim, na entrada de mercadorias.

Desde já agradeço a colaboração
Ricardo Sales
Fortaleza-Ce
lodara53@yahoo.com.br
lodara53@hotmail.com
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Rotina para Digitação de Uma nota Fiscal com itens

Mensagem por billy1943 »

O que você relata da dificuldade de "andar" entre os ítens, voltando ao primeiro, ou seja deslocando-se entre os inúmeros ítens que
possam compor uma NF, pode ser solucionado também com o uso de matrizes.
Eu citei arquivo temporário, porque é a forma que mais uso.
Aí, quando estiver tudo OK com os ítens entrados, salvamos em arquivo próprio.

Segue um fonte parcial, mas que estudando-o você o adaptará às suas necessidades.
O principal dele é funcionam as teclas (seta para cima) e (seta para baixo) no deslocamento.

Sucesso.

Código: Selecionar todos

PROCEDURE entra_prod(xmens)
local telin   := savescreen()
local getlist := {}

if pcount() == 0
   xmens := "S"
endif

private lin, n := 1, j
private wsomatot := xitens := 0
private acodfab[25],adescr[25],aquant[25],apreco[25],aprecotot[25]
readexit(.t.)
@11,20 say "Vendidos:       unidades no valor de R$ "

do while .t.

   afill(acodfab,space(13))
   afill(adescr,space(30))
   afill(aquant,0)
   afill(apreco,0)
   afill(aprecotot,0)

   @12,0 clear to 23,79    
   @12,0 to 23,79 double
   @14,1 to 14,78
   @13,1 say "C¢digo pe‡a   Descri‡Æo                          Quant.     Pre‡o      Total"
   lin := 15
   select prod
   set order to 1

   do while .t.

      @ lin,1 get acodfab[n] pict "@!" 
      read

      if lastkey() == 27

         resposta(22,20,"Confirma sa¡da ? <SN>","SN")

         if f_resp == "S" 
            restscreen(,,,,telin)
            readexit(.f.)
            exit
         endif

      endif

      if lastkey() == 24 && seta para baixo

         n ++

         if n > 25
            msg_tecla("Limite m ximo 25 produtos")
            n --
            loop
         endif

         if adescr[n-1] == space(30)
            n --
            loop
         endif

         lin ++

         if lin > 22
            scroll(15,1,22,78,1)
            lin := 22
            exibe_prod(0)
            loop 
         endif

         @ lin,15 get adescr[n] pict "@!"
         @ lin,49 get aquant[n] pict "@E ###,###"
         @ lin,57 get apreco[n] pict "@E ##,###.##"
         @ lin,67 get aprecotot[n] pict "@E ###,###.##"
         clear gets
         loop

      endif

      if lastkey() == 05 && seta para cima

         n --

         if n < 1 
            msg_tecla("J  chegou … linha 1")
            n ++
            loop
         endif

         lin --

         if lin < 15
            scroll(15,1,22,78,-1)
            lin := 15
         endif

         exibe_prod(0)
         loop

      endif

      acodfab[n] := alltrim(acodfab[n])
      mcodlen    := len(acodfab[n])
      acodfab[n] := acodfab[n] + space(13 - mcodlen)
      @ lin,1 get acodfab[n] pict "@! XXXXXXXXXXXXXX"
      clear gets

      if substr(acodfab[n],1,13) == space(13) && val(acodfab[n]) == 0
         est4201a()
         if codpesq <> space(13)
            acodfab[n] := codpesq
            @ lin,1 say space(13)
            @ lin,1 get acodfab[n] pict "@! XXXXXXXXXXXXXX"
            clear gets
         else
            @ 24,0 say "NÆo existe produto com este n£mero !"
            acodfab[n] := space(13)
            loop
         endif
      endif

      set order to 1
      seek acodfab[n]
      if eof()
         msg_tecla("Produto nÆo cadastrado - <ENTER> continua")
         acodfab[n] := space(13)
         loop
      endif
      adescr[n]    := prod->nome
      apreco[n]    := prod->pr_vend_a
      aprecotot[n] := apreco[n] * aquant[n]
      exibe_prod(1)

      if n < 25

         n ++
         lin ++

         if lin > 22
            scroll(15,1,22,78,1)
            lin := 22 
         endif

      endif

      wsomatot := xitens := 0

      for j := 1 to 25
          xitens   += aquant[j]
          wsomatot += (aquant[j] * apreco[j])
      next

      @ 11,30 say xitens pict "999" color "gr+/b"
      @ 11,60 say wsomatot pict "@E ###,###.##" color "gr+/b"

   enddo

   return(wsomatot)

enddo

PROCEDURE exibe_prod(modo)
//local getlist := {}
private getlist := {}
@ lin,15 say adescr[n] pict "@!" color "bg+/b"
@ lin,49 get aquant[n] pict "@E ###,###" valid verif_quant(aquant[n])
@ lin,57 get apreco[n] pict "@E ##,###.##" valid apreco[n] <> 0

if modo == 1
   read
   if updated()
      aprecotot[n] := 0
   endif
else
   clear gets
endif

@ lin,67 get aprecotot[n] pict "@E ###,###.##" valid ver_tot(aprecotot[n]) 
if modo == 1
   read
else
   clear gets
endif

return

FUNCTION verif_quant(quant)
local getlist := {}

if quant == 0
   msg_tecla("Este ¡tem nÆo ser  gravado no pedido !!")
endif

return .t.
   
FUNCTION ver_tot(precotot)
local getlist := {}
aprecotot[n] := apreco[n] * aquant[n]

if precotot == 0
   @ lin,67 get aprecotot[n] pict "@E ###,###.##" 
   clear gets
   return .t.
else
   apreco[n]    := precotot / aquant[n]
   aprecotot[n] := apreco[n] * aquant[n]
   @ lin,67 get aprecotot[n] pict "@E ###,###.##" 
   clear gets
endif
return .t.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Rotina para Digitação de Uma nota Fiscal com itens

Mensagem por rochinha »

Amiguinhos,

Ricardo Sales Ribeiro

Em 15 de Fevereiro de 2007 voce nos questionou sobre uma duvida de igual teor. Estou certo ou não?

Tela de vendas com bowse e itens da venda tb aparecendo

Sua solução está ou sempre esteve lá, enterrada, como numa verdadeira tumba de uma piramide frequentada pelos faraós(forenses em Rochinês) deste lugar.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
Ricardo Sales Ribeiro
Usuário Nível 3
Usuário Nível 3
Mensagens: 279
Registrado em: 13 Jul 2004 18:06
Localização: Fortaleza-Ceara

Rotina para Digitação de Uma nota Fiscal com itens

Mensagem por Ricardo Sales Ribeiro »

Olá Rochinha
Bom Dia!

Confirmo sim, realmente fiz esse questionamento, perdi o fio da meada na epoca e não tinha conseguido, e não lembrava q já tinha questionado ao forum, obrigado pela lembrança, vou juntar agora os exemplos e montar sim o q estou precisando.

Obrigado
Ricardo Sales
Fortaleza-Ce
lodara53@yahoo.com.br
lodara53@hotmail.com
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Rotina para Digitação de Uma nota Fiscal com itens

Mensagem por rochinha »

Amiguinho,

Sabe cumé né, Chuck Norris Nunca Esquece!
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Stanis Luksys
Colaborador
Colaborador
Mensagens: 1329
Registrado em: 18 Jun 2005 03:04
Localização: São Paulo
Contato:

Rotina para Digitação de Uma nota Fiscal com itens

Mensagem por Stanis Luksys »

Opa,

Da forma como foi mencionado, vai precisar de duas funcoes com getlist local.

Um getlist para o cabecalho e outro para os itens. Você pode alternar entre eles com a tecla [tab] por exemplo. Fica legal assim.

Abraços.
Stanis Luksys
sites.google.com/hblibs

Apoiar e se utilizar de projetos opensource não é uma questão de boicote, mas sim de liberdade.
Utilize, aprimore e distribua.
Avatar do usuário
Ricardo Sales Ribeiro
Usuário Nível 3
Usuário Nível 3
Mensagens: 279
Registrado em: 13 Jul 2004 18:06
Localização: Fortaleza-Ceara

Rotina para Digitação de Uma nota Fiscal com itens

Mensagem por Ricardo Sales Ribeiro »

Olá amigo tudo bem.

Me agradou sim essa sua ideia, gostaria de, se possivel um pequena rotina de como funciona essa biblioteca ou função, eu sou sincero nunca trabalhei com essa ideia.

Se possivel, me manda uma rotina que eu adapto ela as minhas necessidades, por favor.

Desde já agradeço a sua atenção.


Atenciosamente
Ricardo Sales
Fortaleza-Ce
lodara53@yahoo.com.br
lodara53@hotmail.com
Responder