Clipper On Line • Ver Tópico - Meu modo de trabalho

Meu modo de trabalho

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Meu modo de trabalho

Mensagempor Itamar M. Lins Jr. » 17 Jun 2020 20:28

Ola!
a geração de SPED Fiscal/Contribuições

Vc tem essa rotina solta ?
Não estava querendo mexer nisso, mas parece que terei que estudar essa parte.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 17 Jun 2020 21:18

Antes se chamava SPED pis/cofins, e parece que mudou o nome pra contribuições.
Nunca mais olhei pra atualizar, apenas tento manter o que tinha feito.
Lembrando que meus clientes não trabalham com cupom fiscal, por isso muitos blocos estão apenas comentados.

Aqui dá uma boa idéia do que tem.

/*
PFISCSPED - SPED PIS/COFINS
2011.09 - José Quintas
*/

#include "josequintas.ch"
#include "inkey.ch"
#define SPED_SEPARADOR "|"

MEMVAR aBlocoList, aBlocoTotList
MEMVAR mDatIni, mDatFim, mTipoSped, mPerfil, mLayOut, aPisList, aCofinsList, aPisBasList, aCofinsBasList
MEMVAR mPisVal, mCofVal

PROCEDURE pFiscSped

   LOCAL mFileSped, GetList := {}
   PRIVATE mDatIni, mDatFim, mTipoSped, mPerfil, mLayOut, aBlocoList, aBlocoTotList, aPisList, aCofinsList, aPisBasList, aCofinsBasList

   IF ! AbreArquivos( "jppedido", "jpcadastro", "jpitem", "jpcidade", "jpempresa", "jptabel" )
      RETURN
   ENDIF
   mDatIni   := Date() - Day( Date() )
   mDatIni   := mDatIni - Day( mDatIni ) + 1
   mDatFim   := Date() - Day( Date() )
   mTipoSped := "P"
   mPerfil   := "A"

   @ 5, 5 SAY "Data Inicial......:" GET mDatIni
   @ 6, 5 SAY "Data Final........:" GET mDatFim
   @ 7, 5 SAY "Sped Fiscal ou Pis:" GET mTipoSped PICTURE "!A" VALID mTipoSped $ "FP"
   @ 8, 5 SAY "Perfil............:" GET mPerfil PICTURE "!A" VALID mPerfil $ "ABC"
   @ 10, 5 SAY "Temporariamente retirado bloco C110 (Pis/Cof) ref informações complementares"
   Mensagem( "Digite campos, ESC Sai" )
   READ
   Mensagem()

   IF LastKey() == K_ESC
      RETURN
   ENDIF

   IF ! MsgYesNo( "Confirma geração" )
      RETURN
   ENDIF

   SayScroll( "Gerando SPED" )

   IF mTipoSped == "P"
      mLayout := "003" // 2.01A
      mFileSped := "EXPORTA\SPPC" + Substr( Dtos( mDatFim ), 3, 4 ) + ".TXT"
   ELSE
      mLayOut := "006"
      mFileSped := "EXPORTA\SPFI" + Substr( Dtos( mDatFim ), 3, 4 ) + ".TXT"
   ENDIF

   SET ALTERNATE TO ( mFileSped )
   SET ALTERNATE ON
   SET CONSOLE OFF

   aBlocoList := {}
   aBlocoTotList := {} // usado nos totalizadores
   aPisList := {}
   aPisBasList := {}
   aCofinsList := {}
   aCofinsBasList := {} // totaliza C170 para M400 e M800

   // --------------------- Bloco0 - Abertura, Identificacao e Referencias

   Bloco0000()   // Abertura Bloco 0
   Bloco0001()   // Abertura Bloco 0
   IF mTipoSped == "F"
      Bloco0005()
      Bloco0015()
   ENDIF
   Bloco0100()   // Contabilista
   IF mTipoSped == "P"
      Bloco0110()   // Regime de Apuracao
      Bloco0111()   // Tabela de Receita Bruta Mensal
      Bloco0120()   // Identif. Periodos dispensados da escrituracao digital
      Bloco0140()   // Tabela de Cadastro Estabelecimento
   ENDIF
   Bloco0150()   // Tabela de Cadastro de Participantes
   IF mTipoSped == "F"
      Bloco0175()
   ENDIF
   Bloco0190()   // Tabela de Unidades de Medida
   Bloco0200()   // Tabela de Produtos e Servicos
   // Bloco0200-Bloco0205() // Alteração do produto/serviço
   // Bloco0200-Bloco0206() // Tabela ANP
   IF mTipoSped == "P"
      Bloco0208()   // Codigo de Grupos por Marca (Bebidas Frias)
   ENDIF
   IF mTipoSped == "F"
      Bloco0220() // Fatores de Conversao
      Bloco0300() // Bens ou Componentes do Ativo
   ENDIF
   Bloco0400()   // Tabela de Natureza de Operacao
   Bloco0450()   // Tabela de Informacao Complementar
   IF mTipoSped == "F"
      Bloco0460()
   ENDIF
   Bloco0500()   // Plano de Contas Contabil
   Bloco0600()   // Centros de Custo
   Bloco0990()   // Encerramento

   IF mTipoSped == "P"

      // --------------------- BlocoA - Documentos Fiscais Servicos ISS

      BlocoA001()  // Abertura Bloco A
      // BlocoA010() // Identificacao do Estabelecimento
      // BlocoA100() // Documento NF Servico
      // BlocoA100-BlocoA110() // Complemento - Informacao Complementar
      // BlocoA100-BlocoA111() // Processo Referenciado
      // BlocoA100-BlocoA120() // Complemento - Importacao
      // BlocoA100-BlocoA170() // Complemento - Itens do Documento
      BlocoA990() // Encerramento Bloco A
   ENDIF

   // -------------------- BlocoC - Documentos Fiscais I Mercadorias ICMS/IPI

   BlocoC001() // Abertura
   IF mTipoSped == "P"
      BlocoC010() // Identificacao do Estabelecimento
   ENDIF
   BlocoC100() // Nota Fiscal
   // BlocoC100-BlocoC110( xxLeis ) // Complemento
   IF mTipoSped == "F"
      // BlocoC100-BlocoC105()
      // BlocoC100-BlocoC110( xxLeis )
   ENDIF
   // BlocoC100-BlocoC111() // Processo Referenciado
   // BlocoC100-BlocoC120() // Complemento Importacao
   // BlocoC100-BlocoC170( nIdPedido ) // Itens do Documento
   // BlocoC180() // Consolidacao das Notas Emitidas
   // BlocoC181() // Detalhamento da Consolidacao Pis
   // BlocoC185() // Detalhamento da Consolidacao Cofins
   // BlocoC188() // Processo Referenciado
   // BlocoC190() // Consolidacao de NFE Aquisicao e Devolucao Compras/Vendas
   // BlocoC191() // Detalhamento 190 Pis
   // BlocoC195() // Detalhamento 190 Cofins
   // BlocoC198() // Processo Referenciado
   // BlocoC199() // Complemento Importacao
   // BlocoC380() // Consolidacao NF Consumidor Emitidos
   // BlocoC381() // Detalhamento 380 Pis
   // BlocoC385() // Detalhamento 380 Cofins
   // BlocoC395() // NF Consumidor Aquisicoes
   // BlocoC396() // Produtos da NF Consumidor 395
   // BlocoC400() // Equipamento ECF
   // BlocoC405() // Reducao Z
   // BlocoC481() // Resumo Diario ECF Pis
   // BlocoC485() // Resumo Diario ECF Cofins
   // BlocoC489() // Processo Referenciado
   // BlocoC490() // Consolidacao ECF
   // BlocoC491() // Detalhamento 0490 Pis
   // BlocoC495() // Detalhamento 0490 Cofins
   // BlocoC499() // Processo Referenciado ECF
   // BlocoC500() // Luz, Agua e Gas
   // BlocoC501() // Complemento 500 Pis
   // BlocoC505() // Complemento 500 Cofins
   // BlocoC600() // Consolidacao Luz,Agua,Gas
   // BlocoC601() // Complemento 0600 Pis
   // BlocoC605() // Complemento 0600 Cofins
   // BlocoC609() // Processo Referenciado 0600
   // BlocoC800() // Cupom Fiscal Eletronico
   // BlocoC810() // Detalhamento C800 Pis
   // BlocoC820() // Detalhamento C800 Cofins
   // BlocoC830() // Processo Referenciado C800
   // BlocoC860() // Identificacao Equipamento SAT-CFe
   // BlocoC870() // Detalhamento Cupom Pis
   // BlocoC880() // Detalhamento Cupom Cofins
   BlocoC990() // Encerramento Bloco C

   // --------------------- BlocoD - Documentos Fiscais II Servicos ICMS

   BlocoD001() // Abertura
   // BlocoD010() // Identificacao do Estabelecimento
   // BlocoD100() // Aquisicao Serv Transp
   // BlocoD101() // Complemento Pis
   // BlocoD105() // Complemento Cofins
   // BlocoD111() // Processo Referenciado
   // BlocoD200() // Resumo Diario Serv Transp
   // BlocoD201() // Total Diario Pis
   // BlocoD205() // Total Diario Cofins
   // BlocoD209() // Processo Referenciado
   // BlocoD300() // Resumo Diario
   // BlocoD309() // Processo Referenciado
   // BlocoD350() // Resumo Diario Cupom ECF
   // BlocoD359() // Processo Referenciado
   // BlocoD500() // NF Comunicacao/Telecomunicacao
   // BlocoD501() // Complemento Pis
   // BlocoD509() // Complemento Cofins
   // BlocoD600() // Processo Referenciado
   // BlocoD601() // Consolidacao
   // BlocoD605() // Complemento Consolidacao
   // BlocoD609() // Processo Referenciado
   BlocoD990() // Encerramento

   IF mTipoSped == "F"
      // --------------------- BLOCOE -
      BlocoE001() // Abertura
      BlocoE100() // Movimento
      BlocoE110() // Apuracao ICMS
      BlocoE990() // Encerramento
   ENDIF

   // --------------------- BlocoF - Demais Documentos e Operacoes

   IF mTipoSped == "P"
      BlocoF001() // Abertura
      // BlocoF010() // Identificacao do Estabelecimento
      // BlocoF100() // Demais Doc
      // BlocoF111() // Processo Referenciado
      // BlocoF120() // Bens Ativo Depreciacao
      // BlocoF129() // Processo Referenciado
      // BLocoF130() // Bens Ativo Aquisicao
      // BlocoF139() // Processo Referenciado
      // BlocoF150() // Credito Presumido sobre estoque
      // BlocoF200() // Ativ.Imobiliaria Venda
      // BlocoF205() // Ativ.Imobiliaria Custo
      // BlocoF210() // Ativ.Imobiliaria Custo
      // BlocoF211() // Processo Referenciado
      // BlocoF500() // Consolidacao Regime de Caixa
      // BlocoF509() // Processo Referenciado
      // BlocoF510() // Consolidacao Regime de Caixa por unidade
      // BlocoF519() // Processo Referenciado
      // BlocoF525() // Composicao Receita Regime de Caixa
      // BlocoF550() // Consolidacao Regime de Competencia
      // BlocoF559() // Processo Referenciado
      // BlocoF560() // Consolidacao Regime Competencia por Unidade
      // BlocoF569() // Processo Referenciado
      // BlocoF600() // Contribuicao Retida na fonte
      // BlocoF700() // Deducoes Diversas
      // BlocoF800() // Creditos Incorporacao,Fusao e Cisao
      BlocoF990() // Encerramento
   ENDIF

   IF mTipoSped == "F"

      // --------------------BlocoG - Controle de Credito de ICMS do Ativo Permanente - CIAP
      BlocoG001()
      BlocoG990()

      // --------------------BlocoH - Inventario Fisico
      BlocoH001()
      BlocoH990()

   ENDIF

   // -------------------- BlocoI

   IF mTipoSped == "P"

      // -------------------- BlocoM - Apuracao da Contribuicao e Credito PIS e COFINS

      BlocoM001() // Abertura
      // BlocoM100() // Credito Pis Periodo
      // BlocoM105() // Detalhamento Pis
      // BlocoM110() // Ajustes de Credito
      BlocoM200() // Consolidacao Pis
      // BlocoM210()// Detalhamento Pis
      // BlocoM211() // Cooperativas Pis
      // BlocoM220() // Ajustes Pis
      // BlocoM230() // Inf. Adicionais Pis
      // BlocoM300() // Pis Anteriores
      // BlocoM350() // Pis Folha de Salarios
      BlocoM400() // Receitas Isentas
      BlocoM410() // Detalhamento Isentas
      // BlocoM500() // Credito Cofins
      // BlocoM505() // Consolidacao Cofins
      // BlocoM510() // Ajustes Cofins
      BlocoM600() // Consolidacao Cofins
      // BlocoM610() // Detalhamento Cofins
      // BlocoM611() // Cooperativas Cofins
      // BlocoM620() // Ajustes Cofins
      // BlocoM630() // Inf.Adicionais Cofins
      // BlocoM700() // Cofins Anteriores
      BlocoM800() // Isentas Cofins
      BlocoM810() // Detalhamento Isentas
      BlocoM990() // Encerramento

   ENDIF

   // -------------------- BlocoP

   // ------------------- Bloco1 - Complemento da Escrituracao
   Bloco1001()
   // Bloco1010()
   // Bloco1020()
   // Bloco1100()
   // Bloco1101()
   // Bloco1102()
   // Bloco1200()
   // Bloco1210()
   // Bloco1220()
   // Bloco1300()
   // Bloco1500()
   // Bloco1501()
   // Bloco1502()
   // Bloco1600()
   // Bloco1610()
   // Bloco1620()
   // Bloco1700()
   // Bloco1800()
   // Bloco1809()
   // Bloco1900()
   Bloco1990()

   // --------------------- Bloco9 - Encerramento

   Bloco9001() // Abertura
   Bloco9900() // Totalizacao dos blocos
   Bloco9990() // Encerramento bloco
   Bloco9999() // Encerramento Geral

   SET CONSOLE ON
   SET ALTERNATE OFF
   SET ALTERNATE TO
   fDelEof( mFileSped )

   MsgExclamation( "Fim da Geracao" )

   RETURN
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 17 Jun 2020 22:39

