OCA / l10n-brazil

Localização brasileira oficial do Odoo.
https://odoo-community.org/psc-teams/brazil-66
GNU Affero General Public License v3.0
241 stars 245 forks source link

[RFC] A contabilidade externa gostaria dos lançamentos contábeis quando o período fiscal for fechado. #921

Closed mileo closed 1 year ago

mileo commented 4 years ago

A contabilidade externa gostaria dos lançamentos contábeis quando o período fiscal for fechado.

A ideia é extender o módulo account_export_csv e integra-lo ao modelo l10n_br_fiscal.close

A exportação na primeira versão deve ser feita em formato CSV, mas também permitir a extensão através de outros módulos a exportação em outros formatos contábeis e inclusive o SPED CONTÁBIL (somente alguns registros).

Por exemplo segue o layout de exportação para o DEXION CONTÁBIL (http://www.dexion.com.br/)

# -*- coding: utf-8 -*-
import tempfile
import re
import string
import codecs
from datetime import datetime
from cStringIO import StringIO
import base64
import csv

from openerp import models

csv.register_dialect('piper', delimiter='|', quoting=csv.QUOTE_NONE,
                     escapechar='"')

def punctuation_rm(string_value):
    tmp_value = (
        re.sub('[%s]' % re.escape(string.punctuation), '', string_value or ''))
    tmp_value = tmp_value.strip()
    return tmp_value

class DexionUnicodeWriter(object):

    """
    A CSV writer which will write rows to CSV file "f",
    which is encoded in the given encoding.
    """

    def __init__(self, f, dialect=csv.excel, encoding="iso-8859-1", **kwds):
        # Redirect output to a queue
        self.queue = StringIO()
        # created a writer with Excel formating settings
        self.writer = csv.writer(self.queue, dialect=dialect, **kwds)
        self.stream = f
        self.encoder = codecs.getincrementalencoder(encoding)()

    def writerow(self, row):
        # we ensure that we do not try to encode none or bool
        row = (x or u'' for x in row)

        encoded_row = [
            c.encode("iso-8859-1")
            if isinstance(c, unicode) else c for c in row]

        self.writer.writerow(encoded_row)
        # Fetch UTF-8 output from the queue ...
        data = self.queue.getvalue()
        data = data.decode("iso-8859-1")
        # ... and reencode it into the target encoding
        data = self.encoder.encode(data)
        # write to the target stream
        self.stream.write(data)
        # empty queue
        self.queue.truncate(0)

    def writerows(self, rows):
        for row in rows:
            if not len(row):
                continue
            self.writerow(row)

class AccountCsvExport(models.TransientModel):

    _inherit = 'account.csv.export'

    def _get_header_dexion_entries(self, cr, uid, ids, context=None):
        return []

    def _get_rows_dexion_entries(self, cr, uid, ids,
                                 fiscalyear_id,
                                 period_range_ids,
                                 journal_ids,
                                 context=None):

        cr.execute("""
        SELECT
          account_move_line.move_id,
          account_move.date as date,
          array_agg(account_move_line.id) as lines
        FROM
          public.account_move_line
          JOIN account_account on
            (account_account.id=account_move_line.account_id)
          JOIN account_period on
            (account_period.id=account_move_line.period_id)
          JOIN account_fiscalyear on
            (account_fiscalyear.id=account_period.fiscalyear_id)
          JOIN account_journal on
            (account_journal.id = account_move_line.journal_id)
          LEFT JOIN res_currency on
            (res_currency.id=account_move_line.currency_id)
          LEFT JOIN account_move_reconcile on
            (account_move_reconcile.id = account_move_line.reconcile_id)
          LEFT JOIN res_partner on
            (res_partner.id=account_move_line.partner_id)
          LEFT JOIN account_move on
            (account_move.id=account_move_line.move_id)
          LEFT JOIN account_tax on
            (account_tax.id=account_move_line.account_tax_id)
          LEFT JOIN account_tax_code on
            (account_tax_code.id=account_move_line.tax_code_id)
          LEFT JOIN account_analytic_account on
            (account_analytic_account.id=account_move_line.analytic_account_id)
          LEFT JOIN account_bank_statement on
            (account_bank_statement.id=account_move_line.statement_id)
        WHERE account_period.id IN %(period_ids)s
        AND account_journal.id IN %(journal_ids)s
        GROUP BY account_move.date, account_move_line.move_id
        ORDER BY account_move.date
                        """, {
            'period_ids': tuple(period_range_ids),
            'journal_ids': tuple(journal_ids)
        })

        account_move = self.pool.get('account.move')
        account_move_line = self.pool.get('account.move.line')
        result = {}
        x = 1
        for move_id, date, lines in cr.fetchall():
            am = account_move.browse(cr, uid, move_id)
            aml = account_move_line.search(cr, uid,
                                           [('id', 'in', tuple(lines))])
            result[am] = {
                'date': date,
                'lines': aml,
            }
            if len(aml) == 2:
                if am.line_id[0].debit:
                    code_debit = am.line_id[0].account_id.code or ''
                    code_credit = am.line_id[1].account_id.code or ''
                    reconcile_debit = am.line_id[0].reconcile_id and \
                        am.line_id[0].reconcile_id.name or ''
                    reconcile_credit = am.line_id[1].reconcile_id and \
                        am.line_id[1].reconcile_id.name or ''
                else:
                    code_debit = am.line_id[1].account_id.code or ''
                    code_credit = am.line_id[0].account_id.code or ''
                    reconcile_debit = am.line_id[1].reconcile_id and \
                        am.line_id[1].reconcile_id.name or ''
                    reconcile_credit = am.line_id[0].reconcile_id and \
                        am.line_id[0].reconcile_id.name or ''

                result_primeira = [
                    '',  # separator 1
                    am.line_id[0].analytic_account_id.code or '',
                    '',  # Doc_location
                    (am.line_id[0].partner_id and
                     am.line_id[0].partner_id.legal_name or
                     am.line_id[0].partner_id.name or ''),
                    code_debit,
                    code_credit,
                    '',  # default_history
                    reconcile_debit,
                    reconcile_credit,
                    punctuation_rm(am.name or ''),
                    datetime.strptime(
                        am.line_id[0].date, '%Y-%m-%d').strftime(
                        '%d%m%y'
                    ),
                    str("%.2f" % (
                        am.line_id[0].debit + am.line_id[0].credit)
                        ).replace('.', ','),
                    am.narration or '',
                    am.to_check and 'S' or 'N',
                    '',  # separator 2
                    x,   # Incremental Sequence
                ]
                x += 1
                yield result_primeira
            else:
                for item in am.line_id:
                    result_segunda = [
                        '',  # separator 1
                        item.analytic_account_id.code or '',
                        '',  # Doc_location
                        (item.partner_id and item.partner_id.legal_name or
                         item.partner_id.name or ''),
                        item.debit and item.account_id.code or '',
                        item.credit and item.account_id.code or '',
                        '',  # default_history
                        item.debit and item.reconcile_id.name or '',
                        item.credit and item.reconcile_id.name or '',
                        punctuation_rm(item.name or ''),
                        datetime.strptime(
                            am.line_id[0].date, '%Y-%m-%d').strftime(
                            '%d%m%y'
                        ),
                        str("%.2f" %
                            (item.debit + item.credit)).replace('.', ','),
                        am.narration or '',
                        am.to_check and 'S' or 'N',
                        '',  # separator 2
                        x,   # Incremental Sequence
                    ]
                    x += 1
                    yield result_segunda

    def action_manual_export_dexion(self, cr, uid, ids, context=None):
        this = self.browse(cr, uid, ids)[0]
        rows = self.get_data(cr, uid, ids, "dexion_entries", context)
        with tempfile.TemporaryFile() as file_data:
            writer = DexionUnicodeWriter(file_data, dialect='piper')
            writer.writerows(rows)
            with tempfile.TemporaryFile() as base64_data:
                file_data.seek(0)
                base64.encode(file_data, base64_data)
                base64_data.seek(0)
                cr.execute("""
                UPDATE account_csv_export
                SET data = %s, export_filename = 'arquivo_dexion.txt'
                WHERE id = %s""", (base64_data.read(), ids[0]))
        return {
            'type': 'ir.actions.act_window',
            'res_model': 'account.csv.export',
            'view_mode': 'form',
            'view_type': 'form',
            'res_id': this.id,
            'views': [(False, 'form')],
            'target': 'new',
        }
marcelsavegnago commented 4 years ago

Chegou a olhar os módulos do account-closing para auxiliar no fechamento? https://github.com/OCA/account-closing

No caso acho que a exportação ele não atenderia.

mileo commented 4 years ago

Chegou a olhar os módulos do account-closing para auxiliar no fechamento? https://github.com/OCA/account-closing

No caso acho que a exportação ele não atenderia.

Sim, mas isso não tem relação com o processo de fechamento de período contábil.

Ocorre que as pequenas empresas não tem o costume de efetuar o fechamento de período contábil, apenas fiscal.

O tramites contábeis ficam por cargo dos escritórios de contabilidade. Então geralmente o que ocorre é que no fim do mês a empresa envia uma série de dados para a contabilidade realizar a "contabilidade".

Vários dos dados fiscais estão sendo mapeados neste modelo:

https://github.com/OCA/l10n-brazil/blob/12.0/l10n_br_fiscal/models/closing.py

A ideia é colocar também a opção do envio dos lançamentos contábeis da empresa para a contabilidade.

Com o auxilo do módulo https://github.com/OCA/account-financial-reporting/tree/12.0/account_export_csv

Ele exporta em formato CSV:

image

Por exemplo os dados que o DEXION PRECISA:

               LAYOUT DE IMPORTACAO DE LANCAMENTOS - CONTABIL 4 (novo)
               =======================================================

   Ao início e ao final de cada campo (incluídos o primeiro e o último  de  cada
registro) deve ser inserido o caracter delimitador “|” (Pipe ou barra vertical -
caracter 124 da Tabela ASCII).

   Formato dos campos :

   - ALFANUMÉRICO : representados por “C” - todos os caracteres das  posições da
     Tabela ASCII, excetuados os caracteres “|” (Pipe ou Barra Vertical - carac-
     ter 124 da Tabela ASCII) e  os  não-imprimíveis (caracteres 00 a 31 da  Ta-
     bela ASCII).
     Todos os campos alfanuméricos terão tamanho máximo de 255 caracteres, exce-
     to se houver indicação distinta.

   - NUMÉRICO : representados por “N” - algarismos das posições de 48  a  57  da
     Tabela ASCII.

     Regras de preenchimento dos campos com conteúdo NUMÉRICO nos quais há indi-
     cação de casas decimais :
     . Deverão ser preenchidos sem os separadores de milhar, sinais   ou  quais-
       quer outros caracteres (tais como: “.” “-“ “%”), devendo  a  vírgula  ser
       utilizada como separador decimal (Vírgula: caracter 44 da Tabela ASCII);
     . Deve ser observada a quantidade de casas decimais que constar no  respec-
       tivo campo;

     Regras de preenchimento os campos com conteúdo NUMÉRICO (N)  cujo  conteúdo
     represente data :
     . Devem ser informados conforme o padrão “diamêsano” (ddmmaa), excluindo-
       -se quaisquer caracteres de separação (tais como: “.”, “/“, “-”, etc);

                                  CAMPOS
                                  ------

Nº   DESCRIÇÃO                                TIPO   TAMANHO   DEC          OBSERVACAO
--   --------------------------------------   ----   -------   ---   ------------------------
 1   Centro de Custo                            C         15
 2   Localização do Documento                   C         15
 3   Parceiro                                   N          9    -
 4   Conta de Débito                            C         25
 5   Conta de Crédito                           C         25
 6   Histórico Padrão                           N          9    -
 7   Débito Conciliado                          C          1         S-Sim, N-Não, P-Pendente
 8   Crédito Conciliado                         C          1         S-Sim, N-Não, P-Pendente
 9   Complemento de Histórico                   C          -
10   Data do Lançamento                         N          8    -
11   Valor                                      N         12    2
12   Observação                                 C          -         Referente a Pendente
13   Pendente                                   C          1         S-Sim, N-Não
14   Informações de Acesso ao Registro          C          -

Obs: Informações de Acesso ao Registro = sequencial de números em ordem crescente.
Obs: nos campos nº 4 e 5 conta de débito e crédito podem ser informados os atalhos 
no arquivo de importação, mas esses atalhos devem ser iguais aos atalhos que são devem
estar cadastrados no plano de contas do contábil.

Exemplo de arquivo:

||||1122010005|CAIXA     ||N|N|NVR REF SALARIO C FOLHA   |010107|15000,00|TESTE|N|1|
||||1122010015|1111010001||N|N|DESC INSS C FOLHA         |010107|50,00|TESTANDO|N|2|
||||2113010001|1111010001||N|N|VR REF SALÁRIOS A PAGAR   |010107|68,00|TESTANDO|N|3|
||||1112010002|1111010001||N|N|VR DEVIDO REF FGTS C FOLHA|010107|9800,00|TESTAN|N|4|
||||1111010001|2113010001||N|N|VR REF INSS DA COMPETÊNCIA|010107|55454,54|TESTE|N|5|
mileo commented 4 years ago

Exemplo de um arquivo fictício de SPED Contábil:

|0000|LECD|01032020|31032020|KMEE INFORMATICA LTDA|23130935000198|SP|IE|12321|||0|1|0||0|0||N|N|
|0001|0|
|0007|SP|1234|
|0990|4|
|I001|0|
|I010|G|7.00|
|I030|TERMO DE ABERTURA|1|Diário Geral|163|KMEE INFORMATICA LTDA|12344|23130935000198|123||Jacarei||
|I075|00001|Provisão da NF Emitida|
|I075|00002|Provisão da NF do Fornecedor|
|I075|00003|Provisão de Conta a Receber (Manual)|
|I075|00004|Provisão de Conta a Pagar (Manual)|
|I075|00005|Lançam. de Conta Corrente (Entrada ou Re|
|I075|00006|Lançam. de Conta Corrente (Saída ou Desp|
|I075|00007|Transferência entre Contas (Origem)|
|I075|00008|Transferência entre Contas (Destino)|
|I075|00009|Estorno da Prov. da NF Emitida|
|I075|00010|Estorno da Prov. da NF do Fornecedor|
|I075|00011|Estorno Prov. Conta Receber (Manual)|
|I075|00012|Estorno Prov. Conta Pagar (Manual)|
|I075|00013|Provisão do INSS Retido|
|I075|00014|Provisão do IR Retido|
|I075|00015|Provisão do ISS Retido|
|I075|00016|Provisão do PIS Retido|
|I075|00017|Provisão do COFINS Retido|
|I075|00018|Provisão do CSLL Retido|
|I075|00019|Estorno da Prov. do INSS Retido|
|I075|00020|Estorno da Prov. do IR Retido|
|I075|00021|Estorno da Prov. do ISS Retido|
|I075|00022|Juros Recebidos|
|I075|00023|Multa Recebida|
|I075|00024|Desconto Concedido|
|I075|00025|Juros Pagos|
|I075|00026|Multa Paga|
|I075|00027|Desconto Obtido|
|I075|00028|Baixa de Pagamento|
|I075|00029|Baixa de Recebimento|
|I075|00030|Provisão do ICMS a Recuperar|
|I075|00031|Estorno da Prov. do ICMS Recuperar|
|I075|00032|Provisão do ICMS a Recolher|
|I075|00033|Estorno da Prov. do ICMS Recolher|
|I075|00034|Provisão do IPI a Recolher|
|I075|00035|Estorno da Prov. do IPI Recolher|
|I075|00036|Provisão do PIS a Recolher|
|I075|00037|Estorno da Prov. do PIS Recolher|
|I075|00038|Provisão do COFINS a Recolher|
|I075|00039|Estorno da Prov. do COFINS Recolher|
|I075|00040|Provisão do ICMS ST a Recolher|
|I075|00041|Estorno da Prov. do ICMS ST Recolher|
|I075|00042|Provisão do Frete s/ Venda|
|I075|00043|Estorno da Prov. do Frete s/ Venda|
|I075|00044|Provisão do Seguro de Transp. s/ Venda|
|I075|00045|Estorno da Prov. do Seguro de Transp. s/|
|I075|00046|Estorno da Prov. do PIS Retido|
|I075|00047|Estorno da Prov. do COFINS Retido|
|I075|00048|Estorno da Prov. do CSLL Retido|
|I075|00049|Provisão do Serviço Prestado|
|I075|00050|Estorno da Prov. do Serviço Prestado|
|I075|00051|Provisão do ICMS s/ Frete a Recuperar|
|I075|00052|Estorno da Prov. do ICMS s/ Frete Recupe|
|I075|00053|Provisão do CT-e da Transportadora|
|I075|00054|Estorno da Prov. do CT-e da Transportado|
|I075|00055|Provisão do PIS a Recuperar|
|I075|00056|Estorno da Prov. do PIS Recuperar|
|I075|00057|Provisão do COFINS a Recuperar|
|I075|00058|Estorno da Prov. do COFINS Recuperar|
|I075|00059|Provisão do IPI a Recuperar|
|I075|00060|Estorno da Prov. do IPI Recuperar|
|I075|00061|Provisão do ICMS ST a Recuperar|
|I075|00062|Estorno da Prov. do ICMS ST Recuperar|
|I150|01032020|31032020|
|I155|1.100||0,00|C|909,62|909,62|0,00|C|
|I200|0399907319|14032020|60,83|N||
|I250|1.100||50,00|D|0399908253|00001|Prov. NF 00000013 SILVIO SANTOS||
|I250|4.101||9,00|D|0399908256|00032|Prov. ICMS a recolher NF 00000013 SILVIO SANTOS||
|I250|4.102||0,33|D|0399908260|00036|Prov. PIS a recolher NF 00000013 SILVIO SANTOS||
|I250|4.103||1,50|D|0399908262|00038|Prov. COFINS a recolher NF 00000013 SILVIO SANTOS||
|I250|5.001||50,00|C|0399908254|00001|Prov. NF 00000013 SILVIO SANTOS||
|I250|2.201||9,00|C|0399908255|00032|Prov. ICMS a recolher NF 00000013 SILVIO SANTOS||
|I250|2.202||0,33|C|0399908259|00036|Prov. PIS a recolher NF 00000013 SILVIO SANTOS||
|I250|2.103||1,50|C|0399908261|00038|Prov. COFINS a recolher NF 00000013 SILVIO SANTOS||
|I200|0399907919|14032020|60,83|N||
|I250|1.100||50,00|D|0399908265|00001|Prov. NF 00000014 UTILIDADES DOMESTICAS||
|I250|4.101||9,00|D|0399908268|00032|Prov. ICMS a recolher NF 00000014 UTILIDADES DOMESTICAS||
|I250|4.102||0,33|D|0399908272|00036|Prov. PIS a recolher NF 00000014 UTILIDADES DOMESTICAS||
|I250|4.103||1,50|D|0399908274|00038|Prov. COFINS a recolher NF 00000014 UTILIDADES DOMESTICAS||
|I250|5.001||50,00|C|0399908266|00001|Prov. NF 00000014 UTILIDADES DOMESTICAS||
|I250|2.201||9,00|C|0399908267|00032|Prov. ICMS a recolher NF 00000014 UTILIDADES DOMESTICAS||
|I250|2.202||0,33|C|0399908271|00036|Prov. PIS a recolher NF 00000014 UTILIDADES DOMESTICAS||
|I250|2.103||1,50|C|0399908273|00038|Prov. COFINS a recolher NF 00000014 UTILIDADES DOMESTICAS||
|I200|0399908101|14032020|60,83|N||
|I250|1.100||50,00|D|0399908277|00001|Prov. NF 00000015 UTILIDADES DOMESTICAS||
|I250|4.101||9,00|D|0399908280|00032|Prov. ICMS a recolher NF 00000015 UTILIDADES DOMESTICAS||
|I250|4.102||0,33|D|0399908284|00036|Prov. PIS a recolher NF 00000015 UTILIDADES DOMESTICAS||
|I250|4.103||1,50|D|0399908286|00038|Prov. COFINS a recolher NF 00000015 UTILIDADES DOMESTICAS||
|I250|5.001||50,00|C|0399908278|00001|Prov. NF 00000015 UTILIDADES DOMESTICAS||
|I250|2.201||9,00|C|0399908279|00032|Prov. ICMS a recolher NF 00000015 UTILIDADES DOMESTICAS||
|I250|2.202||0,33|C|0399908283|00036|Prov. PIS a recolher NF 00000015 UTILIDADES DOMESTICAS||
|I250|2.103||1,50|C|0399908285|00038|Prov. COFINS a recolher NF 00000015 UTILIDADES DOMESTICAS||
|I200|0399908327|14032020|50,00|N||
|I250|1001||50,00|D|0399908369|00029|Recebimento NF 00000013 SILVIO SANTOS||
|I250|1.100||50,00|C|0399908370|00029|Recebimento NF 00000013 SILVIO SANTOS||
|I200|0399908398|14032020|120,00|N||
|I250|1234||120,00|D|0399908430|00004|Prov. SILVIO SANTOS||
|I250|2.001||120,00|C|0399908431|00004|Prov. SILVIO SANTOS||
|I200|0399908401|14032020|130,00|N||
|I250|2.001||120,00|D|0399908449|00028|Pagamento SILVIO SANTOS||
|I250|2.201||5,00|D|0399908451|00025|Juros pagos a SILVIO SANTOS||
|I250|1001||125,00|C|0399908450|00028|Pagamento SILVIO SANTOS||
|I200|0399911778|15032020|109,13|N||
|I250|1.100||52,50|D|0399912056|00001|Prov. NF 00000016 UTILIDADES DOMESTICAS||
|I250|1.100||200,00|D|0399912056|00001|Prov. NF 00000016 UTILIDADES DOMESTICAS||
|I250|4.101||9,36|D|0399912059|00032|Prov. ICMS a recolher NF 00000016 UTILIDADES DOMESTICAS||
|I250|4.101||35,64|D|0399912059|00032|Prov. ICMS a recolher NF 00000016 UTILIDADES DOMESTICAS||
|I250|3.101||0,52|D|0399912061|00034|Prov. IPI a recolher NF 00000016 UTILIDADES DOMESTICAS||
|I250|3.101||1,98|D|0399912061|00034|Prov. IPI a recolher NF 00000016 UTILIDADES DOMESTICAS||
|I250|4.102||0,34|D|0399912063|00036|Prov. PIS a recolher NF 00000016 UTILIDADES DOMESTICAS||
|I250|4.102||1,29|D|0399912063|00036|Prov. PIS a recolher NF 00000016 UTILIDADES DOMESTICAS||
|I250|4.103||1,56|D|0399912065|00038|Prov. COFINS a recolher NF 00000016 UTILIDADES DOMESTICAS||
|I250|4.103||5,94|D|0399912065|00038|Prov. COFINS a recolher NF 00000016 UTILIDADES DOMESTICAS||
|I250|5.001||52,50|C|0399912057|00001|Prov. NF 00000016 UTILIDADES DOMESTICAS||
|I250|2.201||9,36|C|0399912058|00032|Prov. ICMS a recolher NF 00000016 UTILIDADES DOMESTICAS||
|I250|2.201||35,64|C|0399912058|00032|Prov. ICMS a recolher NF 00000016 UTILIDADES DOMESTICAS||
|I250|1.1234||0,52|C|0399912060|00034|Prov. IPI a recolher NF 00000016 UTILIDADES DOMESTICAS||
|I250|1.1234||1,98|C|0399912060|00034|Prov. IPI a recolher NF 00000016 UTILIDADES DOMESTICAS||
|I250|2.202||0,34|C|0399912062|00036|Prov. PIS a recolher NF 00000016 UTILIDADES DOMESTICAS||
|I250|2.202||1,29|C|0399912062|00036|Prov. PIS a recolher NF 00000016 UTILIDADES DOMESTICAS||
|I250|2.103||1,56|C|0399912064|00038|Prov. COFINS a recolher NF 00000016 UTILIDADES DOMESTICAS||
|I250|2.103||5,94|C|0399912064|00038|Prov. COFINS a recolher NF 00000016 UTILIDADES DOMESTICAS||
|I200|0399964157|16032020|123,00|N||
|I250|9999||123,00|D|0399964750|00004|Prov. SILVIO SANTOS||
|I250|2.001||123,00|C|0399964751|00004|Prov. SILVIO SANTOS||
|I990|128|
|J001|0|
|J005|01032020|31032020|1||
|J900|TERMO DE ENCERRAMENTO|1|Diário Geral|KMEE INFORMATICA LTDA|163|01032020|31032020|
|J930|Contador da silva sauro|37244668899|Inventariante|312|12345||||||N|
|J930|Nome responsavel legal|37244668899|Diretor|203|||||||N|
|J990|6|
|9001|0|
|9900|0000|1|
|9900|0001|1|
|9900|0007|1|
|9900|0990|1|
|9900|9001|1|
|9900|9900|22|
|9900|9990|1|
|9900|9999|1|
|9900|I001|1|
|9900|I010|1|
|9900|I030|1|
|9900|I075|62|
|9900|I150|1|
|9900|I155|1|
|9900|I200|8|
|9900|I250|52|
|9900|I990|1|
|9900|J001|1|
|9900|J005|1|
|9900|J900|1|
|9900|J930|2|
|9900|J990|1|
|9990|25|
|9999|163|

EDITADO:

Este é um exemplo do arquivo SPED CONTÁBIL gerado para integração, hoje 99% dos softwares contábeis leem arquivos SPED, ai é "só" o contador fazer o trabalho dele.

marcelsavegnago commented 4 years ago

@mileo entendi.

github-actions[bot] commented 1 year ago

There hasn't been any activity on this issue in the past 6 months, so it has been marked as stale and it will be closed automatically if no further activity occurs in the next 30 days. If you want this issue to never become stale, please ask a PSC member to apply the "no stale" label.