Clipper On Line • Ver Tópico - PVA - EFD Contribuições

PVA - EFD Contribuições

Discussão sobre desenvolvimento de software para atender as exigências da legislação fiscal e tributária (ECF, TEF, SINTEGRA, NF-e, ECD, EFD, etc.)

Moderador: Moderadores

 

PVA - EFD Contribuições

Mensagempor Itamar M. Lins Jr. » 28 Mai 2020 20:47

Ola!
Peço ajuda aos senhores, pois estou desbravando esse cipoal de siglas e programas do governo etc..
Um contador me mandou um PDF cheio de erros, pedindo digitação do registro m200 etc PIS/COFINS... Confesso que fiquei perdido...
Fui olhar e verifiquei que são campos do EFD-Contribuições, eu fiz EFD ICMS/IPI.
Pergunta: Tem algum campo no EFD ICMS/IPI para isso ?
Ou
Tem algum leiaute para o EFD Contribuições que possa ser disponibilizado. Pq lendo os códigos é mais fácil que ler manual. ;-0

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

PVA - EFD Contribuições

Mensagempor HASA » 29 Mai 2020 11:57

Bom dia, não faço o contribuições mas... aqui está o layout e manuais ok http://sped.rfb.gov.br/projeto/show/268

HASA
Avatar de usuário

HASA
Colaborador

Colaborador
 
Mensagens: 1082
Data de registro: 01 Set 2003 19:50
Cidade/Estado: São Paulo
Curtiu: 1 vez
Mens.Curtidas: 51 vezes

PVA - EFD Contribuições

Mensagempor Itamar M. Lins Jr. » 29 Mai 2020 12:54

Ola!
está o layout e manuais ok

Já tinha visto... Como eu disse se tiver uma estrutura para servir de base.
Quero ver se compensa, pq se for para criar BD para digitar o que já tem no sistema do governo não vejo vantagem em fazer.
Quero evitar redigitação, o que posso importar do BD do SPED ICMS/IPI ?
Ou importar o XML das NFe e NFCe por exemplo para fazer o SPED Contribuições, pq Já fiz para SPED ICMS/IPI.

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

PVA - EFD Contribuições

Mensagempor HASA » 29 Mai 2020 14:25

- Itamar, estruturalmente é igual ao ICMS/IPI, o que muda são alguma "tags" que tem no SPED Contribuições não tem no icms/ipi, se pegar o que tem é só tirar as tag´s que não tem e acrescentar as que faltam, não da para entender porque tem as 2 uma só com mais algumas tag´s resolveria ( acredito ), mas... não fiz nada não tenho demanda, talvez o tudo em um do Jose Quintas tenha algo ok.

HASA
Avatar de usuário

HASA
Colaborador

Colaborador
 
Mensagens: 1082
Data de registro: 01 Set 2003 19:50
Cidade/Estado: São Paulo
Curtiu: 1 vez
Mens.Curtidas: 51 vezes

PVA - EFD Contribuições

Mensagempor frazato » 29 Mai 2020 15:33

/*
*/
Static cSepa    := '|'
Static CRLF     := Chr(13)+Chr(10)
//Static lTestando:= ""

//--------------------------------------------------------------------
Function Spedpis()
     REQUEST DBFCDX
     RDDSETDEFAULT("dbfcdx")
     DBSETDRIVER("dbfcdx")

     set confirm    on
     set deleted    on
     set bell       off
     set scoreboard off

     set date       british
     set epoch      to 1950
     Set date format to "DD/MM/YYYY"
     set exclusive off
     SET WRAP ON

     dDATAPROC := dDATAPROC :=  Date()
     Configurar()
     IF MsgConf("Confirma Geracao SPED Contribuicoes ?","1") == .t.
        GeraSpedFiscal_Pis()
     Endif
Return Nil

//--------------------------------------------------------
Function GeraSpedFiscal_Pis()

        private dDATAINI := BOM( dDATAPROC )
        private dDATAFIM := EOM( dDATAPROC )
        private cNomeTxt := "c:\temp\SPED_" + strzero( year( dDATAPROC ), 4, 0 ) + "_" + strzero( month( dDATAPROC ), 2, 0 ) + ".TXT"
        private nTMP     := fcreate( "c:\temp\PIS_" + strzero( year( dDATAPROC ), 4, 0 ) + "_" + strzero( month( dDATAPROC ), 2, 0 ) + ".TXT" )

        Close All
        Cria_C100()
        Cria_C113() // Devolucao Mercadoria
        Cria_C170()

        Cria_C180()
        Cria_C181()
        Cria_C185()

        Cria_C190()
        Cria_C191()
        Cria_C195()
        Cria_E110()
        Cria_E210()
        Cria_M100()
        Cria_C491()
        Cria_C495()
        Close All

        Sele 1
             Use Forneced
             Set index to Forneced

        Sele 2
             Use Produto Alias Prod
             Set index to Produto

        Sele 3
             Use ArqNotas Alias Nota
             Set index to Arqnotas

        Sele 4
             Use Agendas Alias Agenda
             Set index to Agendas

        Sele 5
             Use Moviment Alias Mvto
             Set index to Moviment

        Sele 6
             Use c:\temp\C100 alias c100 Exclusive
             Index on CodPart+NumDoc+Ser to c:\temp\C100
             Set index to c:\temp\C100

        Sele 7
             Use c:\temp\C170 alias c170 Exclusive

        Sele 8
             Use c:\temp\C190 alias c190 Exclusive
             Index on CODITEM tag c190_1 to c:\temp\C190
             Set index to c:\temp\c190

        Sele 9
             use c:\temp\E110 Alias E110 Exclusive

        Sele 10
             use c:\temp\E210 Alias E210  Exclusive
             Index on JAFFiltro to c:\temp\E210

        Sele 11
             use c:\temp\M100 Alias M100  Exclusive

        Sele 12
             Use c:\temp\C113 alias C113 Exclusive

        Sele 13
             Use c:\temp\C491 alias C491 Exclusive
             Index on CODITEM to c:\temp\C491

        Sele 14
             Use c:\temp\C495 alias C495 Exclusive
             Index on CODITEM to c:\temp\C495

        Sele 15
             //Use (xPathGZ+'movcaixa') alias GZ
             Use (xPathGZ+'movoutra') alias GZ

                Alerta(' necessa rio fazer a exporta‡Æo do Movimento'+Chr(10)+;
                       'no GZ Sistema para Gera‡Æo do Arquivo com os Itens'+chr(10)+;
                       'vendido no Periodo'+ Chr(10)+;
                       xPathGZ+'MOVOUTRA.DBF' )

             If !File(xPathGZ+'movoutra.cdx')
                 Centra(24,'Criando Arquivo para Uso Movcaixa.cdx')
                 index on DataMovto Tag MovCaiDt to c:\temp\MovOutra ;
                              For( Gz->DataMovto >=dDATAINI .and. Gz->DataMovto <= dDATAFIM ;
                                   .And. ;
                                   Status=='01' ;  // Produtos Apenas
                                   .And. ;
                                   Cancelado==.f. ; // Sem Produtos Cancelados
                                )
             Endif
             Set index to c:\temp\MovOutra

        SELE 16
             USE PISCOFIN ALIAS TABPIS
             SET INDEX TO PISCOFIN

        Sele 17
             Use c:\temp\c191 alias C191 Exclusive
             Index on JAFFiltro to c:\temp\c191

        Sele 18
             Use c:\temp\c195 alias C195 Exclusive
             Index on JAFFiltro to c:\temp\c195

        //---- Resumo de Entradas(NFe Modelo 55)

        Sele 19
             Use c:\temp\C180 alias c180 Exclusive
             Index on CODITEM tag c180_1 to c:\temp\C180
             Set index to c:\temp\c180

        Sele 20
             Use c:\temp\c181 alias C181 Exclusive
             Index on C181->CSTPIS+C181->CFOP+Str(C181->ALIQPIS,8,4)+C181->JAFFiltro to c:\temp\c181

        Sele 21
             Use c:\temp\c185 alias C185 Exclusive
             Index on C185->CSTCOF+C185->CFOP+Str(C185->ALIQCOF,8,4)+C185->JAFFiltro to c:\temp\c185

        Sele 22
             Use CADNCM
             Set index to CADNCM

        nLinha_BLOCOC_C100 := 0
        nLinha_BLOCOC_C113 := 0
        nLinha_BLOCOC_C170 := 0
        nLinha_BLOCOC_C180 := 0
        nLinha_BLOCOC_C181 := 0
        nLinha_BLOCOC_C185 := 0
        nLinha_BLOCOC_C190 := 0
        nLinha_BLOCOC_C191 := 0
        nLinha_BLOCOC_C195 := 0
        nLinha_BLOCOC_C490 := 0
        nLinha_BLOCOC_C491 := 0
        nLinha_BLOCOC_C495 := 0
        nLinha_BLOCOH_010  := 0
        nLinha_BLOCOE_E200 := 0
        nLinha_BLOCOE_E210 := 0

        nLinhasBloco0      := 0
        wRegistros_140     := {}
        wRegistros_150     := {}
        wRegistros_200     := {}
        wBloco_Soma_9990   := {}

        wRegistros_C010    := 0

        IF MsgConf("Inicia Geracao do SPED Pis/Cofins ?","1") == .f.
           Close all
           Quit
        Endif

        GeraBlocoC()      // Gera os Dados Em DBF
      //18-07-2013 APENAS UM TESTE CASO QUEIRA GERAR E SO LIBERAR
      // Alterado para perar pelo movoutra
        GeraDados_C491()  // Gera Dados C491 (Dados Venda ECF)

        Func_bloco0()
        Func_BlocoA()   // Prestadora de Servicos
        Func_BlocoC_DetalhaNFe_C170()       // Grava o TXT apos Gerado Func_BlocoC490()// Dados de ECF
       *Func_BlocoC_ResumoC190()   // Grava o TXT apos Gerado Func_BlocoC490()// Dados de ECF
        Func_BlocoD()   // Vazio
       *Func_BlocoE()   // ICMS E IPI
        Func_BlocoF()   // Vazio
       *Func_BlocoG()   // Vazio
       *Func_BlocoH()   // INVENTARIO
        Func_BlocoM()   // Vazio
        Func_Bloco1001()// Vazio

        Aadd(wBloco_Soma_9990,{'C100',nLinha_BLOCOC_C100} )
        Aadd(wBloco_Soma_9990,{'C170',nLinha_BLOCOC_C170} )

        Aadd(wBloco_Soma_9990,{'C180',nLinha_BLOCOC_C180} )
        Aadd(wBloco_Soma_9990,{'C181',nLinha_BLOCOC_C181} )
        Aadd(wBloco_Soma_9990,{'C185',nLinha_BLOCOC_C185} )

        Aadd(wBloco_Soma_9990,{'C190',nLinha_BLOCOC_C190} )
        Aadd(wBloco_Soma_9990,{'C191',nLinha_BLOCOC_C191} )
        Aadd(wBloco_Soma_9990,{'C195',nLinha_BLOCOC_C195} )
       

        Aadd(wBloco_Soma_9990,{'C490',nLinha_BLOCOC_C490} )
        Aadd(wBloco_Soma_9990,{'C491',nLinha_BLOCOC_C491} )
        Aadd(wBloco_Soma_9990,{'C495',nLinha_BLOCOC_C495} )

        Func_bloco9()   // Encerramento

        fclose( nTMP )
Return Nil