jppedido.png


De 195 linhas, baixou pra 133.

Só lembrando:
- primeiro é eliminar a necessidade de leitura do JPPEDIDO.DBF, parte desses vão continuar existindo nesta etapa
- só depois, é eliminar a gravação no DBF, o que significa apagar tudo que sobrar.

Sem pressa, apesar de muito empolgado em terminar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 18 Jun 2020 18:18

jppedido.png


Tá quase, 62 linhas - provavelmente metade disso.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 19 Jun 2020 11:55

jppedido.png


Acho que acabou.
Parece que só sobraram gravação dupla e conversão.

Vou ter que atualizar no cliente agora.

Situação atual: está atualizando JPPEDIDO.DBF, e não usa pra mais nada.

Próximas etapas:

1. Eliminar gravações em JPPEDIDO.dbf, não precisa mais salvar

2. Eliminar SELECT, SEEK, etc. em JPPEDIDO, já que não salva, e nem usa

3. Eliminar abertura de JPPEDIDO, reindexação,etc.

4. Apagar o DBF

Seguindo essa ordem, os fontes estão sempre "usáveis".
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 19 Jun 2020 12:51

Sempre tem mais ajustes.

   @ Row()+1, 1 SAY "Pedido...........:" GET nIdPedido PICTURE "999999" VALID nIdPedido == 0 .OR. Encontra( StrZero( nIdPedido, 6 ), "jppedido", "pedido" )


