Página 1 de 1

SPED FISCAL - INICIO

Enviado: 25 Fev 2011 14:12
por frazato
Boa tarde, apos sofrer 3 dias com o tal do SPED fiscal, estou compartilhando um pouco do sofrimento, estou gerando as notas fiscais de entradas em seus respectivos blocos, bem como o fechamento dos blocos, ja esta passando pelo processo de validação do Layout, so que a consolidação ainda esta dando alguns paus, gostaria de saber ser algum ja tem o SPED fiscal funcionando corretamente para tirar algumas duvidas em relação ao bloco de registro E...


Frazato.

Código: Selecionar todos

/*
*/

Static cSepa := '|'
Static CRLF  := Chr(13)+Chr(10)


//--------------------------------------------------------------------
Function Main()
     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

     SET DEFAULT TO g:\dba\
     dDATAPROC := dDATAPROC := Date()

     GeraSpedFiscal()
Return Nil


//--------------------------------------------------------
Function GeraSpedFiscal()

        private dDATAINI := BOM( dDATAPROC )
        private dDATAFIM := EOM( dDATAPROC )

        private cEmpresa := '00422' // PDV_CODIGO_DESTINO
        private nTMP     := fcreate( "c:\temp\SPED_" + strzero( year( dDATAPROC ), 4, 0 ) + "_" + strzero( month( dDATAPROC ), 2, 0 ) + ".TXT" )


        Close All
        Cria_C100()
        Cria_C170()
        Cria_C190()
        Cria_E110()
        Cria_E210()
        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 CFOP+CSTICMS+Str(aliqicms,6,2)+c190->JAFFiltro tag c190_1 to c:\temp\C190
             Set index to c:\temp\c190

        Sele 9
             use c:\temp\E110 Alias E110

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


        nLinha_BLOCOC_C100 := 0
        nLinha_BLOCOC_C170 := 0
        nLinha_BLOCOC_C190 := 0
        nLinha_BLOCOH_010  := 0
        nLinha_BLOCOE_E200 := 0
        nLinha_BLOCOE_E210 := 0

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



        GeraBlocoC()    // Gera os Dados Em DBF
        Func_bloco0()
        Func_BlocoC()   // Grava o TXT apos Gerado
        Func_BlocoD()   // Vazio
        Func_BlocoE()   // ICMS E IPI
        Func_BlocoG()   // Vazio
        Func_BlocoH()   // INVENTARIO
        Func_Bloco1001()// Vazio

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


        Func_bloco9()   // Encerramento

        fclose( nTMP )
Return Nil