//--------------------------------------------------------
Function Func_bloco0()
nLinhasBloco := 0
Sele Forneced
     OrdSetFocus('Forneced')
     Go top
     Seek cEmpresa
     If !Found()
         Alerta('Erro no cadastro da Empresa.. impossivel Montar Arquivo!')
         Return nil
     Endif
     Reg             := '0000'
     Cod_ver         := '003' // 002 03.06.2013
     Tipo_Escrit     := '0'
     ind_sit_Esp     := '0'
     Num_rec_anterior:= '' // Ver
     Dt_ini          := LimpaStr(DTOC(dDATAINI))
     Dt_Fim          := LimpaStr(DtoC(dDATAFIM))
     cNome           := Alltrim(Substr(Forneced->Razao,1,40))
     cCNPJ           := StrZero(val(LimpaStr(Forneced->CGC)),14)
     cUF             := Forneced->UF
     cCod_Num        := Forneced->IBGE_cida
     cSuframa        := ''
     ind_Nat_Pj      := '00'
     Ind_Ativ        := '2'

     cTxt :=  Reg             +cSepa+;
              Cod_ver         +cSepa+;
              Tipo_Escrit     +cSepa+;
              ind_sit_Esp     +cSepa+;
              Num_rec_anterior+cSepa+;
              Dt_ini          +cSepa+;
              Dt_Fim          +cSepa+;
              cNome           +cSepa+;
              cCNPJ           +cSepa+;
              cUF             +cSepa+;
              cCod_Num        +cSepa+;
              cSuframa        +cSepa+;
              ind_Nat_Pj      +cSepa+;
              Ind_Ativ        +cSepa

              Fwrite( nTMP,cSepa+cTxt+CRLF)
              Aadd(wBloco_Soma_9990,{'0000',1} )

              // Abertura de Bloco 0

              cTxt := '0001'+cSepa+'0'+cSepa  // 0-Com Movto 1-Sem Mvto
              Fwrite( nTMP,cSepa+cTxt+CRLF )

              Aadd(wBloco_Soma_9990,{'0001',1} )

              // Bloco 0 Registro 0100 - DADOS DO CONTABILISTA

              Reg       := '0100'
              cNome      := Alltrim(xContador_nome)//'EDSON RUSSIGNOLIA'
              cCpf       := xContador_cpf //'24912262862'
              cCRC       := xContador_crc //StrZero(123456789,11)
              cCNPJ      := ''
              cCEP       := ''
              cEND       := ''
              cNUM       := ''
              cCompl     := ''
              cBairro    := ''
              cFone      := ''
              cFax       := ''
              cEmail     := ''
              cCod_num   := xContador_IBGE//'3534708'

              cTxt :=  Reg       +cSepa+;
                       cNome      +cSepa+;
                       cCpf       +cSepa+;
                       cCRC       +cSepa+;
                       cCNPJ      +cSepa+;
                       cCEP       +cSepa+;
                       cEND       +cSepa+;
                       cNUM       +cSepa+;
                       cCompl     +cSepa+;
                       cBairro    +cSepa+;
                       cFone      +cSepa+;
                       cFax       +cSepa+;
                       cEmail     +cSepa+;
                       cCod_num   +cSepa

              Fwrite( nTMP,cSepa+cTxt+CRLF)

              Aadd(wBloco_Soma_9990,{'0100',1} )

              //--- Registro 0110
              Reg       := '0110'
              cTxt :=  Reg       +cSepa+;
                       '1'       +cSepa+;
                       '1'       +cSepa+;
                       '1'       +cSepa+;
                       ""        +cSepa  // 03.06.2013

              Fwrite( nTMP,cSepa+cTxt+CRLF)
              Aadd(wBloco_Soma_9990,{'0110',1 } )

               //---- Bloco 0 - Registro 140 - Tabela de Cadastro do Estabelecimentos
               nB0Reg140 := MontaBloco0_Reg140(wRegistros_140)

               //---- Bloco 0 - Registro 150 - Tabela de Cadastro do Participante
               nB0Reg150 := MontaBloco0_Reg150(wRegistros_150)

              //---- Bloco 0 - Registro 190 - INDENTIFICACAO DAS UNIDADES DE MEDIDAS
              nB0Reg190 := MontaBloco0_Reg190(wRegistros_200)
           
              //---- Bloco 0 - Registro 200 - Tabela de Identificao do Item(Produto e Servico)
              nB0Reg200 := MontaBloco0_Reg200(wRegistros_200)
           
              //-- Fechando bloco 0

               Aadd(wBloco_Soma_9990,{'0140',nB0Reg140} )
               Aadd(wBloco_Soma_9990,{'0150',nB0Reg150} )
               Aadd(wBloco_Soma_9990,{'0190',nB0Reg190} )
               Aadd(wBloco_Soma_9990,{'0200',nB0Reg200} )

              Aadd(wBloco_Soma_9990,{'0990',1} )

              nLinhasBloco0 :=  1+1+1+1+nB0Reg140+nB0Reg150+nB0Reg190+nB0Reg200+1

              cTxt := '0990'+cSepa+Alltrim(Str(nLinhasBloco0))+cSepa

              Fwrite( nTMP,cSepa+cTxt+CRLF )
Return Nil

//------------------------------------------------
Static Function LimpaStr(Limpar)
Local x      := Len(Limpar)
Local Numeros:= "0123456789"
Local nRet   := ''
Local cString:= Limpar
For x:= 1 to Len(cString)
    If Substr(cString,x,1)$Numeros
       nRet += Substr(cString,x,1)
    Endif
Next
Return (nRet)

//--------------------------------------
Static Function MontaBloco0_Reg150(lLista)
/*  Monta os registros com Base na lLista
    e Retorna a quantidade de Registros
*/
Local x ,nOk := 0
Sele Forneced
     OrdSetFocus('Forneced')

     For x:= 1 to Len(lLista)
         Go top
         Seek lLista[x]
         If !Found()
             Loop
         Endif
         nOk++
         Reg       := '0150'
         Cod_part  := Forneced->Codigo
         Nome      := Alltrim(Forneced->Razao)
         Cod_pais  := '1058'
         CNPJ      := Iif(Forneced->PessJurid==.t.,StrZero(val(LimpaStr(Forneced->CGC)),14),'')
         CPF       := Iif(Forneced->PessJurid==.f.,StrZero(val(LimpaStr(Forneced->CGC)),11),'')
         cIE       := Iif(Forneced->PessJurid==.f.,'',Alltrim(Str(Val(LimpaStr(Forneced->IE)),14)))
         cIE       := Iif(cIE=='0','',cIE)
         Cod_Num   := Alltrim(Forneced->IBGE_cida)
         Suframa   := ''
         End       := Alltrim(Forneced->Endereco)
         Num       := ''
         Compl     := ''
         cBairro   := Alltrim(Forneced->Bairro)
         cTxt :=  Reg       +cSepa+;
                  Cod_part  +cSepa+;
                  Nome      +cSepa+;
                  Cod_pais  +cSepa+;
                  CNPJ      +cSepa+;
                  CPF       +cSepa+;
                  cIE       +cSepa+;
                  Cod_Num   +cSepa+;
                  Suframa   +cSepa+;
                  End       +cSepa+;
                  Num       +cSepa+;
                  Compl     +cSepa+;
                  cBairro   +cSepa
              Fwrite( nTMP,cSepa+cTxt+CRLF)
     Next
Return nOk

//--------------------------------------
Static Function MontaBloco0_Reg190(lLista)
/*  Monta os registros com Base na lLista
    e Retorna a quantidade de Registros
*/
Local x ,nOk := 0 , wEmbala := {}, i, cPesq
//--- Correcao para evitar faltar unidade.
Aadd(wEmbala ,{'UN',"Unidades"})

Sele Prod
     OrdSetFocus('Prod01')

     For x:= 1 to Len(lLista)
         Go top
         Seek lLista[x]
         If !Found()
             Loop
         Endif
         cPesq := Alltrim(Prod->EMBALTITUL)
         If Empty(cPesq)
            Loop
         Endif
         nPos  := Ascan(wEmbala, {|x|x[1]==cPesq})
         If nPos==0
            cTitulo := 'Unidades'
            If cPesq=="KG"
               cTitulo := 'Kilo'
            ElseIf cPesq=="CX"
               cTitulo := 'Caixa'
            Endif

            Aadd(wEmbala,{cPesq,cTitulo})
         Endif
     Next
     If Len(wEmbala)==0
        Aadd(wEmbala ,{'UN',"Unidades"})
     Endif

     For i:= 1 to Len(wEmbala)
         nOk++
         cTxt := '0190'+cSepa+Alltrim(Substr(wEmbala[i,1],1,6))+;
                  cSepa+Alltrim(Substr(wEmbala[i,2],1,6))+cSepa
         Fwrite( nTMP,cSepa+cTxt+CRLF)
     Next

Return nOk

//--------------------------------------
Static Function MontaBloco0_Reg200(lLista)
/*  Monta os registros com Base na lLista
    e Retorna a quantidade de Registros
*/
Local x ,nOk := 0

     For x:= 1 to Len(lLista)
       Sele Prod
         OrdSetFocus('Prod01')
         Go top
         Seek lLista[x]
         If !Found()
             Loop
         Endif
         nOk++
         Reg         := '0200'
         Cod_item    := Alltrim(Prod->Codigo)
         Descr_item  := Alltrim(Prod->Descricao)
         Cod_Barra   := Alltrim(Prod->Ean)
         Cod_ant_item:= ''
         Univ_Inv    := Iif(Empty(Prod->EMBALTITUL),"UN",Alltrim(Prod->EMBALTITUL))
         Tipo_item   := '00'  // Ver Melhor
         Cod_NCM     := Alltrim(Iif(Empty(Prod->MCN),'10203040',Prod->MCN))
         Ex_IPi      := ''
         Cod_gen     := '10'  // Fazer Cadastro
         Cod_lst     := ''
         Aliq_icms   := Alltrim(Transf(Prod->icmsv,'@EZ 999.99'))
         Cod_NCM     := ValidaCodigoNCM(Cod_NCM)

         cTxt :=  Reg         +cSepa+;
                  Cod_item    +cSepa+;
                  Descr_item  +cSepa+;
                  Cod_Barra   +cSepa+;
                  Cod_ant_item+cSepa+;
                  Univ_Inv    +cSepa+;
                  Tipo_item   +cSepa+;
                  Cod_NCM     +cSepa+;
                  Ex_IPi      +cSepa+;
                  Cod_gen     +cSepa+;
                  Cod_lst     +cSepa+;
                  Aliq_icms   +cSepa

              Fwrite( nTMP,cSepa+cTxt+CRLF)
     Next
Return nOk

//------------------------------------------------
Function Cria_C100()
Local Estru := {}
estru := { {'Reg'      , 'C' , 04,0 },;
           {'IndOper'  , 'C' , 01,0 },;
           {'IndEmit'  , 'C' , 01,0 },;
           {'CodPart'  , 'C' , 05,0 },;  // Codigo JAF
           {'CodMod'   , 'C' , 02,0 },;
           {'CodSit'   , 'C' , 02,0 },;
           {'Ser'      , 'C' , 03,0 },;
           {'NumDoc'   , 'C' , 09,0 },;  // Converte o Atual e 10
           {'chvnfe'   , 'C' , 44,0 },;
           {'dtdoc'    , 'D' , 01,0 },;
           {'Dtes'     , 'D' , 01,0 },;
           {'vldoc'    , 'N' , 13,2 },;
           {'indpagto' , 'C' , 01,0 },;  // Padrao Avista
           {'vldesc'   , 'N' , 13,2 },;
           {'vlabatnt' , 'N' , 13,2 },;
           {'vlmerc'   , 'N' , 13,2 },;
           {'indfrt'   , 'C' , 01,0 },;
           {'vlfrt'    , 'N' , 13,2 },;
           {'vlSeg'    , 'N' , 13,2 },;
           {'vloutda'  , 'N' , 13,2 },;
           {'vlbcicms' , 'N' , 13,2 },;
           {'vlicms'   , 'N' , 13,2 },;
           {'vlbcicmsst','N' , 13,2 },;
           {'vlicmsst' , 'N' , 13,2 },;
           {'vlipi'    , 'N' , 13,2 },;
           {'vlpis'    , 'N' , 13,2 },;
           {'vlcofins' , 'N' , 13,2 },;
           {'vlpisst'  , 'N' , 13,2 },;
           {'vlconfisst','N' , 13,2 } }
   dbcreate('c:\temp\C100.dbf',Estru)
Return Nil

//------------------------------------------------
Function Cria_C113()
Local Estru := {}
estru := { {'Reg'      , 'C' , 04,0 },;
           {'IndOper'  , 'C' , 01,0 },;
           {'IndEmit'  , 'C' , 01,0 },;
           {'CodPart'  , 'C' , 05,0 },;  // Codigo JAF
           {'CodMod'   , 'C' , 02,0 },;
           {'Ser'      , 'C' , 04,0 },;
           {'sub'      , 'C' , 03,0 },;
           {'NumDoc'   , 'C' , 09,0 },;  // Converte o Atual e 10
           {'dtdoc'    , 'D' , 01,0 },;
           {'JAFFiltro' ,'C' , 20,0 } } // Antigo
   dbcreate('c:\temp\C113.dbf',Estru)
Return Nil