Nesse não tem o JPPEDIDO->, mas faz uso dele

Mas a alteração é simples, parece até mais "legível".

   @ Row()+1, 1 SAY "Pedido...........:" GET nIdPedido PICTURE "999999" VALID nIdPedido == 0 .OR. ADORecCount( "JPPEDIDO", "IDPEDIDO = " + NumberSQL( nIdPedido ) ) != 0


ADORecCount() é uma função que conta registros. é passar a tabela e o "WHERE".
Equivale ao anterior, mas sem precisar abrir arquivo nem índice, basta pedir ao SQL.

Então.... no meu modo de trabalho, tranquilo alterar isso agora.
Mas dependendo do fonte de cada pessoa, poderia ser problema.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 19 Jun 2020 13:01

Nesta penúltima etapa é pesquisar JPPEDIDO->, SELECT JPPEDIDO, e "JPPEDIDO", todos os possíveis usos.

jppedido.png


Tá sobrando só em AbreArquivos(), e em comando ADO.

Porque já não apagar o uso em AbreArquivos()?
Ter o arquivo aberto não é problema, o problema é precisar dele e ele NÃO estar aberto.
Então essa vai ser a parte final.

É ter o aplicativo sempre funcionando... não importa se terminei ou não, ou se vou trocar no cliente ou não.
A qualquer momento, se precisar instalar o aplicativo por algum erro... vou poder instalar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 19 Jun 2020 13:24

