Giter VIP home page Giter VIP logo

contaplus's Introduction

Contaplus

Importación de datos de Contaplus a Odoo.

Requisitos iniciales

  • Se ha utilizado Ubuntu 16.04 / 18.04 y python2 para ejecutar el script.
  • Instalar ydbf: ydbf
  • Instalar erppeek: pip install erppeek
  • Crear una carpeta llamada dbf en el lugar donde se vayan a ejecutar los scripts y dejar dentro los .dbf de contaplus

Datos que se importarán a Odoo

Los datos que importa el script import_cuentas_peek son los siguientes:

  • Cuentas contables
  • Clientes (Nombre, dirección y NIF)
  • Proveedores (Nombre, dirección y NIF)

Los datos que importa el script import_asientos_peek son los siguientes:

  • Asientos contables
  • Líneas de los asientos

Ejecución de scripts

#-*- coding: utf-8 -*-
import ydbf
import sys
import erppeek
import csv
import datetime
import requests
import os.path
import vatnumber

SERVER_origen = 'http://localhost:8069'
DATABASE_origen = 'base_de_datos'
USERNAME = 'username'
PASSWORD = 'password'

debug = True

# Conectar al ERP
origen = erppeek.Client(SERVER_origen, DATABASE_origen, USERNAME, PASSWORD)

Es necesario cambiar las variables SERVER_origen, DATABASE_origen, USERNAME y PASSWORD para que coincidan con nuestra configuración de Odoo.

  • SERVER_origen: Dirección de la instancia de Odoo que tenemos ejecutándose.
  • DATABASE_origen: Nombre de la base de datos donde se va a ejecutar la migración de datos.
  • USERNAME: Usuario con el que se va a conectar a Odoo (por ejemplo admin).
  • PASSWORD: Contraseña del usuario con el que se va a conectar a Odoo.

Una vez guardados los cambios en los dos ficheros, los ejecutaremos en este orden mediante la siguiente línea de comando:

  • python import_cuentas_peek.py
  • python import_asientos_peek.py

contaplus's People

Contributors

nachoserra-domatix avatar

Stargazers

 avatar  avatar  avatar

Watchers

James Cloos avatar domatix.com avatar Juan C. avatar  avatar

contaplus's Issues

[12.0] xmlrpclib.Fault: No se puede crear un asiento contable descuadrado.

Al ejecutar el script import_asientos_peek.py lanza esta excepción

Traceback (most recent call last):
  File "import_asientos_peek.py", line 161, in <module>
    importar()
  File "import_asientos_peek.py", line 153, in importar
    crearAsiento(apuntes)
  File "import_asientos_peek.py", line 143, in crearAsiento
    line_id = line_obj.create(line)
  File "/var/lib/odoo/.local/lib/python2.7/site-packages/erppeek.py", line 1238, in create
    new_id = self._execute('create', values, context=context)
  File "/var/lib/odoo/.local/lib/python2.7/site-packages/erppeek.py", line 826, in execute
    res = self._execute(obj, method, *params)
  File "/var/lib/odoo/.local/lib/python2.7/site-packages/erppeek.py", line 462, in <lambda>
    wrapper = lambda s, *args: s._dispatch(name, args)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1602, in __request
    verbose=self.__verbose
  File "/usr/lib/python2.7/xmlrpclib.py", line 1283, in request
    return self.single_request(host, handler, request_body, verbose)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1316, in single_request
    return self.parse_response(response)
  File "/usr/lib/python2.7/xmlrpclib.py", line 1493, in parse_response
    return u.close()
  File "/usr/lib/python2.7/xmlrpclib.py", line 800, in close
    raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault warning -- No se puede crear un asiento contable descuadrado.

Diferencia debe - haber:23.63

: ''>

Supongo que es debido a la restricción:

    @api.multi
    def assert_balanced(self):
        if not self.ids:
            return True

        # /!\ As this method is called in create / write, we can't make the assumption the computed stored fields
        # are already done. Then, this query MUST NOT depend of computed stored fields (e.g. balance).
        # It happens as the ORM makes the create with the 'no_recompute' statement.
        self._cr.execute('''
            SELECT line.move_id, ROUND(SUM(line.debit - line.credit), currency.decimal_places)
            FROM account_move_line line
            JOIN account_move move ON move.id = line.move_id
            JOIN account_journal journal ON journal.id = move.journal_id
            JOIN res_company company ON company.id = journal.company_id
            JOIN res_currency currency ON currency.id = company.currency_id
            WHERE line.move_id IN %s
            GROUP BY line.move_id, currency.decimal_places
            HAVING ROUND(SUM(line.debit - line.credit), currency.decimal_places) != 0.0;
        ''', [tuple(self.ids)])

        res = self._cr.fetchone()
        if res:
            raise UserError(
                _("Cannot create unbalanced journal entry.") +
                "\n\n{}{}".format(_('Difference debit - credit: '), res[1])
            )
        return True