//------------------------------------------------
Function Cria_C170()
Local Estru := {}
estru := { {'Reg'      , 'C' , 04,0 },;
           {'numitem'  , 'C' , 03,0 },;
           {'Coditem'  , 'C' , 05,0 },;
           {'descricao', 'C' , 60,0 },;
           {'qtd'      , 'N' , 14,5 },;
           {'unid'     , 'C' , 06,0 },;
           {'vlitem'   , 'N' , 13,2 },;
           {'vldesc'   , 'N' , 13,2 },;
           {'indmov'   , 'c' , 01,0 },;
           {'csticms'  , 'c' , 03,0 },;
           {'cfop'     , 'c' , 04,0 },;
           {'codnat'   , 'c' , 10,0 },;
           {'vlbcicms' , 'N' , 13,2 },;
           {'Aliqicms' , 'N' , 06,2 },;
           {'vlicms'   , 'N' , 13,2 },;
           {'vlbcicmsst','N' , 13,2 },;
           {'aliqst'   , 'N' , 13,2 },;
           {'vlicmsst' , 'N' , 13,2 },;
           {'indapur'  , 'c' , 01,0 },;
           {'cstipi'   , 'c' , 02,0 },;
           {'codenq'   , 'c' , 03,0 },;
           {'vlbcipi'  , 'N' , 13,2 },;
           {'aliqipi'  , 'N' , 06,2 },;
           {'vlipi'    , 'N' , 13,2 },;
           {'cstpis'   , 'c' , 02,0 },;
           {'vlbcpis'  , 'N' , 13,2 },; // {'aliqpis'  , 'N' , 13,2 },;
           {'quantbcpis','N' , 13,2 },;
           {'aliqpis'  , 'N' , 13,4 },;
           {'vlpis'    , 'N' , 13,2 },;
           {'cstcofins', 'C' , 02,0 },;
           {'vlbcconfis','N' , 13,2 },;
           {'aliqconfis','N' , 06,2 },;
           {'qtdbcconfi','N' , 13,3 },; //{'aliqconfis','N' , 13,4 },;
           {'vlcofins'  ,'N' , 13,2 },;
           {'codcta'    ,'C' , 50,0 },;
           {'JAFFiltro' ,'C' , 20,0 } } // 16
   dbcreate('c:\temp\C170.dbf',Estru)
Return Nil

//------------------------------------------------
Function Cria_C190()
Local Estru := {}
estru := { {'Reg'      , 'C' , 04,0 },;
           {'CODMOD'   , 'C' , 02,0 },;
           {'DTREFINI' , 'D' , 08,0 },;
           {'DTREFFIM' , 'D' , 08,0 },;
           {'CODITEM'  , 'C' , 05,0 },;
           {'CODNCM'   , 'C' , 08,0 },;
           {'EXPIPI'   , 'C' , 03,0 },;
           {'VLTOTITEM', 'N' , 13,2 },;
           {'JAFFiltro', 'C' , 05,0 } } // Codigo Fornecedor

   dbcreate('c:\temp\C190.dbf',Estru)
Return Nil

//------------------------------------------------
Function Cria_C191()
Local Estru := {}
estru := { {'Reg'      , 'C' , 04,0 },;
           {'CNPJPART' , 'C' , 14,0 },;
           {'CSTPIS'   , 'C' , 02,0 },;
           {'CFOP'     , 'C' , 04,0 },;
           {'VLRITEM'  , 'N' , 13,2 },;
           {'VLRDESC'  , 'N' , 13,2 },;
           {'VLRBCPIS' , 'N' , 13,2 },;
           {'ALIQPIS'  , 'N' , 08,4 },;
           {'QTDBCPIS' , 'N' , 13,3 },;
           {'ALIQPISQT', 'N' , 13,4 },;
           {'VLPIS'    , 'N' , 13,2 },;
           {'CODCTA'   , 'C' , 60,0 },;
           {'JAFFiltro', 'C' , 5+5+2+4,0 } }  // Item+CNPJ

   dbcreate('c:\temp\C191.dbf',Estru)
Return Nil

//------------------------------------------------
Function Cria_C195()
Local Estru := {}
estru := { {'Reg'      , 'C' , 04,0 },;
           {'CNPJPART' , 'C' , 14,0 },;
           {'CSTCOF'   , 'C' , 02,0 },;
           {'CFOP'     , 'C' , 04,0 },;
           {'VLRITEM'  , 'N' , 13,2 },;
           {'VLRDESC'  , 'N' , 13,2 },;
           {'VLRBCCOF' , 'N' , 13,2 },;
           {'ALIQCOF'  , 'N' , 08,4 },;
           {'QTDBCCOF' , 'N' , 13,3 },;
           {'ALIQCOFQT', 'N' , 13,4 },;
           {'VLCOF'    , 'N' , 13,2 },;
           {'CODCTA'   , 'C' , 60,0 },;
           {'JAFFiltro', 'C' , 5+5+2+4,0 } } // Item/Part/CST/CFOP
   dbcreate('c:\temp\C195.dbf',Estru)
Return Nil

//------------------------------------------
Static Function Cria_E110()
Local Estru := {}
      Estru :=    { {"Reg"       , 'C',04,0 },;
                    {"VlTotDeb"  , "N",13,2 },;
                    {"VlAjuDeb"  , "N",13,2 },;
                    {"VlTotAJDb" , "N",13,2 },;
                    {"VlEstCred" , "N",13,2 },;
                    {"VlTotCred" , "N",13,2 },;
                    {"VlAjCred"  , "N",13,2 },;
                    {"VlTotAjcd" , "N",13,2 },;
                    {"VlEstdedb" , "N",13,2 },;
                    {"Vlsldcrea" , "N",13,2 },;
                    {"Vlsldapur" , "N",13,2 },;
                    {"VlTotredu" , "N",13,2 },;
                    {"Vlicmsrec" , "N",13,2 },;
                    {"Vlsdcdtrs" , "N",13,2 },;
                    {"debesp"    , "N",13,2 } }
     Dbcreate('c:\temp\E110.dbf',Estru)
Return nil

//------------------------------------------
Static Function Cria_E210()
Local Estru := {}
      Estru :=    { {"Reg"       , 'C',04,0 },;
                    {"Indmovst"  , "c",01,0 },;
                    {"VLSDCRDAST", "N",13,2 },;
                    {"VLDEVOLST" , "N",13,2 },;
                    {"VLRESS_ST" , "N",13,2 },;
                    {"VLOUTCRDST", "N",13,2 },;
                    {"VLAJCRDST" , "N",13,2 },;
                    {"VLRETE_ST" , "N",13,2 },;
                    {"VLOUTDBST" , "N",13,2 },;
                    {"VLAJTDBST" , "N",13,2 },;
                    {"VLSLDDAST" , "N",13,2 },;
                    {"VLDEDUCST" , "N",13,2 },;
                    {"VLICMRCST" , "N",13,2 },;
                    {"VSLDCRSTTR", "N",13,2 },;
                    {"DRBESPST"  , "N",13,2 },;
                    {'JAFFiltro' , 'C',02,0 } }  // UF
     Dbcreate('c:\temp\E210.dbf',Estru)
Return nil