30/12/2019  21:50               163 cthisto.dbf
30/12/2019  21:50               259 jpbaauto.dbf
30/12/2019  21:52               291 jprefcta.dbf
30/12/2019  21:50               355 ctlotes.dbf
30/12/2019  21:50               387 ctlanca.dbf
30/12/2019  21:50               483 jpcontabil.dbf
03/03/2020  02:44             2.799 jpfiscal.DBF
30/12/2019  21:50             5.335 jpempresa.dbf
18/06/2020  14:10             5.923 jpnumero.dbf
30/12/2019  21:50             6.691 ctplano.dbf
30/12/2019  21:52             7.416 jpuf.dbf
30/12/2019  21:50             7.839 jpbagrup.dbf
18/06/2020  14:10            10.278 jpconfi.dbf
30/12/2019  21:52           118.525 jptabel.dbf
26/05/2020  10:07           273.170 jpsenha.dbf
30/12/2019  21:50           301.112 jpdolar.dbf
08/06/2020  17:11           478.728 jppreco.DBF
03/03/2020  02:33         1.254.539 jpcidade.dbf
29/05/2020  11:56         1.254.826 jppretab.DBF
18/06/2020  14:12         1.373.222 jpitem.DBF
30/03/2020  06:42         2.264.308 jpmdfcab.DBF
30/03/2020  06:41         5.929.799 jpmdfdet.DBF
16/06/2020  12:09        11.004.331 jpcadastro.DBF
08/06/2020  16:59        16.290.814 jpbancario.dbf
18/06/2020  14:12       163.474.850 JPPEDIDO.DBF
              25 arquivo(s)    204.066.443 bytes