//--------------------------------------------------------
Function Func_bloco0()
nLinhasBloco := 0
Sele Forneced
     OrdSetFocus('Forneced')
     Go top
     Seek cEmpresa
     If !Found()
         Alert('Erro no cadastro da Empresa.. impossivel Montar Arquivo!')
         Return nil
     Endif
     Reg       := '0000'
     Cod_ver   := '004'
     Cod_fin   := '0'  // 0 - Remessa Original  1-Substituto
     Dt_Ini    := LimpaStr(DTOC(dDATAINI))
     dt_fin    := LimpaStr(DtoC(dDATAFIM))
     Nome      := Alltrim(Substr(Forneced->Razao,1,40))
     CNPJ      := StrZero(val(LimpaStr(Forneced->CGC)),14)
     CPF       := ''
     cUF       := Forneced->UF
     cIE       := Alltrim(Str(Val(LimpaStr(Forneced->IE)),14))
     Cod_Mun   := Forneced->IBGE_cida
     Im        := ''
     Suframa   := ''
     IND_Perfil:= 'A'
     Ind_ATIV  := '1'

     cTxt :=  Reg       +cSepa+;
              Cod_ver   +cSepa+;
              Cod_fin   +cSepa+;
              Dt_Ini    +cSepa+;
              dt_fin    +cSepa+;
              Nome      +cSepa+;
              CNPJ      +cSepa+;
              CPF       +cSepa+;
              cUF       +cSepa+;
              cIE       +cSepa+;
              Cod_Mun   +cSepa+;
              Im        +cSepa+;
              Suframa   +cSepa+;
              IND_Perfil+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 0005 - Complemento da Entidade
              Reg       := '0005'
              cFantasia := Alltrim(Iif(Empty(Forneced->Fantasia),Forneced->Razao,Forneced->Fantasia))
              cCep      := LimpaStr(forneced->Cep)
              End       := Alltrim(Forneced->Endereco)
              num       := "123"
              Compl     := ""
              cBairro    := Alltrim(Forneced->Bairro)
              cFone      := Substr(Alltrim(LimpaStr(Forneced->Telefone)),2,10)
              cFax       := Substr(Alltrim(LimpaStr(Forneced->Fax)),2,10)
              ceMail     := Alltrim(Forneced->Email)

              cTxt :=  Reg       +cSepa+;
                       cFantasia +cSepa+;
                       Substr(cCep,1,8)+cSepa+;
                       End       +cSepa+;
                       num       +cSepa+;
                       Compl     +cSepa+;
                       cBairro   +cSepa+;
                       cFone     +cSepa+;
                       cFax      +cSepa+;
                       ceMail    +cSepa
              Fwrite( nTMP,cSepa+cTxt+CRLF)

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



              // Bloco 0 Registro 0100 - DADOS DO CONTABILISTA

              Reg       := '0100'
              cNome      := 'EDSON RUSSIGNOLIA'
              cCpf       := 'XXXXXXX'
              cCRC       := StrZero(123456789,11)
              cCNPJ      := ''
              cCEP       := ''
              cEND       := ''
              cNUM       := ''
              cCompl     := ''
              cBairro    := ''
              cFone      := ''
              cFax       := ''
              cEmail     := ''
              cCod_num   := '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} )




              //---- 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 

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

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

              Aadd(wBloco_Soma_9990,{'0990',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      := StrZero(val(LimpaStr(Forneced->CGC)),14)
         CPF       := ''
         cIE       := Alltrim(Str(Val(LimpaStr(Forneced->IE)),14))
         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
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
Sele Prod
     OrdSetFocus('Prod01')

     For x:= 1 to Len(lLista)
         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(Prod->MCN)
         Ex_IPi      := ''
         Cod_gen     := '10'  // Fazer Cadastro
         Cod_lst     := ''
         Aliq_icms   := Alltrim(Transf(Prod->icmsv,'@EZ 999.99'))

         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_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'   , 'N' , 13,2 },;
           {'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' , 16,0 } }
   dbcreate('c:\temp\C170.dbf',Estru)
Return Nil

//------------------------------------------------
Function Cria_C190()
Local Estru := {}
estru := { {'Reg'      , 'C' , 04,0 },;
           {'CSTICMS'  , 'C' , 03,0 },;
           {'CFOP'     , 'C' , 04,0 },;
           {'aliqicms' , 'N' , 06,2 },;
           {'vlopr'    , 'N' , 13,2 },;
           {'vlbcicms' , 'N' , 13,2 },;
           {'vlicms'    ,'N' , 13,2 },;
           {'vlbcicmsst','N' , 13,2 },;
           {'vlicmsst' , 'N' , 13,2 },;
           {'vlredbc'   ,'N' , 13,2 },;
           {'vlipi'     ,'N' , 13,2 },;
           {'codobs'    ,'C' , 06,0 },;
           {"JAFFiltro" ,"C" , 16,0 },;
           {"JAFFiltro1","C" , 03,0 } }  // UF + Saida/Entrada
   dbcreate('c:\temp\C190.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


   Centra('Selecionando Notas......')
   Sele Nota
        Index on Nota->Numero_Nf + Nota->Serie_Nf + Nota->Cli_Codi to C:\temp\Nota ;
               For (  Nota->Lanc_Livro >=dDATAINI ;
                       .And.                      ;
                      Nota->Lanc_Livro <=dDataFim ;
                       .And.                      ;
                      Nota->Status == "A"         ;
                       .and. ;
                      Nota->movto=="C" ;
                       .and. ;
                      Nota->cli_codi=='19573' ; // 18891 00455
                       .and. ;
                      Nota->numero_nf=='222679' )

                      *;
                      * .and.  ;
                      *Nota->data_nf>= Date()-4 ;
                      * .and.     ;
                      *Nota->numero_nf=='251715' )
        //dbedit(00,00,24,79)
        Go top
        Do while ! Eof()
           // Testar Agendas



           Sele C100
                Append Blank
                Repla C100->Reg        With 'C100'
                Repla C100->IndOper    With '0'
                Repla C100->IndEmit    With '1'          // Ver
                Repla C100->CodPart    With Nota->cli_codi
                Repla C100->CodSit     With '00'
                Repla C100->CodMod     With Nota->Especie_Nf
                Repla C100->Ser        With Nota->serie_nf
                Repla C100->NumDoc     With StrZero(val(Nota->numero_nf),9)
                Repla C100->chvnfe     With Nota->Chave_Nfe
                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
                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
               *Repla C100->vlpis      With Nota->
               *Repla C100->vlcofins   With Nota->
               *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(4)
              cSerie:= Nota->serie_nf
              cForne:= Nota->cli_codi

              cTpoRegUF := Nota->UF_NOTA+Iif(C100->IndEmit=='0','E',"S")

              //--- JAFFILTRO
              _cPesq := C100->CodPart+C100->NumDoc+C100->Ser

              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('Selecionando Nota......'+cNota+'/'+cForne)
                   nSeq  := 1


                   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"

                      Sele Prod
                           OrdSetFocus('Prod01')
                           Go top
                           Seek Mvto->Codigo
                           If Found()
                              cEmbal := Iif(Empty(Prod->EMBALTITUL),"UN",Alltrim(Prod->EMBALTITUL))
                           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 Mvto->cst_nf
                           Repla C170->cfop         With Mvto->nf_cfo
                         //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
                         //Repla C170->cstpis       With Mvto->
                         //Repla C170->vlbcpis      With Mvto->
                         //Repla C170->aliqpis      With Mvto->
                         //Repla C170->quantbcpis   With Mvto->
                         //Repla C170->aliqpis      With Mvto->
                           Repla C170->vlpis        With Mvto->VLRPIS
                         //Repla C170->cstcofins    With Mvto->
                         //Repla C170->vlbcconfis   With Mvto->
                         //Repla C170->aliqconfis   With Mvto->
                         //Repla C170->qtdbcconfi   With Mvto->
                         //Repla C170->aliqconfis   With Mvto->
                           Repla C170->vlcofins     With Mvto->VLRCOFINS
                         //Repla C170->codcta       With Mvto->
                           Repla C170->JAFFiltro    With _cPesq

                         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)
                      
                      Sele C190
                           OrdSetFocus('c190_1')
                           Go top
                           Seek cPesq
                           If !Found()
                               Append Blank
                               Repla C190->Reg        With 'C190'
                               Repla C190->CSTICMS    With C170->csticms
                               Repla C190->CFOP       With C170->cfop
                               Repla C190->aliqicms   With C170->Aliqicms
                               Repla C190->JAFFiltro  With _cPesq+cTpoRegUF
                               Repla C190->JAFFiltro1 With cTpoRegUF
                           Endif

                           nC190_Campo10 := C170->vlitem - C170->vlbcicms
                         
                           Repla C190->vlopr       With C190->vlopr     +(C170->vlitem + C170->vlipi + C170->vlicmsst + Mvto->VLROUTRA )
                           Repla C190->vlbcicms    With C190->vlbcicms  +C170->vlbcicms
                           Repla C190->vlicms      With C190->vlicms    +C170->vlicms
                           Repla C190->vlbcicmsst  With C190->vlbcicmsst+C170->vlbcicmsst
                           Repla C190->vlicmsst    With C190->vlicmsst  +C170->vlicmsst
                           Repla C190->vlredbc     With C190->vlredbc   +nC190_Campo10
                           Repla C190->vlipi       With C190->vlipi     +C170->vlipi
                         //Repla C190->codobs      With C170->

                      Sele Mvto
                           Skip+1
                   Enddo


           Sele Nota
                Skip+1
        Enddo