//------------------------------------------
Function GeraBlocoC()
Local cPesq, _cPesq

     wListaNotas := {}
    *Aadd(wListaNotas,546001)  // Danone
    *Aadd(wListaNotas,2712070) // Spaipa
    *Aadd(wListaNotas,1253)  //  Elcio Produtor

    wListaNotas := CarregaListaTeste()

    lTestando2  := .f.

   Centra(24,'Selecionando Notas......')
   Sele Nota
        Index on Nota->Numero_Nf + Nota->Serie_Nf + Nota->Cli_Codi to C:\temp\Nota ;
               For (  Nota->data_lc >=dDATAINI  ;
                       .And.                    ;
                      Nota->data_lc <=dDataFim  )

        //dbedit(00,00,24,79)
        Go top

        //--- Colocando Apenas um Estabelecimento
        nPos := Ascan(wRegistros_140,cEmpresa)
        if nPos==0
           Aadd(wRegistros_140,cEmpresa)
        Endif

        nCorte := 0

        Do While ! Eof()
           If lSomentePDV=="S"
              Exit
           Endif

           If lTestando2
                 nPos := Ascan(wListaNotas,Val(Nota->Numero_Nf))
                 If nPos==0
                    Skip+1
                    Loop
                 Endif
           Endif

           If nCorte>100
              Exit
           Endif

           //cCodModelo    := Nota->Especie_Nf
           cCodModelo    := '55' // Nota->Especie_Nf
           If Nota->status#"A"  // Nota nao Atualizada Ainda..
              Skip+1
              Loop
           Endif

           // Testando Agendas

           Sele Agenda
                OrdSetFocus('Agd01')
                Go top
                Seek Nota->agenda
                If Found()
                   If Agenda->CONTABILI==.f.
                      Sele Nota
                           Skip+1
                           Loop
                   Endif
                   If !Empty(Agenda->MODELONF)
                       cCodModelo := Agenda->MODELONF
                   Endif

                Endif

            _Cnpj:= ''
            Sele Forneced
                 OrdSetFocus('Forneced')
                 Go top
                 Seek Nota->cli_codi
                 If Found()
                    If Forneced->PessJurid==.t.
                      _Cnpj := StrZero(val(LimpaStr(Forneced->CGC)),14)
                    Else
                      _Cnpj := StrZero(val(LimpaStr(Forneced->CGC)),11)
                    Endif
                 Endif

           lNotaDevolucao:= Iif(Nota->movto=='D',.t.,.f.)
           lNotaDevolucao:= .f.
           cTipoOperacao := Iif(Nota->movto=='C','0','1')  // Emissao Nota Propria

           cChaveNfe := Nota->Chave_Nfe  // Ver tem que ter a Chave da NFE
           If cTipoOperacao=='1'
              cCodModelo:= '01'
              cCodModelo:= '55'  // Somente NFe

           Endif
           

           Sele C100
                Append Blank
                Repla C100->Reg        With 'C100'
                Repla C100->IndOper    With cTipoOperacao
                Repla C100->IndEmit    With Iif(cTipoOperacao=='0','1','0')
                Repla C100->CodPart    With Nota->cli_codi
                Repla C100->CodSit     With '00'
                Repla C100->CodMod     With cCodModelo//Nota->Especie_Nf
                Repla C100->Ser        With Iif(Alltrim(Nota->serie_nf)=='UN','1',Nota->serie_nf)
                Repla C100->NumDoc     With StrZero(val(Nota->numero_nf),9)
              //Repla C100->chvnfe     With Iif(C100->CodMod=='55',Substr(cChaveNfe,4,44),'')
              //Repla C100->chvnfe     With Right(Alltrim(Nota->Chave_Nfe),44)
                Repla C100->chvnfe     With PegaChaveNfe(Nota->Chave_Nfe)

                If Empty(C100->chvnfe)
                   Repla C100->CodMod     With "01"
                Endif
                * 21/03/2012
                *If C100->IndEmit=='1'
                *   Repla C100->chvnfe  With ''
                *Endif
                Repla C100->dtdoc      With Nota->data_nf
                Repla C100->Dtes       With Nota->data_nf
                Repla C100->vldoc      With Nota->valor_nf
                Repla C100->indpagto   With '0'
                Repla C100->vldesc     With Nota->vlr_Desco
              //Repla C100->vlabatnt   With Nota->
              //Repla C100->vlmerc     With Nota->ValorProd  // Atulizado pelo C170
                Repla C100->indfrt     With '1'
              //Repla C100->vlfrt      With Nota->
              //Repla C100->vlSeg      With Nota->
                Repla C100->vloutda    With Nota->ValorOutro
                Repla C100->vlbcicms   With Nota->BaseIcms
                Repla C100->vlicms     With Nota->ValorIcms
                Repla C100->vlbcicmsst With Nota->BaseSubstr
                Repla C100->vlicmsst   With Nota->ValorSubst
                Repla C100->vlipi      With Nota->ValorIpi
              //Esta Solicitando a geracao do C190
               *Repla C100->vlpis      With Nota->VLRPIS
               *Repla C100->vlcofins   With Nota->VLRCOFINS
               *Repla C100->vlpisst    With Nota->
               *Repla C100->vlconfisst With Nota->

               nPos := Ascan(wRegistros_150,Nota->cli_codi)
               if nPos==0
                  Aadd(wRegistros_150,Nota->cli_codi)
               Endif

               cNota := Nota->numero_nf+Space(0)
               cSerie:= Nota->serie_nf
               cForne:= Nota->cli_codi

               cTpoRegUF := Nota->UF_NOTA+Iif(C100->IndOper=='0','E',"S")
               //--- JAFFILTRO
               _cPesq := C100->CodPart+C100->NumDoc+C100->Ser

               If lNotaDevolucao==.t.
                  GeraRegistroC113(_cPesq)
               Endif

               Sele Mvto
                    OrdSetFocus("movimen1")
                    Go Top
                    Seek (cNota+Substr(cSerie,1,3)+cForne)
                    If !Found()
                       //--Nota sem item Nao pode Enviar
                       Sele C100
                            Repla C100->reg  With 'X100'

                       Sele Nota
                            Skip+1
                            Loop
                   Endif
                   Centra(24,'Selecionando Nota......'+cNota+'/'+cForne)
                   nSeq  := 1

                   wTotalCofins := 0
                   wTotalPIS    := 0
                   wTotalMERC   := 0

                   Do While( Mvto->nf_num   == cNota .And. ;
                             Mvto->nf_serie == Substr(cSerie,1,3) .And. ;
                             Mvto->nf_dest  == cForne .and. ! Eof() )

                      nQuant := iif(Empty(Mvto->Qsaida),Mvto->Qentrada,Mvto->Qsaida)
                      nValor := iif(Empty(Mvto->Qsaida),Mvto->Custo_nf,Mvto->Venda)
                      cEmbal := "UN"
                      cCodMCN:= ''

                      Sele Prod
                           OrdSetFocus('Prod01')
                           Go top
                           Seek Mvto->Codigo
                           If Found()
                              cEmbal := Iif(Empty(Prod->EMBALTITUL),"UN",Alltrim(Prod->EMBALTITUL))
                              cCodMCN:= ValidaCodigoNCM(Prod->MCN)
                           Endif

                      cCfopIcms:= Mvto->nf_cfo
                      If cTipoOperacao=='0'  // Quebra galho
                         If Substr(cCfopIcms,1,1)=="5"
                            cCfopIcms:='1'+Substr(cCfopIcms,2,3)
                         ElseIf Substr(cCfopIcms,1,1)=="6"
                            cCfopIcms:='2'+Substr(cCfopIcms,2,3)
                         Endif
                         
                      Endif

                      Sele C170
                           Append Blank
                           Repla C170->Reg          With 'C170'
                           Repla C170->numitem      With StrZero(nSeq++,3)
                           Repla C170->Coditem      With Mvto->Codigo
                           Repla C170->descricao    With Mvto->Descricao
                           Repla C170->qtd          With nQuant
                           Repla C170->unid         With cEmbal
                           Repla C170->vlitem       With nValor*nQuant
                         //Repla C170->vldesc       With Mvto->
                           Repla C170->indmov       With '0'
                           Repla C170->csticms      With StrZero(Val(Mvto->cst_nf),3)
                         //Repla C170->cfop         With LimpaStr(Mvto->nf_cfo)
                           Repla C170->cfop         With LimpaStr(cCfopIcms)
                         //Repla C170->codnat       With Mvto->
                           Repla C170->vlbcicms     With Mvto->BASEICMS
                           Repla C170->Aliqicms     With Mvto->icmsc
                           Repla C170->vlicms       With Mvto->VLRICMS
                           Repla C170->vlbcicmsst   With Mvto->BASEST
                         //Repla C170->aliqst       With Mvto->
                           Repla C170->vlicmsst     With Mvto->VLRST
                           Repla C170->indapur      With '0'
                         //Repla C170->cstipi       With
                         //Repla C170->codenq       With Mvto->
                         //Repla C170->vlbcipi      With Mvto->
                         //Repla C170->aliqipi      With Mvto->
                           Repla C170->vlipi        With Mvto->VLRIPI //* nQuant
                           Repla C170->cstpis       With '98' // Mvto->Pis_Cst
                           Repla C170->vlbcpis      With Mvto->Pis_Base
                           Repla C170->aliqpis      With Mvto->Pis_Aliq

                         //--- Pegando pelo cadastro do JAF
                         //Repla C170->quantbcpis   With nQuant
                         //Repla C170->vlpis        With Mvto->VLRPIS
                         //Repla C170->cstcofins    With '98' // Mvto->conf_Cst
                         //Repla C170->vlbcconfis   With Mvto->conf_Base
                         //Repla C170->aliqconfis   With Mvto->conf_Aliq
                         //Repla C170->qtdbcconfi   With nQuant
                         //Repla C170->vlcofins     With Mvto->VLRCOFINS
                         //Repla C170->codcta       With Mvto->
                           Repla C170->JAFFiltro    With _cPesq

                          * If C170->vlcofins<=0 .or. C170->aliqpis==0
                          *         Repla C170->vlpis        With 0
                          *         Repla C170->cstcofins    With '98'
                          *         Repla C170->vlbcconfis   With 0
                          *         Repla C170->aliqconfis   With 0
                          *         Repla C170->vlcofins     With 0
                          * Endif

                           //---Dados de Pis e Cofins

                           Sele TABPIS
                                OrdSetFocus('PISCOFI1')
                                Go top
                                Seek C170->Coditem
                                If Found()  //
                                   If cTipoOperacao=='0'  // Entrada
                                           Repla C170->cstpis       With TabPis->PISCSTENT
                                           Repla C170->vlbcpis      With C170->vlitem//Mvto->Pis_Base
                                           Repla C170->aliqpis      With TabPis->PISALIQET // nAliqPis_Basica
                                         //Repla C170->aliqpis      With nAliqPis_Basica
                                         //Repla C170->quantbcpis   With nQuant
                                           Repla C170->vlpis        With C170->vlbcpis * C170->aliqpis/100
                                           

                                           Repla C170->cstcofins    With TabPis->CFSCSTENT 
                                           Repla C170->vlbcconfis   With C170->vlitem//Mvto->conf_Base
                                           Repla C170->aliqconfis   With TabPis->CFSALIQET   //nAqliCofins_bas
                                           Repla C170->aliqconfis   With nAqliCofins_bas
                                         //Repla C170->qtdbcconfi   With nQuant
                                           Repla C170->vlcofins     With C170->vlbcconfis*C170->aliqconfis /100

                                           *If C170->cstcofins=='50' .and. C170->aliqpis=0.66
                                           *   Repla C170->cstcofins   With '60'
                                           *   Repla C170->cstpis      With '60'
                                           *
                                           * ElseIf C170->aliqpis==0
                                           *   Repla C170->aliqpis      With nAliqPis_Basica
                                           *   Repla C170->aliqconfis   With nAqliCofins_bas
                                           *Endif
                                      Else
                                           Repla C170->cstpis       With TabPis->PISCSTSDA
                                           Repla C170->vlbcpis      With C170->vlitem//Mvto->Pis_Base
                                           Repla C170->aliqpis      With TabPis->PISALIQSD  // nAliqPis_Basica
                                        // Repla C170->aliqpis      With nAliqPis_Basica
                                           Repla C170->quantbcpis   With nQuant
                                           Repla C170->vlpis        With C170->vlbcpis*C170->aliqpis/100
                                           Repla C170->cstcofins    With TabPis->CFSCSTSDA
                                           Repla C170->vlbcconfis   With C170->vlitem//Mvto->conf_Base
                                           Repla C170->aliqconfis   With TabPis->CFSALIQSD   //nAqliCofins_bas
                                         //Repla C170->aliqconfis   With nAqliCofins_bas
                                         //Repla C170->qtdbcconfi   With nQuant
                                           Repla C170->vlcofins     With C170->vlbcconfis*C170->aliqconfis /100

                                           *If C170->cstcofins=='50' .and. C170->aliqpis=0.66
                                           *   Repla C170->cstcofins   With '60'
                                           *   Repla C170->cstpis      With '60'
                                           *
                                           * ElseIf C170->aliqpis==0
                                           *   *Repla C170->aliqpis      With nAliqPis_Basica
                                           *   *Repla C170->aliqconfis   With nAqliCofins_bas
                                           *Endif

                                    Endif
                                Endif

                   //--- Armazena para Atualizar o Registro C100
                     wTotalCofins += C170->vlcofins
                     wTotalPIS    += C170->vlpis
                     wTotalMERC   += C170->vlitem

                     nPos := Ascan(wRegistros_200,Mvto->codigo)
                     if nPos==0
                        Aadd(wRegistros_200,Mvto->codigo)
                     Endif
                     cPesq := C170->cfop+C170->csticms+Str(C170->Aliqicms,6,2)+Alltrim(_cPesq)

                     cPesq := C170->Coditem
                     If cTipoOperacao#'0' // Saida

                        cChavePesqC185 := C170->cstcofins+C170->cfop+Str(C170->aliqconfis,8,4)
                        cChavePesqC181 := C170->cstpis+C170->cfop+Str(C170->aliqpis,8,4)

                        Grava_Saidas(cPesq,cChavePesqC181,cChavePesqC185)
                        Sele Mvto
                             Skip+1
                             Loop
                     Endif

                      Sele C190
                           OrdSetFocus('c190_1')
                           Go top
                           Seek cPesq
                           If !Found()
                                 Append Blank
                                 Repla C190->Reg        With 'C190'
                                 Repla C190->CODMOD     With '55'
                                 Repla C190->DTREFINI   With dDATAINI
                                 Repla C190->DTREFFIM   With dDATAFIM
                                 Repla C190->CODITEM    With cPesq
                                 Repla C190->CODNCM     With cCodMCN
                                 Repla C190->EXPIPI     With ''
                                 Repla C190->JAFFiltro  With cPesq//+cForne
                             Endif
                             Repla C190->VLTOTITEM  With C190->VLTOTITEM + (C170->vlitem + C170->vlipi + C170->vlicmsst + Mvto->VLROUTRA )

                       cChavePesqC191 := cPesq+cForne+C170->cstpis   +C170->cfop
                       cChavePesqC195 := cPesq+cForne+C170->cstcofins+C170->cfop

                       Sele C191 // Dados de Resumo de Pis
                            Go top
                            Seek cChavePesqC191
                            If ! Found()
                                 Append Blank
                                  Repla C191->Reg         With 'C191'
                                  Repla C191->CNPJPART    With _Cnpj
                                  Repla C191->JAFFiltro   With cChavePesqC191
                                  Repla C191->CSTPIS      With C170->cstpis
                                  Repla C191->CFOP        With C170->cfop
                            Endif
                            Repla C191->VLRITEM     With C191->VLRITEM+C170->vlitem
                            Repla C191->VLRDESC     With 0
                            Repla C191->VLRBCPIS    With C191->VLRBCPIS+C170->vlbcpis
                            Repla C191->ALIQPIS     With C170->aliqpis
                            Repla C191->QTDBCPIS    With 0
                            Repla C191->ALIQPISQT   With 0
                            Repla C191->VLPIS       With C191->VLPIS+C170->vlpis

                       Sele C195 // Dados de Cofins
                            Go top
                            Seek cChavePesqC195
                            If ! Found()
                                 Append Blank
                                  Repla C195->Reg         With 'C195'
                                  Repla C195->CNPJPART    With _Cnpj
                                  Repla C195->JAFFiltro   With cChavePesqC195
                                  Repla C195->CSTCOF      With C170->cstcofins
                                  Repla C195->CFOP        With C170->cfop
                             Endif
                             Repla C195->VLRITEM     With C195->VLRITEM+C170->vlitem
                             Repla C195->VLRDESC     With 0
                             Repla C195->VLRBCCOF    With C195->VLRBCCOF+C170->vlbcconfis
                             Repla C195->ALIQCOF     With C170->aliqconfis
                           //Repla C195->QTDBCCOF    With C195->QTDBCCOF+C170->qtdbcconfi
                             Repla C195->ALIQCOFQT   With 0
                             Repla C195->VLCOF       With C195->VLCOF+C170->vlcofins

                      Sele Mvto
                           Skip+1
                   Enddo

                   //--- Atualizando o arquivo c:\temp\C100

                   Repla C100->VLCOFINS     With wTotalCofins
                   Repla C100->VlPis        With wTotalPIS
                   Repla C100->VLMERC       With wTotalMERC

           Sele Nota
                Skip+1
        Enddo
Return nil
frazato
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 219
Data de registro: 08 Jul 2004 07:45
Curtiu: 0 vez
Mens.Curtidas: 4 vezes

PVA - EFD Contribuições

Mensagempor frazato » 29 Mai 2020 15:34

//------------------------------------------------------
Static Function GeraRegistroC113(pFiltro)
Sele C113
     Append Blank
        Repla C113->Reg        With 'C113'
        Repla C113->IndOper    With C100->IndOper
        Repla C113->IndEmit    With C100->IndEmit
        Repla C113->CodPart    With C100->CodPart
        Repla C113->CodMod     With C100->CodMod
        Repla C113->Ser        With C100->Ser
      //Repla C113->sub        With C100->
        Repla C113->NumDoc     With C100->NumDoc
        Repla C113->dtdoc      With C100->dtdoc
        Repla C113->JAFFiltro  With pFiltro//C100->JAFFiltro
Return Nil