account_move.py

He comentado las llamadas a la restricción en los métodos write, create y _post_validate, de momento parece funciona.
¿Es correcto? ¿Existe alguna otra solución?

Gracias.

Import Asientes

Buenas tardes,

Finalmente instalé Odoo 11.0 para importar todo lo de contaplus y facturaplus con tus scripts :)

Pero el script de import_asientos_peek.py me falla :(

Me sale este error:

Traceback (most recent call last):
File "import_asientos_peek.py", line 175, in
importar()
File "import_asientos_peek.py", line 167, in importar
crearAsiento(apuntes)
File "import_asientos_peek.py", line 88, in crearAsiento
move_id = move_obj.create(account_move)
File "/home/ndata/.local/lib/python2.7/site-packages/erppeek.py", line 1238, in create
new_id = self._execute('create', values, context=context)
File "/home/ndata/.local/lib/python2.7/site-packages/erppeek.py", line 826, in execute
res = self._execute(obj, method, *params)
File "/home/ndata/.local/lib/python2.7/site-packages/erppeek.py", line 462, in
wrapper = lambda s, *args: s._dispatch(name, args)
File "/usr/lib/python2.7/xmlrpclib.py", line 1602, in __request
verbose=self.__verbose
File "/usr/lib/python2.7/xmlrpclib.py", line 1283, in request
return self.single_request(host, handler, request_body, verbose)
File "/usr/lib/python2.7/xmlrpclib.py", line 1316, in single_request
return self.parse_response(response)
File "/usr/lib/python2.7/xmlrpclib.py", line 1493, in parse_response
return u.close()
File "/usr/lib/python2.7/xmlrpclib.py", line 800, in close
raise Fault(**self._stack[0])
xmlrpclib.Fault: <Fault The operation cannot be completed: another model requires the record being deleted. If possible, archive it instead.

Model: Account Entry (account.move), Constraint: account_move_journal_id_fkey
None: 'Traceback (most recent call last):\n File "/opt/odoo/odoo/odoo/service/model.py", line 97, in wrapper\n return f(dbname, *args, **kwargs)\n File "/opt/odoo/odoo/odoo/service/model.py", line 179, in execute\n res = execute_cr(cr, uid, obj, method, *args, **kw)\n File "/opt/odoo/odoo/odoo/service/model.py", line 168, in execute_cr\n return odoo.api.call_kw(recs, method, args, kw)\n File "/opt/odoo/odoo/odoo/api.py", line 697, in call_kw\n return call_kw_model(method, model, args, kwargs)\n File "/opt/odoo/odoo/odoo/api.py", line 682, in call_kw_model\n result = method(recs, *args, **kwargs)\n File "/opt/odoo/odoo/addons/account/models/account_move.py", line 127, in create\n move = super(AccountMove, self.with_context(check_move_validity=False, partner_id=vals.get('partner_id'))).create(vals)\n File "/opt/odoo/odoo/odoo/models.py", line 3452, in create\n record = self.browse(self._create(old_vals))\n File "/opt/odoo/odoo/odoo/models.py", line 3545, in _create\n cr.execute(query, tuple(u[2] for u in updates if len(u) > 2))\n File "/opt/odoo/odoo/odoo/sql_db.py", line 155, in wrapper\n return f(self, *args, **kwargs)\n File "/opt/odoo/odoo/odoo/sql_db.py", line 232, in execute\n res = self._obj.execute(query, params)\npsycopg2.IntegrityError: insert or update on table "account_move" violates foreign key constraint "account_move_journal_id_fkey"\nDETAIL: Key (journal_id)=(3) is not present in table "account_journal".\n\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File "/opt/odoo/odoo/odoo/service/wsgi_server.py", line 124, in wsgi_xmlrpc\n result = odoo.http.dispatch_rpc(service, method, params)\n File "/opt/odoo/odoo/odoo/http.py", line 118, in dispatch_rpc\n result = dispatch(method, params)\n File "/opt/odoo/odoo/odoo/service/model.py", line 39, in dispatch\n res = fn(db, uid, *params)\n File "/opt/odoo/odoo/odoo/service/model.py", line 157, in wrapper\n raise ValidationError(msg)\nodoo.exceptions.ValidationError: ('The operation cannot be completed: another model requires the record being deleted. If possible, archive it instead.\n\nModel: Account Entry (account.move), Constraint: account_move_journal_id_fkey', None)\n'>

Podrías ayudarme? Lo estoy haciendo con Python2.7 y Ubuntu18 aunque tengo el 3 instalado también.

Muchas gracias

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.