Return nil

//------------------------------------------------------------------------
Static Function Func_BlocoC()

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

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

       Sele C100
            Go top
            Centra('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.)
                          Fwrite( nTMP,cSepa+cTxt+CRLF)
                       Endif
                       Skip+1
                    Enddo

               Sele C190
                    Go top
                    Do While !Eof()
                       If Alltrim(C190->JAFFiltro)==cPesq
                          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 C100
                    Skip+1
             Enddo

       // Encerrando Bloco C

       nLinhas := nLinha_BLOCOC_C100+nLinha_BLOCOC_C170+nLinha_BLOCOC_C190
       nLinhas := nLinhas+2

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

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

//---------------------------------------------------------------------------
Function Func_bloco9()
Local nLIN_TOTAL := nLinhasBloco0 + nLinha_BLOCOC_C100+nLinha_BLOCOC_C170+nLinha_BLOCOC_C190+;
                    nLinha_BLOCOE_E200 + nLinha_BLOCOE_E210 

              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" )
              //                                                                               H
              fwrite( nTMP, "|" + alltrim( str( nLIN_TOTAL+3+len(wBloco_Soma_9990)+4+2+2+2+2+2+1) ) )
              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('Processando Bloco E (Registro 110)')
              Processa_E110()

              Centra('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)


              //---- 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

              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,{'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

            //-- Regras de Validacoes
            nVlsldapur := (nVlTotDeb+nVlTotAJDb) - nVlTotCred
            

            If nVlsldapur<0
               nVlsldapur := 0 // nVlsldapur*-1
            endif

            nVlicmsrec := nVlsldapur
            nVlsdcdtrs := nVlTotCred   // Ver melhor


           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


               //--- 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 Centra(c)
@ 24,0 say c
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)






Código: Selecionar todos

|0000|004|0|01022011|28022011|SUPERMERCADO SANTA MARIA DE OURS LTDA.|06206061000196||SP|495139246116|3534708|||A|1|
|0001|0|
|0005|SUPERMERCADO SANTA MARIA DE OURS LTDA.|19901630|RUA EXPEDICIONARIOS 1315|123||JD.MATILDE|1433267534|1433267534||
|0100|EDSON RUSSIGNOLIA|NR CPF|00123456789||||||||||3534708|
|0150|19573|NESTLE BRASIL LTDA (SORVETES)|1058|60409075009109||272069462119|3512407||ROD ANHANGUERA KM 1545 SL 4|||.|
|0190|UN|Unidad|
|0200|26881|SORV NESTLE CONE EXTREME TRUFA 96G|7891000009055||UN|00|21050010||10|||
|0200|26889|SORV NESTLE PICOLE COCO AO LEITE 58G|7891000021743||UN|00|21050010||10|||
|0200|26891|SORV NESTLE PICOLE MEGA TRUFA BRANCO 77G|7891000709306||UN|00|21050010||10|||
|0200|25000|SORV NESTLE POTE GALAK 2L|7891000764305||UN|00|21050010||10|||
|0200|25003|SORV NESTLE POTE CREME 2L|7790430008952||UN|00|21050010||10|||
|0200|26884|SORV NESTLE PICOLE GALAK 47G|7891000706404||UN|00|21050010||10|||
|0200|28795|SORV NESTLE PICOLE LA FRUTA LIMAO 61G|7891000053171||UN|00|21050010||10|||
|0200|25004|SORV NESTLE POTE NAPOLITANO 2L|7613031571819||UN|00|21050010||10|||
|0200|40257|SORV GAROTO CONE SERENATA DE AMOR 92G|7891000055243||UN|00|21050010||10|||
|0200|40296|SORV GAROTO PICOLE BATON CHOC BRANCO 34G|7891000067482||UN|00|21050010||10|||
|0200|40249|SORV NESTLE PICOLE CHOKITO 61G|7891000076125||UN|00|21050010||10|||
|0200|41596|SORV NESTLE LA FRUTA ZERO MORAGO 536G|7891000077597||UN|00|21050010||10|||
|0200|41597|SORV NESTLE MOLICO YOGO FRUTAS VERM 542G|7891000077573||UN|00|21050010||10|||
|0200|41598|SORV NESTLE MOLICO YOGO NATURAL 485G|7891000077733||UN|00|21050010||10|||
|0200|41599|SORV NESTLE MOCA FIESTA COCADA 499G|7891000079348||UN|00|21050010||10|||
|0200|41600|SORV NESTLE POTE CHARGE 663G|7891000079416||UN|00|21050010||10|||
|0200|26877|SORV NESTLE SEM PARAR CHOCOLATE 104G|7891000017685||UN|00|21050010||10|||
|0200|41601|SORV NESTLE SEM PARAR MORANGO/CREME 102G|7613033075056||UN|00|21050010||10|||
|0200|41602|SORV NESTLE CLASSIC DUO POTE 615G|7891000079454||UN|00|21050010||10|||
|0200|41603|SORV NESTLE POTE PRESTIGIO 597G|7891000079478||UN|00|21050010||10|||
|0200|41604|SORV NESTLE MOCA FIESTA PUDIM 496G|7891000079492||UN|00|21050010||10|||
|0990|28|
|C001|0|
|C100|0|1|19573|55|00|1|000222679||24022011|24022011|1113,23|0|||957,42|1||||638,32|114,88|1372,23|132,09|23,72|||||
|C170|001|26881|SORV NESTLE CONE EXTREME TRUFA 96G|16,00000|UN|38,75||0|070|1403||25,83|18,00|4,65|60,00||6,15|0|||||0,12||||||0,64||||||2,95||
|C170|002|26889|SORV NESTLE PICOLE COCO AO LEITE 58G|36,00000|UN|41,83||0|070|1403||27,89|18,00|5,02|64,80||6,64|0|||||0,06||||||0,69||||||3,18||
|C170|003|26891|SORV NESTLE PICOLE MEGA TRUFA BRANCO 77G|18,00000|UN|46,49||0|070|1403||30,99|18,00|5,58|72,00||7,38|0|||||0,13||||||0,77||||||3,53||
|C170|004|25000|SORV NESTLE POTE GALAK 2L|6,00000|UN|67,38||0|070|1403||44,92|18,00|8,09|75,61||5,52|0|||||0,10||||||1,11||||||5,12||
|C170|005|25003|SORV NESTLE POTE CREME 2L|4,00000|UN|44,92||0|170|1403||29,95|18,00|5,39|50,41||3,68|0|||||0,10||||||0,74||||||3,41||
|C170|006|26884|SORV NESTLE PICOLE GALAK 47G|30,00000|UN|53,28||0|070|1403||35,52|18,00|6,39|82,50||8,46|0|||||0,09||||||0,88||||||4,05||
|C170|007|28795|SORV NESTLE PICOLE LA FRUTA LIMAO 61G|36,00000|UN|34,88||0|070|1403||23,25|18,00|4,18|54,00||5,54|0|||||0,05||||||0,58||||||2,65||
|C170|008|25004|SORV NESTLE POTE NAPOLITANO 2L|4,00000|UN|44,92||0|170|1403||29,95|18,00|5,39|50,41||3,68|0|||||0,10||||||0,74||||||3,41||
|C170|009|40257|SORV GAROTO CONE SERENATA DE AMOR 92G|16,00000|UN|38,75||0|070|1403||25,83|18,00|4,65|60,00||6,15|0|||||0,12||||||0,64||||||2,95||
|C170|010|40296|SORV GAROTO PICOLE BATON CHOC BRANCO 34G|50,00000|UN|32,30||0|070|1403||21,53|18,00|3,87|50,00||5,12|0|||||0,03||||||0,53||||||2,45||
|C170|011|40249|SORV NESTLE PICOLE CHOKITO 61G|25,00000|UN|52,45||0|070|1403||34,98|18,00|6,30|81,25||8,33|0|||||0,11||||||0,87||||||3,99||
|C170|012|41596|SORV NESTLE LA FRUTA ZERO MORAGO 536G|6,00000|UN|50,02||0|070|1403||33,35|18,00|6,00|72,00||6,96|0|||||0,05||||||0,83||||||3,80||
|C170|013|41597|SORV NESTLE MOLICO YOGO FRUTAS VERM 542G|6,00000|UN|58,37||0|070|1403||38,92|18,00|7,00|84,01||8,12|0|||||0,05||||||0,96||||||4,44||
|C170|014|41598|SORV NESTLE MOLICO YOGO NATURAL 485G|6,00000|UN|58,37||0|070|1403||38,92|18,00|7,00|84,01||8,12|0|||||0,05||||||0,96||||||4,44||
|C170|015|41599|SORV NESTLE MOCA FIESTA COCADA 499G|4,00000|UN|34,74||0|070|1403||23,16|18,00|4,17|50,00||4,83|0|||||0,05||||||0,57||||||2,64||
|C170|016|41600|SORV NESTLE POTE CHARGE 663G|6,00000|UN|53,77||0|070|1403||35,85|18,00|6,45|77,41||7,48|0|||||0,05||||||0,89||||||4,09||
|C170|017|26877|SORV NESTLE SEM PARAR CHOCOLATE 104G|18,00000|UN|31,97||0|170|1403||21,31|18,00|3,84|49,50||5,07|0|||||0,09||||||0,53||||||2,43||
|C170|018|41601|SORV NESTLE SEM PARAR MORANGO/CREME 102G|18,00000|UN|31,97||0|070|1403||21,31|18,00|3,84|49,50||5,07|0|||||0,09||||||0,53||||||2,43||
|C170|019|41602|SORV NESTLE CLASSIC DUO POTE 615G|6,00000|UN|53,77||0|070|1403||35,85|18,00|6,45|77,41||7,48|0|||||0,05||||||0,89||||||4,09||
|C170|020|41603|SORV NESTLE POTE PRESTIGIO 597G|6,00000|UN|53,77||0|070|1403||35,85|18,00|6,45|77,41||7,48|0|||||0,05||||||0,89||||||4,09||
|C170|021|41604|SORV NESTLE MOCA FIESTA PUDIM 496G|4,00000|UN|34,74||0|070|1403||23,16|18,00|4,17|50,00||4,83|0|||||0,05||||||0,57||||||2,64||
|C190|070|1403|18,00|956,59|557,11|100,26|1221,91|119,66|278,52|1,30||
|C190|170|1403|18,00|134,53|81,21|14,62|150,32|12,43|40,60|0,29||
|C990|26|
|D001|1|
|D990|2|
|E001|0|
|E100|01022011|28022011|
|E110|114,88|0,00|0,00|0,00|0,00|0,00|0,00|0,00|0,00|114,88|0,00|114,88|0,00|0,00|
|E200|SP|01022011|28022011|
|E210|1|0,00|0,00|0,00|0,00|0,00|132,09|0,00|0,00|132,09|0,00|132,09|0,00|0,00|
|E990|6|
|G001|1|
|G990|2|
|H001|0|
|H005|31122010|0,00|
|H990|3|
|1001|1|
|1990|2|
|9001|0|
|9900|0000|1|
|9900|0001|1|
|9900|0005|1|
|9900|0100|1|
|9900|0150|1|
|9900|0190|1|
|9900|0200|21|
|9900|0990|1|
|9900|C001|1|
|9900|C990|1|
|9900|D990|1|
|9900|D001|1|
|9900|E001|1|
|9900|E100|1|
|9900|E110|1|
|9900|E200|1|
|9900|E210|1|
|9900|E990|1|
|9900|G990|1|
|9900|G001|1|
|9900|H001|1|
|9900|H005|1|
|9900|H990|1|
|9900|1001|1|
|9900|1990|1|
|9900|C100|1|
|9900|C170|21|
|9900|C190|2|
|9900|9001|1|
|9900|9990|1|
|9900|9999|1|
|9900|9900|32|
|9990|35|
|9999|104|

Re: SPED FISCAL - INICIO

Enviado: 01 Mar 2011 20:59
por janio
Colega,

Também estou na mesma batalha. Na verdade nem peguei ainda! Mas estou precisando desenvolver esse negocio de SPED pra ontem, o que me faz não poder adiar mais.

Sabe aonde pode ser baixado manuais e material de ajuda?

Janio

Re: SPED FISCAL - INICIO

Enviado: 01 Mar 2011 22:03
por sygecom
Olá Janio,
No link abaixo você encontra tudo:
http://www1.receita.fazenda.gov.br/sped ... -que-e.htm

Re: SPED FISCAL - INICIO

Enviado: 02 Mar 2011 10:32
por janio
Valeu Leonardo!

Tem muita coisa lá. Ufa! Eita trabalhão... porém não vi o layoute!

Janio

Re: SPED FISCAL - INICIO

Enviado: 02 Mar 2011 10:51
por sygecom
Em legislação tem o layout e todas as alterações:
http://www1.receita.fazenda.gov.br/sped ... slacao.htm

Re: SPED FISCAL - INICIO

Enviado: 10 Mar 2011 08:41
por aormond
Olá, eu também estou passando por esse sufoco... Como vc fizeram o bloco E(Apuração de Icms)?

SPED FISCAL - INICIO

Enviado: 17 Mai 2011 14:41
por JSystem
Pessoal,

Estou iniciando o desenvolvimento do speed fiscal p/ funcionar a partir de Julho, estou lendo o guia prático mas, como o prazo está curto, preciso de alguma coisa mais prática.

Vi o código acima do colega Frazato postado em Fevereiro já gerando registros ref. notas de entradas, havia dito que estava dando alguns paus na consolidação e se alguém já havia feito os registros do bloco E, como já tem 3 meses, acredito que conseguiu concluir.

Gostaria que me esclarecessem o seguinte, vi as sequencias dos blocos e registros no txt e percebi intervalos entre eles, exemplo:
- do 0005 p/ 0100 <não informou o 0015>
- do 0200 p/ o 0990
- do C100 p/ o C170

Como disse que passou pelo processo de validação, estes registros e blocos que não informou é pque na época o validador não obrigava ou, mesmo sendo obrigatório como informa a versão atual do guia prático, é aceito pelo validador ?

SPED FISCAL - INICIO

Enviado: 19 Mai 2011 17:15
por JSystem
Alguém poderia solucionar minhas dúvidas da postagem anterior ?

Grato.