//---------------------------------------------------------------------------
Function Func_bloco9()
Local nLIN_TOTAL := nLinhasBloco0 + nLinha_BLOCOC_C100+nLinha_BLOCOC_C170+nLinha_BLOCOC_C190+nLinha_BLOCOC_C191+nLinha_BLOCOC_C195+;
                    nLinha_BLOCOE_E200 + nLinha_BLOCOE_E210 +;
                    nLinha_BLOCOC_C490 + nLinha_BLOCOC_C491 + nLinha_BLOCOC_C495+;
                    wRegistros_C010+;
                    nLinha_BLOCOC_C180+nLinha_BLOCOC_C181+nLinha_BLOCOC_C185

              fwrite( nTMP, "|" + "9001" )
              fwrite( nTMP, "|" + "0" )
              fwrite( nTMP, "|" + CRLF )
             
              Aadd(wBloco_Soma_9990,{'9001',1})
              Aadd(wBloco_Soma_9990,{'9990',1})
              Aadd(wBloco_Soma_9990,{'9999',1})

              Aadd(wBloco_Soma_9990,{'9900',Len(wBloco_Soma_9990)+1})

              For i:= 1 to Len(wBloco_Soma_9990)
                      fwrite( nTMP, "|" + "9900" )
                      fwrite( nTMP, "|" + wBloco_Soma_9990[i,1] )
                      fwrite( nTMP, "|" + alltrim( str( wBloco_Soma_9990[i,2] ) ) )  // Ver
                      fwrite( nTMP, "|" + CRLF )
              Next

              fwrite( nTMP, "|" + "9990" )
              fwrite( nTMP, "|" + alltrim( str( Len(wBloco_Soma_9990)+3 ) ) )  // Ver
              fwrite( nTMP, "|" + CRLF )

              fwrite( nTMP, "|" + "9999" )

              //                                                                     A
              fwrite( nTMP, "|" + alltrim( str( nLIN_TOTAL+3+len(wBloco_Soma_9990)+2+2+4+2+2) ) )
              fwrite( nTMP, "|" + CRLF )

Return Nil

//------------------------------------------
Function Func_BlocoD()

              fwrite( nTMP, "|" + "D001" )
              fwrite( nTMP, "|" + "1" )
              fwrite( nTMP, "|" + CRLF )

              fwrite( nTMP, "|" + "D990" )
              fwrite( nTMP, "|" + "2" )
              fwrite( nTMP, "|" + CRLF )

              Aadd(wBloco_Soma_9990,{'D990',1})
              Aadd(wBloco_Soma_9990,{'D001',1})
Return Nil

//------------------------------------------
Function Func_BlocoE()
Local nLinhas, cPesq

              fwrite( nTMP, "|" + "E001" )
              fwrite( nTMP, "|" + "0" )   // 1-Sem Mvto  0-Com Mvto
              fwrite( nTMP, "|" + CRLF )

              //--- Montando Registro E100
              cMsg  := LimpaStr(DTOC(dDATAINI))+cSepa+;
                       LimpaStr(DTOC(dDATAFIM))

              fwrite( nTMP, "|" + "E100" )
              fwrite( nTMP, "|" + cMsg )
              fwrite( nTMP, "|" + CRLF )

             
              Centra(24,'Processando Bloco E (Registro 110)')
              Processa_E110()

              Centra(24,'Processando Bloco E (Registro 220)')
              Processa_E210()

              //--- Gerando E110
              Sele E110
                     //cObrigacaoComZeros:='vlipi_vlbcicmsst_vlicms_vlbcicmsst_vlicmsst_vlredbc'
              cObrigacaoComZeros := 'TODOS'

              cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.t.)
              Fwrite( nTMP,cSepa+cTxt+CRLF)

              //--- Gerando E116

              cTxt  := /*1 */ "E116"                                            +cSepa+;
                       /*2 */ "000"                                             +cSepa+;
                       /*3 */ Alltrim(Transf(E110->Vlicmsrec,'@E 9999999.99'))  +cSepa+;
                       /*4 */ LimpaStr(DTOC(dDATAFIM))                          +cSepa+;
                       /*5 */ "000"                                             +cSepa+;
                       /*6 */ ''                                                +cSepa+;
                       /*7 */ ''                                                +cSepa+;
                       /*8 */ ''                                                +cSepa+;
                       /*9 */ ''                                                +cSepa+;
                       /*10*/ Substr(LimpaStr(DTOC(dDATAFIM)),3,6)+cSepa             

              Fwrite( nTMP,cSepa+cTxt+CRLF)

              //---- Montando Bloco E210  Substituicao

              wUFMontar := {}
              Sele E210
                   Go top
                   Do while ! Eof()
                      cPesq:= E210->JafFiltro   
                      nPos := Ascan(wUFMontar,cpesq)
                      If nPos==0
                          Aadd(wUFMontar,cPesq)
                      Endif
                      Skip+1
                   Enddo
                   Go top
                   For i:=1 to Len(wUFMontar)
                       cMsg := "E200"+cSepa+;
                                wUFMontar[i]+cSepa+;
                                LimpaStr(DTOC(dDATAINI))+cSepa+;
                                LimpaStr(DTOC(dDATAFIM))
                       fwrite( nTMP, "|" + cMsg+cSepa+CRLF )

                       nLinha_BLOCOE_E200++

                       Go top
                       Do while ! Eof()
                          If Substr(E210->JAfFiltro,1,2)==wUFMontar[i]
                             nLinha_BLOCOE_E210++
                             cObrigacaoComZeros := 'TODOS'
                             cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.t.)
                             Fwrite( nTMP,cSepa+cTxt+CRLF)
                          Endif
                          Skip+1
                       Enddo
                   Next

            //nLinhas := 4 + nLinha_BLOCOE_E200 +nLinha_BLOCOE_E210
              nLinhas := 5 + nLinha_BLOCOE_E200 +nLinha_BLOCOE_E210

              fwrite( nTMP, "|" + "E990" )
              fwrite( nTMP, "|" + Alltrim(Str(nLinhas,11)) )
              fwrite( nTMP, "|" + CRLF )

              Aadd(wBloco_Soma_9990,{'E001',1})
              Aadd(wBloco_Soma_9990,{'E100',1})
              Aadd(wBloco_Soma_9990,{'E110',1})
              Aadd(wBloco_Soma_9990,{'E116',1})

              Aadd(wBloco_Soma_9990,{'E200',nLinha_BLOCOE_E200})
              Aadd(wBloco_Soma_9990,{'E210',nLinha_BLOCOE_E210})

              Aadd(wBloco_Soma_9990,{'E990',1})

Return Nil

//------------------------------------------
Function Func_BlocoG()
              fwrite( nTMP, "|" + "G001" )
              fwrite( nTMP, "|" + "1" )
              fwrite( nTMP, "|" + CRLF )

              fwrite( nTMP, "|" + "G990" )
              fwrite( nTMP, "|" + "2" )
              fwrite( nTMP, "|" + CRLF )

              Aadd(wBloco_Soma_9990,{'G990',1})
              Aadd(wBloco_Soma_9990,{'G001',1})
Return Nil

//------------------------------------------
Function Func_BlocoH()
              fwrite( nTMP, "|" + "H001" )
              fwrite( nTMP, "|" + "0" )
              fwrite( nTMP, "|" + CRLF )

              //Ver Melhor ?

              cMsg := "H005"+cSepa+"31122010"+cSepa+'0,00'+cSepa
              fwrite( nTMP, "|" + cMsg+ CRLF)

              fwrite( nTMP, "|" + "H990" )
              fwrite( nTMP, "|" + "3" )
              fwrite( nTMP, "|" + CRLF )

              Aadd(wBloco_Soma_9990,{'H001',1})
              Aadd(wBloco_Soma_9990,{'H005',1})
              Aadd(wBloco_Soma_9990,{'H990',1})

Return Nil

//------------------------------------------
Function Func_Bloco1001()
              fwrite( nTMP, "|" + "1001" )
              fwrite( nTMP, "|" + "1" )
              fwrite( nTMP, "|" + CRLF )

              fwrite( nTMP, "|" + "1990" )
              fwrite( nTMP, "|" + "2" )
              fwrite( nTMP, "|" + CRLF )

              Aadd(wBloco_Soma_9990,{'1001',1})
              Aadd(wBloco_Soma_9990,{'1990',1})
Return Nil

//------------------------------------------------
Static Function Processa_E110()
Local nVlTotDeb := nVlAjuDeb := nVlTotAJDb:= 0
Local nVlEstCred:= nVlTotCred:= nVlAjCred := nVlTotAjcd := 0
Local nVlEstdedb:= nVlsldapur:= nVlTotredu:= nVlicmsrec := 0
Local nVlsdcdtrs:= ndebesp   := 0
Local cSaida    := .f.  // Pega do JAFFILTRO a ultima posicao

       Sele C190
            Go top
            Do While ! Eof()

               cSaida := Iif( Substr(C190->JAFFiltro1,3,1)=="S",.t.,.f.)

               If cSaida==.f.   // Gera Credido de ICMS
                  nVlTotCred+= C190->vlicms
               Else
                  nVlTotDeb += C190->vlicms
               Endif
               Skip+1
            Enddo

                nCal1:= (nVlTotDeb+nVlAjuDeb+nVlAjCred+nVlTotAJDb)-(nVlTotCred+nVlTotAjcd+nVlEstCred+nVlEstdedb+nVlsldapur)
                If nCal1 > 0
                   nVlsdcdtrs := 0
                   nVlsldapur := nCal1
                Else
                   nVlsdcdtrs := nCal1*-1
                   nVlsldapur := 0
                Endif

           Sele E110
                Append Blank
                Repla E110->Reg         With "E110"
                Repla E110->VlTotDeb    With nVlTotDeb
                Repla E110->VlAjuDeb    With nVlAjuDeb
                Repla E110->VlTotAJDb   With nVlTotAJDb
                Repla E110->VlEstCred   With nVlEstCred
                Repla E110->VlTotCred   With nVlTotCred
                Repla E110->VlAjCred    With nVlAjCred
                Repla E110->VlTotAjcd   With nVlTotAjcd
                Repla E110->VlEstdedb   With nVlEstdedb
                Repla E110->Vlsldapur   With nVlsldapur
                Repla E110->VlTotredu   With nVlTotredu
                Repla E110->Vlicmsrec   With nVlicmsrec
                Repla E110->Vlsdcdtrs   With nVlsdcdtrs
                Repla E110->debesp      With ndebesp

Return Nil

//------------------------------------------------
Static Function Processa_E210()
Local cSaida    := .f.  // Pega do JAFFILTRO a ultima posicao
Local nIndmovst:= nVLSDCRDAST:= nVLDEVOLST:= nVLRESS_ST:= nVLOUTCRDST:= 0
Local nVLAJCRDST:= nVLRETE_ST:= nVLOUTDBST:= nVLAJTDBST:= nVLSLDDAST:= 0
Local nVLDEDUCST:= nVLICMRCST:= nVSLDCRSTTR:= nDRBESPST:= 0

       Sele C190
            Go top
            Do While ! Eof()
               If cSaida==.f.   // Gera Credido de ICMS
               Else
               Endif
               cPesq      := substr(C190->JAFFiltro1,1,2)
               *nVLICMRCST := C190->vlicmsst
               *nVLSLDDAST := nVLICMRCST  // 11
               *nVLRETE_ST := C190->vlicmsst

               nVLOUTCRDST := C190->vlicmsst

               //--- Aplicando Regras

              /* 8  */
              *nVLRETE_ST := C190->vlicmsst
              /* 11 */ nVLSLDDAST := (nVLRETE_ST + nVLOUTDBST + nVLAJTDBST) - (nVLSDCRDAST+nVLRESS_ST+nVLOUTCRDST+nVLAJCRDST)

              If nVLSLDDAST >= 0
                 nVSLDCRSTTR := 0
              Else
                 nVSLDCRSTTR := nVLSLDDAST*-1
                 nVLSLDDAST  := 0
              Endif

               Sele E210
                    Go top
                    Seek cPesq // UF
                    If !Found()
                        Append Blank
                        Repla E210->Reg           With "E210"
                        Repla E210->Indmovst      With '1'
                        Repla E210->JAFFILTRO     With cPesq
                    Endif

                 /* 3 */   Repla E210->VLSDCRDAST   With E210->VLSDCRDAST+ nVLSDCRDAST
                 /* 4 */   Repla E210->VLDEVOLST    With E210->VLDEVOLST + nVLDEVOLST
                 /* 5 */   Repla E210->VLRESS_ST    With E210->VLRESS_ST + nVLRESS_ST
                 /* 6 */   Repla E210->VLOUTCRDST   With E210->VLOUTCRDST+ nVLOUTCRDST
                 /* 7 */   Repla E210->VLAJCRDST    With E210->VLAJCRDST + nVLAJCRDST
                 /* 8 */   Repla E210->VLRETE_ST    With E210->VLRETE_ST + nVLRETE_ST
                 /* 9 */   Repla E210->VLOUTDBST    With E210->VLOUTDBST + nVLOUTDBST
                 /* 10*/   Repla E210->VLAJTDBST    With E210->VLAJTDBST + nVLAJTDBST
                 /* 11*/   Repla E210->VLSLDDAST    With E210->VLSLDDAST + nVLSLDDAST
                 /* 12*/   Repla E210->VLDEDUCST    With E210->VLDEDUCST + nVLDEDUCST
                 /* 13*/   Repla E210->VLICMRCST    With E210->VLICMRCST + nVLICMRCST
                 /* 14*/   Repla E210->VSLDCRSTTR   With E210->VSLDCRSTTR+ nVSLDCRSTTR
                 /* 15*/   Repla E210->DRBESPST     With E210->DRBESPST  + nDRBESPST

               Sele C190
                    Skip+1
            Enddo

Return Nil

//------------------------------------------------------
Function EscreveCamposTxt(Separador,wCamposComZeros,lTODOS)
Local i
Local cSepa   := Separador
Local mString := ''
Local Campos  := DbStruct()
                 For i:= 1 to Len(Campos)
                     If Substr(Campos[i,1],1,9)==Upper('JAFFiltro')
                        Loop
                     Endif
                     If Campos[i,2]=="C"
                        mString += Alltrim(&(Campos[i,1]))+cSepa
                     Elseif Campos[i,2]=="D"
                        cCampo  := Dtoc(&(Campos[i,1]))
                        cCampo  := LimpaStr(cCampo)
                        mString += cCampo+cSepa
                     ElseIf Campos[i,2]=="N"

                        If Campos[i,1]$Upper(wCamposComZeros) .or. lTODOS
                                cCampo  := &(Campos[i,1])
                                *vlipi
                                cMasq   := "@EZ "+repli('9',Campos[i,3])+'.'+Repli('9',Campos[i,4])
                               *cMasq   := "@E "+repli('9',Campos[i,3])+'.'+Repli('9',Campos[i,4])
                                cCampo:= Transf(cCampo,cMasq)
                                cCampo  := Alltrim(cCampo)
                                mString += cCampo+cSepa
                        Else
                                cCampo  := &(Campos[i,1])
                                cMasq   := "@EZ "+repli('9',Campos[i,3])+'.'+Repli('9',Campos[i,4])
                                cCampo:= Transf(cCampo,cMasq)
                                cCampo  := Alltrim(cCampo)
                                mString += cCampo+cSepa
                         Endif
                     Endif
                 Next
Return (mString)

//------------------------------------
Function Configurar()
Local Lin  := 05
Local Col  := 5

Public xCod_fin   := '0'
Public xIND_Perfil:= 'A'
Public xInd_ATIV  := '1'

Public xContador_nome := 'TESTE CONTADOR+'+Space(40)
Public xContador_Cpf  := '24912262862'
Public xContador_CRC  := Space(15)
Public xContador_IBGE := '3534708'
Public xPathGZ        := 'f:\gz\concent\'+Space(50)
Public xPathJAF       := 'G:\dba\'+space(100)
Public cEmpresa       := Lerparam('PDV_CODIGO_DESTINO') //'00422' //
Public lSomentePDV    := "N"
Public lTestando      := "N"
Public nAliqPis_Basica:= 1.65
Public nAqliCofins_bas:= 7.60

CAIXATEXTO(Lin-2,Col-1,Lin+15,MaxCol()-2,"....### GERACAO DO SPED FISCAL -PIS/COFINS ###....(1)","G/GR+","BG+/NB+","NN/NN","N")

@ Lin++,Col say 'Local DBA JAF       (1):' Get xPathJAF  Pict "@!"
@ Lin++,Col say 'Nr.Empresa JAF         :' Get cEmpresa Pict "@!"
@ Lin++,Col say 'Mˆs Processamento      :' Get dDATAPROC Pict "D"
@ Lin++,Col say 'Tipo Remessa (0)Original (1)Substituto ' ;
                 Get xCod_fin Pict "9" Valid xCod_fin$"10"
@ lin++,Col say 'Tipo Perfil            :' Get xIND_Perfil pict "@!";
                 Valid xIND_Perfil$"ABC"
@ Lin++,Col say 'Contador Responsavel   :' Get xContador_nome
@ Lin++,Col say '              Nr.CPF   :' Get xContador_Cpf
@ Lin++,Col say '        Numero C.R.C   :' Get xContador_CRC
@ Lin++,Col say '  Codigo IBGE Cidade   :' Get xContador_IBGE
@ Lin++,Col say ' Local GZ sistema      :' Get xPathGZ
@ Lin++,Col say ' Gera Somente PDV      :' Get lSomentePDV Pict "@!"
@ Lin++,col say ' Gera Teste Apenas     :' Get lTestando   Pict "@!"
@ lin++,Col say 'Aliquota Basica Cofins :' Get nAqliCofins_bas Pict "@EZ 999.999"
@ lin++,Col say 'Aliquota Basica PIS    :' Get nAliqPis_Basica Pict "@EZ 999.999"
Read
If LastKey()==27
   FechaJanela()
   Return nil
Endif
xPathJAF := Alltrim(xPathJAF)
xPathGZ  := Alltrim(xPathGZ)
SET DEFAULT TO (xPathJAF)
FechaJanela()
Return nil

frazato
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 219
Data de registro: 08 Jul 2004 07:45
Curtiu: 0 vez
Mens.Curtidas: 4 vezes

PVA - EFD Contribuições

Mensagempor frazato » 29 Mai 2020 15:35

//------------------------------------------
Function Func_BlocoA()
Local nLinhas, cPesq

              fwrite( nTMP, "|" + "A001" )
              fwrite( nTMP, "|" + "1" )   // 1-Sem Mvto  0-Com Mvto
              fwrite( nTMP, "|" + CRLF )

              fwrite( nTMP, "|" + "A990" )
              fwrite( nTMP, "|" + Alltrim(Str(2,11)) )
              fwrite( nTMP, "|" + CRLF )
              Aadd(wBloco_Soma_9990,{'A001',1} )
              Aadd(wBloco_Soma_9990,{'A990',1} )
Return Nil

//--------------------------------------
Static Function MontaBloco0_Reg140(lLista)
/*  Monta os registros com Base na lLista
    e Retorna a quantidade de Registros
*/
Local x ,nOk := 0
Sele Forneced
     OrdSetFocus('Forneced')

     For x:= 1 to Len(lLista)
         Go top
         Seek lLista[x]
         If !Found()
             Loop
         Endif
         nOk++
         Reg       := '0140'
         Cod_part  := Forneced->Codigo
         Nome      := Alltrim(Forneced->Razao)
         Cod_pais  := '1058'
         CNPJ      := StrZero(val(LimpaStr(Forneced->CGC)),14)
         CPF       := ''
       //cIE       := Alltrim(Str(Val(LimpaStr(Forneced->IE)),14))
         cIE       := Iif(Forneced->PessJurid==.f.,'',Alltrim(Str(Val(LimpaStr(Forneced->IE)),14)))
         cIE       := Iif(cIE=='0','',cIE)
         Cod_Num   := Alltrim(Forneced->IBGE_cida)
         Suframa   := ''
         cIM       := ''

         cTxt :=  Reg       +cSepa+;
                  Cod_part  +cSepa+;
                  Nome      +cSepa+;
                  CNPJ      +cSepa+;
                  cuf       +cSepa+;
                  cIE       +cSepa+;
                  Cod_Num   +cSepa+;
                  cIM       +cSepa+;
                  cSuframa  +cSepa
              Fwrite( nTMP,cSepa+cTxt+CRLF)
     Next
Return nOk

//------------------------------------------
Function Func_BlocoF()

              fwrite( nTMP, "|" + "F001" )
              fwrite( nTMP, "|" + "1" )
              fwrite( nTMP, "|" + CRLF )

              fwrite( nTMP, "|" + "F990" )
              fwrite( nTMP, "|" + "2" )
              fwrite( nTMP, "|" + CRLF )

              Aadd(wBloco_Soma_9990,{'F990',1})
              Aadd(wBloco_Soma_9990,{'F001',1})
Return Nil

//------------------------------------------
Function Func_BlocoM()

              fwrite( nTMP, "|" + "M001" )
              fwrite( nTMP, "|" + "1" )
              fwrite( nTMP, "|" + CRLF )

              fwrite( nTMP, "|" + "M990" )
              fwrite( nTMP, "|" + "2" )
              fwrite( nTMP, "|" + CRLF )

              Aadd(wBloco_Soma_9990,{'M990',1})
              Aadd(wBloco_Soma_9990,{'M001',1})
Return Nil

//------------------------------------------------
Function Cria_M100()
Local Estru := {}
estru := { {'Reg'         , 'C' , 04,0 },;
           {'CODCRED'     , 'C' , 03,0 },; // Tabela Externa
           {'INDCREDORI'  , 'C' , 01,0 },;
           {'VLBCPIS'     , 'N' , 13,2 },;  //
           {'ALIQPIS'     , 'N' , 13,4 },;
           {'QTDBCPIS'    , 'N' , 13,3 },;
           {'ALQPISQTD'   , 'N' , 13,4 },;
           {'VLCRED'      , 'N' , 13,2 },;
           {'VLAJUSCRED'  , 'N' , 13,2 },;
           {'VLAJUSREDU'  , 'N' , 13,2 },;
           {'VLCREDDIF'   , 'N' , 13,2 },;
           {'VLCREDDISP'  , 'N' , 13,2 },;
           {'INDDESCCRD'  , 'N' , 01,0 },;
           {'VLCREDDESC'  , 'N' , 13,2 },;
           {'SLDCRED'     , 'N' , 13,2 } }

   dbcreate('c:\temp\M100.dbf',Estru)
Return Nil

//------------------------------------------------------
Function Cria_C491()
Local Estru := {}
estru := { {'Reg'         , 'C' , 04,0 },;
           {'CODITEM'     , 'C' , 05,0 },;
           {'CSTPIS'      , 'C' , 02,0 },;
           {'CFOP'        , 'C' , 04,0 },;  //
           {'VLITEM'      , 'N' , 13,2 },;
           {'VLBCPIS'     , 'N' , 13,2 },;
           {'ALIQPIS'     , 'N' , 13,4 },;
           {'QTDBCPIS'    , 'N' , 13,3 },;
           {'ALIPISQTD'   , 'N' , 13,4 },;
           {'VLPIS'       , 'N' , 13,2 },;
           {'CODCTA'      , 'C' , 60,0 } }

   dbcreate('c:\temp\C491.dbf',Estru)
Return Nil

//------------------------------------------------------
Function Cria_C495()
Local Estru := {}
estru := { {'Reg'         , 'C' , 04,0 },;
           {'CODITEM'     , 'C' , 05,0 },;
           {'CSTCOFINS'   , 'C' , 02,0 },;
           {'CFOP'        , 'C' , 04,0 },;  //
           {'VLITEM'      , 'N' , 13,2 },;
           {'VLBCCOFINS'  , 'N' , 13,2 },;
           {'ALIQCOFINS'  , 'N' , 13,4 },;
           {'QTDBCCOFIN'  , 'N' , 13,3 },;
           {'ALICOFQTD'   , 'N' , 13,4 },;
           {'VLCOFINS'    , 'N' , 13,2 },;
           {'CODCTA'      , 'C' , 60,0 } }

   dbcreate('c:\temp\C495.dbf',Estru)

Return Nil

//--------------------------------------------
Function GeraDados_C491() // GzSistema
Local _DataIni := dDATAINI //dDATAFIM
Local nReg := nTotalReg := 0, cCodPes
Centra(24,'Gerando Dados de Venda PDV(GZSistemas)')
//Return nil

Sele Gz
     OrdSetFocus('MovCaiDt')
     Go top
     Set SoftSeek On
     Seek dDataIni
     Set SoftSeek Off
     If !Found()
         _DataIni := Gz->Data
     Endif

     If lTestando=="S"
        Index on Data to c:\temp\Gz;
                      While(Data >=_DataIni .and. Data <= _DataIni) // Teste um Dia
                  *While(Data >=_DataIni .and. Data <= dDATAFIM)
     Else
        Index on Data to c:\temp\Gz;
                       While(Data >=_DataIni .and. Data <= dDATAFIM)

     Endif

     nTotalReg := OrdkeyCount()

     Go top
     Do While ! Eof()

        If lTestando=="S" .and. ( nReg >=200 )
           Exit
        Endif
        Centra(24,'Aguarde... (C491/C495)'+Str(++nReg/nTotalReg*100,7,2)+'%'+' Data Venda :'+Dtoc(Data))
        If Gz->Cancelado==.t.
           Skip+1
           Loop
        Endif
        *If Gz->Tipo#"P"
        *   Skip+1
        *   Loop
        *Endif
        If Empty(Gz->CdProd)
           Skip+1
           Loop
        Endif

        If Gz->Tributacao=='000000' // Pula itens de agendas
            //If cTbto=='000000' .or.  cCoo=='000000'
           Skip+1
           Loop
        Endif
        cCodPes:= StrZero(Val(Gz->CdProd),5)

        Sele Prod
             OrdSetFocus('Prod01')
             Go top
             Seek cCodPes
             If !Found()
                 Skip+1
                 Loop
             Else
                 If Prod->EXCLPISCOF==.t.
                    Sele Gz
                         Skip+1       
                         Loop
                 Endif
             Endif

        //--- Tratar Pis de Acordo com o Cadastro usando os dados de venda do GZ
        Sele TABPIS
             OrdSetFocus('PISCOFI1')
             Go top
             Seek cCodPes
             If !Found()  // Sem Cadastro de Pis e Cofins
                Sele Gz
                     Skip+1       
                     Loop
             Endif

        Sele C491
             Go top
             Seek cCodPes
             IF !found()
                 Append Blank
                 Repla C491->Reg          With 'C491'
                 Repla C491->CODITEM      With cCodPes
                 Repla C491->CSTPIS       With TabPis->PISCSTSDA
                 Repla C491->CFop         With '5929'
                 Repla C491->CODCTA       With ''
             Endif
             nAliquota:= TabPis->PISALIQSD
             If nAliquota <= 0
                //nAliquota:= nAliqPis_Basica
             Endif

             nBasePis := Gz->ValorTot//Gz->Valor
             nValorPIS:= nBasePis*nAliquota/100

             Repla C491->VLITEM      With C491->VLITEM    + Gz->ValorTot//Gz->Valor
             Repla C491->VLBCPIS     With C491->VLBCPIS   + nBasePis
             Repla C491->ALIQPIS     With nAliquota   
             Repla C491->VLPIS       With C491->VLPIS     + nValorPIS

        Sele C495
             Go top
             Seek cCodPes
             IF !found()
                 Append Blank
                 Repla C495->Reg          With 'C495'
                 Repla C495->CODITEM      With cCodPes
                 Repla C495->CSTCOFINS    With TabPis->CFSCSTSDA
                 Repla C495->CFop         With '5929'
                 Repla C495->CODCTA       With ''
             Endif

             nAliquota:= TabPis->CFSALIQSD

             If nAliquota <= 0
                //nAliquota := nAqliCofins_bas
             Endif

             nValorPIS:= nBasePis*nAliquota/100

             Repla C495->VLITEM         With C495->VLITEM       + Gz->ValorTot//Gz->Valor
             Repla C495->VLBCCOFINS     With C495->VLBCCOFINS   + nBasePis
             Repla C495->ALIQCOFINS     With nAliquota
           //Repla C495->QTDBCCOFIN     With C495->QTDBCCOFIN   + Gz->Quant
             Repla C495->VLCOFINS       With C495->VLCOFINS     + nValorPIS

             //-- Montar o Registro 200
             nPos := Ascan(wRegistros_200,cCodPes)
             if nPos==0
                Aadd(wRegistros_200,cCodPes)
             Endif
         Sele Gz
              Skip+1
      Enddo
Return Nil

//------------------------------------------------------------
Function Func_BlocoC490() // Escreve em Txt
         //--- Escrevendo Bloco C490
          cMsg  := 'C490'+"|"+;
                   LimpaStr(DTOC(dDATAINI))+cSepa+;
                   LimpaStr(DTOC(dDATAFIM))+cSepa+;
                   '2D'+cSepa

               fwrite( nTMP, "|" + cMsg+ CRLF )
               nLinha_BLOCOC_C490++

               Sele C491
                    Go top
                    Do While ! Eof()
                        nValorImposto :=C491->VLBCPIS*C491->ALIQPIS/100
                        Repla C491->VLPIS       With nValorImposto

                        nLinha_BLOCOC_C491++
                        //cTxt := EscreveCamposTxt(cSepa,'',.f.)
                        // aqui
                        cObrigacaoComZeros:='Todos'

                        //cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.t.)
                        cTxt := Escreve_C491()

                        Fwrite( nTMP,cSepa+cTxt+CRLF)
                        Skip+1
                    Enddo

               Sele C495
                    Go top
                    Do While ! Eof()
                        nValorImposto := C495->VLBCCOFINS*C495->ALIQCOFINS/100
                        Repla C495->VLCOFINS       With nValorImposto
                        nLinha_BLOCOC_C495++
                        //cTxt := EscreveCamposTxt(cSepa,'',.f.)
                        cObrigacaoComZeros:='Todos'
                        //cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.t.)
                        cTxt := Escreve_C495()

                        Fwrite( nTMP,cSepa+cTxt+CRLF)
                        Skip+1
                    Enddo

Return Nil

//---------------------------------------------------------------
Static Function CamposC170()
      c := Alltrim(C170->Reg      )+cSepa+;    //  , 'C' , 04,0 },;
           Alltrim(C170->numitem  )+cSepa+;    //  'C' , 03,0 },;
           Alltrim(C170->Coditem  )+cSepa+;    // , 'C' , 05,0 },;
           Alltrim(C170->descricao)+cSepa+;    // , 'C' , 60,0 },;
           Alltrim(Transf(C170->qtd,'@E 9999999999.99999'))+cSepa+; // 14,5 },;
           Alltrim(C170->unid     )+cSepa+;    //  , 'C' , 06,0 },;
           Alltrim(Transf(C170->vlitem,'@E 99999999999.99'))+cSepa+; // 13,2 },;
           Alltrim(Transf(C170->vldesc,'@E 99999999999.99'))+cSepa+; // 13,2 },;
           Alltrim(C170->indmov   )+cSepa+;
           Alltrim(C170->csticms  )+cSepa+;
           Alltrim(C170->cfop     )+cSepa+;
           Alltrim(C170->codnat   )+cSepa+;
           Alltrim(Transf(C170->vlbcicms  ,'@E 99999999999.99'))+cSepa+;  // 13,2 },;
           Alltrim(Transf(C170->Aliqicms  ,'@E 99999999999.99'))+cSepa+;
           Alltrim(Transf(C170->vlicms    ,'@E 99999999999.99'))+cSepa+; //13,2 },;
           Alltrim(Transf(C170->vlbcicmsst,'@E 99999999999.99'))+cSepa+;//13,2 },;
           Alltrim(Transf(C170->aliqst    ,'@E 99999999999.99'))+cSepa+; //13,2 },;
           Alltrim(Transf(C170->vlicmsst  ,'@E 99999999999.99'))+cSepa+; //13,2 },;
           Alltrim(C170->indapur  )+cSepa+;
           Alltrim(C170->cstipi   )+cSepa+;
           Alltrim(C170->codenq   )+cSepa+;
           Alltrim(Transf(C170->vlbcipi,'@E 99999999999.99'))+cSepa+;
           Alltrim(Transf(C170->aliqipi,'@E 99999.99'))+cSepa+;
           Alltrim(Transf(C170->vlipi  ,'@E 99999999999.99'))+cSepa+;
           Alltrim(C170->cstpis   )+cSepa+;
           Alltrim(Transf(C170->vlbcpis   ,'@E 99999999999.99'))+cSepa+;
           Alltrim(Transf(C170->aliqpis   ,'@E 99999999999.9999'))+cSepa+;
           Alltrim(Transf(0,'@EZ 99999999999.999'))+cSepa+;   //ver
           Alltrim(Transf(0   ,'@EZ 99999999999.9999'))+cSepa+;  //ver
           Alltrim(Transf(C170->vlpis      ,'@E 99999999999.99'))+cSepa+;
           Alltrim(C170->cstcofins )+cSepa+;
           Alltrim(Transf(C170->vlbcconfis,'@E 99999999999.99'))+cSepa+;
           Alltrim(Transf(C170->aliqconfis,'@E 9999999.99'))+cSepa+;
           Alltrim(Transf(0,'@EZ 99999999999.999'))+cSepa+;   //ver
           Alltrim(Transf(0,'@EZ 999999999.9999'))+cSepa+;    //ver
           Alltrim(Transf(C170->vlcofins  ,'@E 99999999999.99'))+cSepa+;
           Alltrim(C170->codcta )+cSepa
return c

//--------------------------------------------------------------------
Function Teste_Gera_C010()
             Sele Forneced
                    OrdSetFocus('Forneced')
                    Go top
                    Seek cEmpresa
                    If Found()
                          cTxt := 'C010'+cSepa+;
                                        StrZero(val(LimpaStr(Forneced->CGC)),14)+cSepa+;
                                        '2'+cSepa // Ver era 2
                                        // 2 - Usando C170
                                        // 1 - Usando C190
                                       Fwrite( nTMP,cSepa+cTxt+CRLF)
                           wRegistros_C010++
                    Endif
Return Nil

//------------------------------------------------------------
Static Function Escreve_C491()
Local cLinha := Alltrim(Reg)             +cSepa+;
                Alltrim(CODITEM)         +cSepa+;
                Alltrim(CSTPIS)          +cSepa+;
                Alltrim(CFOP)            +cSepa+;
                Alltrim(Transf(VLITEM   ,'@EZ  999999.99'))+cSepa+; // 13,2
                Alltrim(Transf(VLBCPIS  ,'@EZ  999999.99'))+cSepa+; // 13,2
                Alltrim(Transf(ALIQPIS  ,'@E   9999.9999'))+cSepa+; // 13,4
                Alltrim(Transf(QTDBCPIS ,'@EZ  9999.999' ))+cSepa+; // 13,3
                Alltrim(Transf(ALIPISQTD,'@EZ  9999.9999'))+cSepa+; // 13,4
                Alltrim(Transf(VLPIS    ,'@E   9999.99'  ))+cSepa+; // 13,2
                Alltrim(CODCTA)+cSepa
Return (clinha)

//------------------------------------------------------------
Static Function Escreve_C495()
Local cLinha := Alltrim(Reg)             +cSepa+;
                Alltrim(CODITEM)         +cSepa+;
                Alltrim(CSTCOFINS)          +cSepa+;
                Alltrim(CFOP)              +cSepa+;
                Alltrim(Transf(VLITEM      ,'@EZ  999999.99'))+cSepa+; // 13,2
                Alltrim(Transf(VLBCCOFINS  ,'@EZ  999999.99'))+cSepa+; // 13,2
                Alltrim(Transf(ALIQCOFINS  ,'@E   999999.9999'))+cSepa+; // 13,4
                Alltrim(Transf(QTDBCCOFIN  ,'@EZ  9999.999'))+cSepa+; // 13,3
                Alltrim(Transf(ALICOFQTD   ,'@EZ  9999.9999' ))+cSepa+; // 13,4
                Alltrim(Transf(VLCOFINS    ,'@E   9999.99'  ))+cSepa+; // 13,2
                Alltrim(CODCTA)+cSepa
Return (clinha)

//------------------------------------------------------------------------
Static Function Func_BlocoC_ResumoC190()
Local wUsados:= {}

       cTxt := 'C001'+cSepa+'0'+cSepa  // 0-Com Movto 1-Sem Mvto
       Fwrite( nTMP,cSepa+cTxt+CRLF )

       Aadd(wBloco_Soma_9990,{'C001',1})

       Teste_Gera_C010() // Colocando Apenas o Estabelecimento

       EscrevendoBlocoC180()

       Sele C190
            //Dbedit(00,00,24,79)
            Go top

            Centra(24,'Gerando BLOCO C  (190/191/195)')

            Do while ! Eof()

               //nLinha_BLOCOC_C100++
               nLinha_BLOCOC_C190++

               cTxt := EscreveCamposTxt(cSepa,'',.f.)

               Fwrite( nTMP,cSepa+cTxt+CRLF)

               cPesq := Alltrim(C190->CodItem)

               Sele C191
                    Go top
                    cPesq := Substr(C190->JAFFiltro,1,5)
                    Do While !Eof()
                       If Substr(C191->JAFFiltro,1,5)==cPesq
                          nLinha_BLOCOC_C191 ++
                          cObrigacaoComZeros:='Todos'
                          cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.f.)
                          Fwrite( nTMP,cSepa+cTxt+CRLF)
                       Endif
                       Skip+1
                    Enddo

               Sele C195
                    Go top
                    cPesq := C190->JAFFiltro
                    Do While !Eof()
                       If Substr(C195->JAFFiltro,1,5)==cPesq
                          nLinha_BLOCOC_C195 ++
                          cObrigacaoComZeros:='Todos'
                          cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.f.)
                          Fwrite( nTMP,cSepa+cTxt+CRLF)
                       Endif
                       Skip+1
                    Enddo
               Sele C190
                    Skip+1
             Enddo

       //--- Dados da ECF (GzSistemas no Caso)

       Func_BlocoC490()
       //--- Encerrando Bloco C

       nLinhas := nLinha_BLOCOC_C100+nLinha_BLOCOC_C113+nLinha_BLOCOC_C170+nLinha_BLOCOC_C190+nLinha_BLOCOC_C191+nLinha_BLOCOC_C195
       nLinhas := nLinhas+2+wRegistros_C010+nLinha_BLOCOC_C490+nLinha_BLOCOC_C491+nLinha_BLOCOC_C495
       nLinhas := nLinhas+nLinha_BLOCOC_C180+nLinha_BLOCOC_C181+nLinha_BLOCOC_C185

       cTxt := 'C990'+cSepa+Alltrim(Str(nLinhas,11))+cSepa  // 0-Com Movto 1-Sem Mvto

       Aadd(wBloco_Soma_9990,{'C990',1})
       Aadd(wBloco_Soma_9990,{'C010',wRegistros_C010})
       
       Fwrite( nTMP,cSepa+cTxt+CRLF )