Muito trabalho ainda pela frente, apesar de estar eliminando o maior que restava, pra maioria dos clientes.

Dentre esses, o CONTABIL é o que mais vai dar trabalho, porque representa uma aplicação inteira, muitos fontes, apesar de mais simples que todo resto.
Ou talvez o fiscal.... Se eu deixar só o SPED e apagar tudo que é relatório, vai simplificar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 21 Jun 2020 05:46

falta.png


Bela mudança.
Apesar de tudo, NÃO faz sentido precisar do cadastro de clientes e de produtos em DBF.
Mas.... aí também entra uma parte que comentei: o FISCAL, contendo muita coisa relativamente fora de uso, ainda precisa deles.

Pensando bem... talvez compense criar temporários locais, só pra manter alguns funcionando até decidir o que fazer....
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 27 Jun 2020 11:11

Pra completar o cerco sobre nota fiscal/estoque/financeiro/notas/etc. falta eliminar produtos e cadastros
Não parece, mas esses menores podem dar mais trabalho do que os grandes.

cadastros.png


produtos.png


Vou pesquisando aonde falta, e escolhendo aonde mexer primeiro.
Fazer o que....
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 30 Jun 2020 15:10

Situação anterior: linhas com jpcadastro-> 230 e linhas com jpitem-> 191
Situação de hoje: linhas com jpcadastro-> 166 e linhas com jpitem -> 172

Não estou seguindo uma ordem específica, nem me limitando a esses dois DBFs.
Apenas dou uma olhada aonde tem, e se vou querer mexer em algum fonte.
Hoje, por exemplo, alterei o livro fiscal de entradas/saídas totalmente pra MySQL, eliminando dele o uso do jpcadastro.dbf, jpfiscal.dbf e algum outro.
Apesar do livro fiscal estar praticamente fora de uso, decidi manter.

E assim vai indo, um pouquinho por vez....
Acho que até o final do ano acaba tudo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 03 Jul 2020 15:12