Return Nil
//------------------------------------------------
Function Cria_C180()
Local Estru := {}
estru := { {'Reg'      , 'C' , 04,0 },;
           {'CODMOD'   , 'C' , 02,0 },;
           {'DTREFINI' , 'D' , 08,0 },;
           {'DTREFFIM' , 'D' , 08,0 },;
           {'CODITEM'  , 'C' , 05,0 },;
           {'CODNCM'   , 'C' , 08,0 },;
           {'EXPIPI'   , 'C' , 03,0 },;
           {'VLTOTITEM', 'N' , 13,2 },;
           {'JAFFiltro', 'C' , 05,0 } } // Codigo Fornecedor

   dbcreate('c:\temp\C180.dbf',Estru)
Return Nil

//------------------------------------------------
Function Cria_C181()
Local Estru := {}
estru := { {'Reg'      , 'C' , 04,0 },;
           {'CSTPIS'   , 'C' , 02,0 },;
           {'CFOP'     , 'C' , 04,0 },;
           {'VLRITEM'  , 'N' , 13,2 },;
           {'VLRDESC'  , 'N' , 13,2 },;
           {'VLRBCPIS' , 'N' , 13,2 },;
           {'ALIQPIS'  , 'N' , 08,4 },;
           {'QTDBCPIS' , 'N' , 13,3 },;
           {'ALIQPISQT', 'N' , 13,4 },;
           {'VLPIS'    , 'N' , 13,2 },;
           {'CODCTA'   , 'C' , 60,0 },;
           {'JAFFiltro', 'C' , 05,0 } }

           //{'CNPJPART' , 'C' , 14,0 },;

   dbcreate('c:\temp\C181.dbf',Estru)
Return Nil

//------------------------------------------------
Function Cria_C185()
Local Estru := {}
estru := { {'Reg'      , 'C' , 04,0 },;
           {'CSTCOF'   , 'C' , 02,0 },;
           {'CFOP'     , 'C' , 04,0 },;
           {'VLRITEM'  , 'N' , 13,2 },;
           {'VLRDESC'  , 'N' , 13,2 },;
           {'VLRBCCOF' , 'N' , 13,2 },;
           {'ALIQCOF'  , 'N' , 08,4 },;
           {'QTDBCCOF' , 'N' , 13,3 },;
           {'ALIQCOFQT', 'N' , 13,4 },;
           {'VLCOF'    , 'N' , 13,2 },;
           {'CODCTA'   , 'C' , 60,0 },;
           {'JAFFiltro', 'C' , 05,0 } }
           //{'CNPJPART' , 'C' , 14,0 },;

   dbcreate('c:\temp\C185.dbf',Estru)
Return Nil

//----------------------------------------------------
Function Grava_Saidas(_Pesq,_ChavePis,_ChaveCofins)
/* Uso Somente Na Saida
*/
Local cPesq      := _Pesq
Local cCodPes    := _Pesq
Local cPesqChave := _ChavePis
Local cPesqCofins:= _ChaveCofins

                      Sele C180
                           OrdSetFocus('c180_1')
                           Go top
                           Seek cPesq
                           If !Found()
                                 Append Blank
                                 Repla C180->Reg        With 'C180'
                                 Repla c180->CODMOD     With '55'
                                 Repla c180->DTREFINI   With dDATAINI
                                 Repla c180->DTREFFIM   With dDATAFIM
                                 Repla c180->CODITEM    With cPesq
                                 Repla c180->CODNCM     With cCodMCN
                                 Repla c180->EXPIPI     With ''
                                 Repla c180->JAFFiltro  With cPesq
                             Endif
                             Repla c180->VLTOTITEM  With c180->VLTOTITEM + (C170->vlitem + C170->vlipi + C170->vlicmsst + Mvto->VLROUTRA )

                       Sele C181 // Dados de Resumo de Pis
                            Go top
                            Seek (cPesqChave+cPesq)
                            If ! Found()
                                 Append Blank
                                  Repla c181->Reg         With 'C181'
                                //Repla c181->CNPJPART    With _Cnpj
                                  Repla c181->JAFFiltro   With cPesq
                                  Repla c181->CSTPIS      With C170->cstpis
                                  Repla c181->CFOP        With C170->cfop
                            Endif
                            Repla c181->VLRITEM     With c181->VLRITEM+C170->vlitem
                            Repla c181->VLRDESC     With 0
                            Repla c181->VLRBCPIS    With c181->VLRBCPIS+C170->vlbcpis
                            Repla c181->ALIQPIS     With C170->aliqpis
                            Repla c181->QTDBCPIS    With 0
                            Repla c181->ALIQPISQT   With 0
                            Repla c181->VLPIS       With c181->VLPIS+C170->vlpis

                       Sele C185 // Dados de Cofins
                            Go top
                            Seek (cPesqCofins+cPesq)
                            If ! Found()
                                 Append Blank
                                  Repla c185->Reg         With 'C185'
                                //Repla c185->CNPJPART    With _Cnpj // C100->CodPart
                                  Repla c185->JAFFiltro   With cPesq
                                  Repla c185->CSTCOF      With C170->cstcofins
                                  Repla c185->CFOP        With C170->cfop
                                  Repla c185->ALIQCOF     With C170->aliqconfis
                             Endif
                             Repla c185->VLRITEM     With c185->VLRITEM+C170->vlitem
                             Repla c185->VLRDESC     With 0
                             Repla c185->VLRBCCOF    With c185->VLRBCCOF+C170->vlbcconfis
                           //Repla c185->QTDBCCOF    With c185->QTDBCCOF+C170->qtdbcconfi
                             Repla c185->ALIQCOFQT   With 0
                             Repla c185->VLCOF       With c185->VLCOF+C170->vlcofins

             //-- Montar o Registro 200
             nPos := Ascan(wRegistros_200,cCodPes)
             if nPos==0
                Aadd(wRegistros_200,cCodPes)
             Endif
Return Nil

//----------------------------------------------------
Function EscrevendoBlocoC180()

/*
   usado pela funcao Grava_Saidas(_Pesq)

   nLinha_BLOCOC_C180 := 0
   nLinha_BLOCOC_C181 := 0
   nLinha_BLOCOC_C185 := 0
*/

       Sele C180
            Go top

            Centra(24,'Gerando BLOCO C  (180/181/185)')

            Do While ! Eof()

               nLinha_BLOCOC_C180++

               cTxt := EscreveCamposTxt(cSepa,'',.f.)

               Fwrite( nTMP,cSepa+cTxt+CRLF)

               cPesq := Alltrim(C180->CodItem)

               Sele C181
                    Go top
                    cPesq := C180->JAFFiltro
                    Do While !Eof()
                       If C181->JAFFiltro==cPesq
                          nLinha_BLOCOC_C181++
                          cObrigacaoComZeros:='Todos'
                          cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.f.)
                          Fwrite( nTMP,cSepa+cTxt+CRLF)
                       Endif
                       Skip+1
                    Enddo

               Sele C185
                    Go top
                    cPesq := C180->JAFFiltro
                    Do While !Eof()
                       If Alltrim(C185->JAFFiltro)==cPesq
                          nLinha_BLOCOC_C185 ++
                          cObrigacaoComZeros:='Todos'
                          cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.f.)
                          Fwrite( nTMP,cSepa+cTxt+CRLF)
                       Endif
                       Skip+1
                    Enddo
               Sele C180
                    Skip+1
             Enddo
Return Nil

//------------------------------------------------------------------------
Static Function Func_BlocoC_DetalhaNFe_C170()
Local wUsados:= {}

       cTxt := 'C001'+cSepa+'0'+cSepa  // 0-Com Movto 1-Sem Mvto
       Fwrite( nTMP,cSepa+cTxt+CRLF )

       Aadd(wBloco_Soma_9990,{'C001',1})

       Teste_Gera_C010() // Colocando Apenas o Estabelecimento

       Sele C100
            Go top

            Centra(24,'Gerando BLOCO C  (Registro 100/170/190)')

            Do while ! Eof()
               If C100->Reg=='X100'
                  Skip+1
                  Loop
               Endif

               nLinha_BLOCOC_C100 ++

               cTxt := EscreveCamposTxt(cSepa,'',.f.)
               Fwrite( nTMP,cSepa+cTxt+CRLF)

               cPesq := Alltrim(C100->CodPart+C100->NumDoc+C100->Ser)

               Sele C170
                    Go top
                    Do While !Eof()
                       If Alltrim(C170->JAFFiltro)==cPesq
                          nLinha_BLOCOC_C170 ++
                          cTxt := EscreveCamposTxt(cSepa,'',.f.)
                          cTxt := CamposC170()
                          Fwrite( nTMP,cSepa+cTxt+CRLF)
                       Endif
                       Skip+1
                    Enddo

            /*
               Sele C190
                    Go top
                    Do While !Eof()
                       *If Alltrim(C190->JAFFiltro)==cPesq
                       If Recno()== 1
                          nLinha_BLOCOC_C190 ++
                          cObrigacaoComZeros:='vlipi_vlbcicmsst_vlicms_vlbcicmsst_vlicmsst_vlredbc'

                          cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.f.)
                          Fwrite( nTMP,cSepa+cTxt+CRLF)
                       Endif
                       Skip+1
                    Enddo
              */

             /*
               Sele C191
                    Go top
                    cPesq := C100->CodPart
                    Do While !Eof()
                       If Alltrim(C191->JAFFiltro)==cPesq
                          nLinha_BLOCOC_C191 ++
                          cObrigacaoComZeros:='Todos'
                          cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.f.)
                          Fwrite( nTMP,cSepa+cTxt+CRLF)
                       Endif
                       Skip+1
                    Enddo
               */

               /*
               Sele C195
                    Go top
                    cPesq := C100->CodPart
                    Do While !Eof()
                       If Alltrim(C195->JAFFiltro)==cPesq
                          nLinha_BLOCOC_C195 ++
                          cObrigacaoComZeros:='Todos'
                          cTxt := EscreveCamposTxt(cSepa,cObrigacaoComZeros,.f.)
                          Fwrite( nTMP,cSepa+cTxt+CRLF)
                       Endif
                       Skip+1
                    Enddo
               */
               Sele C100
                    Skip+1
             Enddo

       //--- Dados da ECF (GzSistemas no Caso)

       Func_BlocoC490()
       //--- Encerrando Bloco C

       nLinhas := nLinha_BLOCOC_C100+nLinha_BLOCOC_C113+nLinha_BLOCOC_C170+nLinha_BLOCOC_C190+nLinha_BLOCOC_C191+nLinha_BLOCOC_C195
       nLinhas := nLinhas+2+wRegistros_C010+nLinha_BLOCOC_C490+nLinha_BLOCOC_C491+nLinha_BLOCOC_C495
       nLinhas := nLinhas+nLinha_BLOCOC_C180+nLinha_BLOCOC_C181+nLinha_BLOCOC_C185

       cTxt := 'C990'+cSepa+Alltrim(Str(nLinhas,11))+cSepa  // 0-Com Movto 1-Sem Mvto

       Aadd(wBloco_Soma_9990,{'C990',1})
       Aadd(wBloco_Soma_9990,{'C010',wRegistros_C010})
       
       Fwrite( nTMP,cSepa+cTxt+CRLF )
Return Nil

//--------------------------------------------------
Function ValidaCodigoNCM(Pesq)
         Sele CADNCM
              OrdSetFocus('CADNCM1')
              Go top
              Seek Pesq
              IF !Found()
                  Return '10203040'
              Endif
Return (CADNCM->NCM)

//------------------------------------------
static Function CarregaListaTeste()
Local cArq    := 'c:\temp\cuca.txt'
Local cTexto  , nLinhas, x , wLista := {}

If File(cArq)
   cTexto  := memoread(cArq)
   nLinhas := mlcount( cTexto,10)
   Centra(24,"Usando arquivo de configuracao :"+cArq)
   For x:= 1 to nLinhas
       mString := MemoLine(cTexto,15,x)
       If Substr(mString,1,1)#"#"
          Aadd(wLista,Val(mString))
       Endif
   Next
Endif
Return wLista

//---------------------------------
Static Function PegaChaveNfe(cChave)
Local cOk := Right(Alltrim(Nota->Chave_Nfe),44)
If Alltrim(cOk)=='Nfe'
   cOk := ""
Endif
Return cOk
frazato
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 219
Data de registro: 08 Jul 2004 07:45
Curtiu: 0 vez
Mens.Curtidas: 4 vezes

PVA - EFD Contribuições

Mensagempor Itamar M. Lins Jr. » 29 Mai 2020 17:44

Ola!
Clap, clap, clap!
Grato! só vendo o código já deu uma ideia.
A parte dbcreate() show de bola!

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




Retornar para Legislação Fiscal e Tributária

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 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