Uma alteração interessante de agora:

   WITH OBJECT cnSQL
      :ExecuteCmd( "DELETE FROM JPNOTFIS WHERE NFFILIAL = " + NumberSQL( nIdFilial ) + " AND NFNOTFIS = " + NumberSQL( nNumNotFis ) )
      :cSQL := "SELECT JPPEDIDO.*" + ;
         " FROM JPPEDIDO" + ;
         " WHERE IDPEDIDO = " + NumberSQL( nIdPedido )
      :Execute()
      ...
      IF ! "SEMFIN" $ ReacaoJPTRANSA( :Number( "PDTRANSA" ) )
         FOR nCont := 1 TO Len( oParcelas )
            :QueryCreate()
...
            :QueryAdd( "FIPORTADOR", StrZero( nIdPortador, 6 ) )
            Encontra( StrZero( :Number( "PDCADASTRO" ), 6 ), "jpcadastro", "numlan" ) // Posiciona cliente
            :QueryAdd( "FIVENDEDOR", StrZero( iif( :Number( "PDVENDEDOR" ) == 0, Val( jpcadastro->cdVendedor ), :Number( "PDVENDEDOR" ) ), 6 ) )
            :QueryExecuteInsert( "JPFINAN" )
         NEXT
      ENDIF
      :CloseRecordset()
   ENDWITH


O detalhe é no final: pode gravar o vendedor do cliente, mas depende do dbf aberto e posicionado

Solução simples:
Se no MySQL está tudo disponível... e está usando um comando SQL.... só pegar pelo comando SQL.
      :cSQL := "SELECT JPPEDIDO.*, JPCADASTRO.CDVENDEDOR" + ;
         " FROM JPPEDIDO" + ;
         " LEFT JOIN JPCADASTRO ON JPCADASTRO.IDCADASTRO = JPPEDIDO.PDCADASTRO" + ;
         " WHERE IDPEDIDO = " + NumberSQL( nIdPedido )
...
            :QueryAdd( "FIVENDEDOR", StrZero( iif( :Number( "PDVENDEDOR" ) == 0, :Number( "CDVENDEDOR" ), :Number( "PDVENDEDOR" ) ), 6 ) )
            :QueryExecuteInsert( "JPFINAN" )


Pronto, não precisa mais do DBF pra isso.
Quando alterei antes não percebi isso, mas agora está resolvido.
Conforme vou alterando, as coisas vão ficando mais "visíveis".
E assim vou eliminando a leitura de jpcadastro.dbf
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 03 Jul 2020 15:49

Mas nem todas são simples assim, cheguei numa geração de arquivo Sintegra.
Este está quase totalmente em DBF.
Estou eliminando só cadastro, mas.... posso eliminar TODOS os DBFs deste fonte de uma vez.

É nessas horas que tenho 3 opções:

- deixar pra depois, afinal ninguém mais usa isso
- alterar só o uso do cadastro pra MySQL
- alterar tudo de uma vez pra MySQL
- deixar pra decidir depois, e ver as outras alterações primeiro

Mas é um bom exemplo do que comento sempre: tudo depende dos fontes e de nós
Por mais que se crie um roteiro de trabalho, vamos alterando o roteiro conforme o que vamos encontrando pela frente nos fontes.
E também conforme vamos nos sentindo confortáveis em mexer.

No começo da minha migração, eu alteraria só a parte de cadastro, que é o foco atual, mas agora, tô mais pra alterar o fonte inteiro de uma vez.
Todos os arquivos envolvidos estão em gravação dupla DBF+MySQL, então isso é possível.
Só tentar confirmar primeiro, se realmente é o que parece...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Meu modo de trabalho

Mensagempor Itamar M. Lins Jr. » 03 Jul 2020 17:33

Ola!
deixar pra depois, afinal ninguém mais usa isso

Eu também pensei só que é obrigatório ainda!
Tem até uma postagem lá no forum de Legislação...

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Meu modo de trabalho

Mensagempor JoséQuintas » 03 Jul 2020 18:35

Vixe...
Ainda bem que optei por deixar, e já está totalmente em MySQL !!!!!
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Anterior Próximo



Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 15 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro