New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

snappler_contable_multicurrency

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

snappler_contable_multicurrency

  • 2.2.0
  • Rubygems
  • Socket score

Version published
Maintainers
1
Created
Source

SnapplerContable

Esta gema agrega a una aplicacion la capacidad de manejar cuentas contables con el modelo teorico economico.

Instalacion

Agregar esta linea al Gemfile

gem "snappler_contable_multicurrency"

Ejecutar

$ bundle install

Después de instalar se deben correr estos comandos

$ rails g snappler_contable:initializer

Esto va a crear el achivo:

# Configuracion de constantes para el sistema.
config/initializers/snappler_contable.rb
$ rails g snappler_contable:migrate

Esto va a crear las migraciones:

#Crea la estructura y crea cuentas base 'activo', 'pasivo', 'patrimonio_neto', 'resultado_positivo', 'resultado_negativo'
aaaammdd_snappler_contable_migrate.rb

#Agrega columnas para USD, EUR y BRL
aaaammdd_snappler_contable_add_currencies.rb

#Carga cuentas DUMMY (Esta se puede borrar si no hace falta)
aaaammdd_snappler_contable_app_ledger_accounts.rb
$ rake db:migrate  

Y listo

Extra

$ rails g snappler_contable:new_currency

Esto crea una migracion simulando una nueva moneda, ejemplo el YEN

#Crea la columna en 'ledger_accounts' y agrega la entidad a 'ledger_currencies'
aaaammdd_snappler_contable_new_currency.rb

Problemas en Rails

Migrations

Versión de ActiveRecord

Si muestra un error como este al migrar:

Directly inheriting from ActiveRecord::Migration is not supported. Please specify the Rails release

Se debe agregar la versión de Rails en la definición de la superclase en las migraciones:

# /db/migrate/aaaammdd_snappler_contable_migrate

class SnapplerContableMigrate <ActiveRecord::Migration
  ...

Agregar:

# /db/migrate/aaaammdd_snappler_contable_migrate

class SnapplerContableMigrate <ActiveRecord::Migration[5.1] #o lo que corresponda
  ...
Error crando cuentas base (activo, pasivo...)

Rails agregó un control ---```bash $ rails g snappler_contable:initializer

Esto va a crear el achivo:
```bash
# Configuracion de constantes para el sistema.
config/initializers/snappler_contable.rb
$ rails g snappler_contable:migrate

Esto va a crear las migraciones:

#Crea la estructura y crea cuentas base 'activo', 'pasivo', 'patrimonio_neto', 'resultado_positivo', 'resultado_negativo'
aaaammdd_snappler_contable_migrate.rb

#Agrega columnas para USD, EUR y BRL
aaaammdd_snappler_contable_add_currencies.rb

#Carga cuentas DUMMY (Esta se puede borrar si no hace falta)
aaaammdd_snappler_contable_app_ledger_accounts.rb
$ rake db:migrate  

Y listo

Extra

$ rails g snappler_contable:new_currency

Esto crea una migracion simulando una nueva moneda, ejemplo el YEN

#Crea la columna en 'ledger_accounts' y agrega la entidad a 'ledger_currencies'
aaaammdd_snappler_contable_new_currency.rb

Problemas en Rails

Migrations

Versión de ActiveRecord

Si muestra un error como este al migrar:

Directly inheriting from ActiveRecord::Migration is not supported. Please specify the Rails release

Se debe agregar la versión de Rails en la definición de la superclase en las migraciones:

# /db/migrate/aaaammdd_snappler_contable_migrate

class SnapplerContableMigrate <ActiveRecord::Migration
  ...

Agregar:

# /db/migrate/aaaammdd_snappler_contable_migrate

class SnapplerContableMigrate <ActiveRecord::Migration[5.1] #o lo que corresponda
  ...
Error crando cuentas base (activo, pasivo...)

Rails agregó un control ---```bash $ rails g snappler_contable:initializer

Esto va a crear el achivo:
```bash
# Configuracion de constantes para el sistema.
config/initializers/snappler_contable.rb
$ rails g snappler_contable:migrate

Esto va a crear las migraciones:

#Crea la estructura y crea cuentas base 'activo', 'pasivo', 'patrimonio_neto', 'resultado_positivo', 'resultado_negativo'
aaaammdd_snappler_contable_migrate.rb

#Agrega columnas para USD, EUR y BRL
aaaammdd_snappler_contable_add_currencies.rb

#Carga cuentas DUMMY (Esta se puede borrar si no hace falta)
aaaammdd_snappler_contable_app_ledger_accounts.rb
$ rake db:migrate  

Y listo

Extra

$ rails g snappler_contable:new_currency

Esto crea una migracion simulando una nueva moneda, ejemplo el YEN

#Crea la columna en 'ledger_accounts' y agrega la entidad a 'ledger_currencies'
aaaammdd_snappler_contable_new_currency.rb

Uso

Traer cuentas

xxxx = LedgerAccount.get('Nombre de cuenta')
Ejemplo:
activo = LedgerAccount.get('activo')
pasivo = LedgerAccount.get('pasivo')
patrimonio_neto = LedgerAccount.get('patrimonio_neto')
resultado_positivo = LedgerAccount.get('resultado_positivo')
resultado_negativo = LedgerAccount.get('resultado_negativo') (*)
(*) LedgerAccount.get('resultado_negativo') == LedgerAccount.get('Resultado Negativo')

Es similar, ya que el parametro se trata poniendo en minuscula y cambiando los " " por "_"

Agregar cuentas hijas

Agregar cuentas hija

#Cuenta padre
xxxx = LedgerAccount.get('XXXX')

#Agrego YYYY como hija de XXXX 
xxxx.add_child("YYYY", "yyyy")
Ejemplo:
activo = LedgerAccount.get('activo')
disponibilidades = activo.add_child("Disponibilidades", "disponibilidades")
caja = disponibilidades.add_child("Caja", "caja")
banco = disponibilidades.add_child("Banco", "banco")

dejando una estructura asi:

    1 activo
        1.1 disponibilidades
            1.1.1 caja
            1.1.2 banco

Agregar cuentas hija con objeto relacionado

#Cuenta padre
xxxx = LedgerAccount.get('XXXX')

#En este caso lo relaciono ademas con un objeto
xxxx.add_child("ZZZZ", "zzzz", objeto_owner)
Ejemplo:
banco = LedgerAccount.get('banco')

banco_1 = Bank.find(1)
banco_acc_1 = banco.add_child(banco_1.name, "banco", banco_1)

banco_2 = Bank.find(2)
banco_acc_2 = banco.add_child(banco_2.name, "banco", banco_2)

dejando una estructura asi:

    1 activo
        1.1 disponibilidades
            1.1.1 caja
            1.1.2 banco
                1.1.2.1 banco_1
                1.1.2.2 banco_2

Generar Operaciones

entryX = SnapplerContable.op(array_debe(*), array_haber(*), hash(**))
(*) La estructura del array_debe o array_haber, es la misma, es un array de hashes, cada hash tiene la sig estructura:
{
    account: cuenta_x,                  # (LedgerAccount)       
    value: XXX.XX,                      # (puede tener hasta 2 decimales)
    ledger_currency: 'XXX',             #Opc* (Permite código ['ARS', 'USD', etc], o id [1,2,3], o entidad(LedgerCurrency), (Si no especifico la moneda, usa por defecto la configurada en el sistema)
    represent_value: XXX.XX,            # (puede tener hasta 2 decimales)
    represent_ledger_currency: 'XXX',   #Opc* (Permite código ['ARS', 'USD', etc], o id [1,2,3], o entidad(LedgerCurrency), (Si no especifico la moneda, usa por defecto la configurada en el sistema)
    currency_change: XXX.XX,            # (puede tener hasta 2 decimales)
}
(**) El hash es opcional y su estructura es:
{
    code_name: '',                    #Opc* (Código que se le asigna a la entry, sirve para filtrar entries por nombre)
    owner: ''                         #Opc* (Indica el objeto que genera la Entry)
    datetime: DateTime                #Opc* (Por defecto si no se manda toma DateTime.now)
}
Ejemplo:
Movimiento Comun
#Incremento de deuda de cliente_1 por $10

entry1 = SnapplerContable.op([{account: cliente_1, value: 100}], 
                             [{account: ventas, value: 100}])
Movimiento en otra divisa
#Incremento de deuda de cliente_1 por u$s100

entry2 = SnapplerContable.op([{account: cliente_1, value: 100, ledger_currency: 'USD'}], 
                             [{account: ventas, value: 100, ledger_currency: 'USD'}])
Movimiento con variacion de divisas 1
#Decremento de deuda de cliente_1 por u$s10
#(El cliente en realidad paga $152, que es lo que queda en la caja, pero el valor representa un pago por u$s10 a una cotizacion de 15.2)

entry3 = SnapplerContable.op([{account: caja, value: 152, ledger_currency: 'ARS'}], 
                             [{account: cliente_1, value: 152, ledger_currency: 'ARS', represent_value: 10, represent_ledger_currency: 'USD', currency_change: 15.2}])
Movimiento con variacion de divisas 2
#cambio de divisa sobre caja

entry4 = SnapplerContable.op([{account: caja, value: 1520, ledger_currency: 'ARS'}],  
                             [{account: caja, value: 1520, ledger_currency: 'ARS', represent_value: 100, represent_ledger_currency: 'USD', currency_change: 15.2}])

Consultas de saldo a una cuenta

#Cuenta a consultar
xxxx = LedgerAccount.get('XXXX')

#Balance de la cuenta xxxx en la moneda YYY
xxxx.balance_YYY(hash(*))

#Balance de la cuenta xxxx en todas las monedas
xxxx.balance(hash(*))
(*) El hash es opcional y su estructura es:
{
    from: '',       #Opc* (Fecha desde)
    to: DateTime    #Opc* (Fecha hasta)
}
Ejemplo:
cliente_1 = LedgerAccount.get('cliente_1')

#----------------------------- Consulta de saldo en $ al momento
cliente_1.balance_ars

#----------------------------- Consulta de saldo en u$s al momento
cliente_1.balance_usd

#----------------------------- Consulta de saldo en $ a partir del 20/10/2017
cliente_1.balance_ars({from: '20/10/2017'})

#----------------------------- Consulta de saldo en u$s hasta el 20/10/2017
cliente_1.balance_usd({to: '20/10/2017'})    

#----------------------------- Consulta de saldo en u$s a partir del 20/10/2017 hasta el 22/10/2017
cliente_1.balance_usd({from: '20/10/2017', to: '22/10/2017'})    

#----------------------------- Consulta de saldo en todas las monedas
cliente_1.balance

#----------------------------- Consulta de saldo en todas las monedas a partir del 20/10/2017 hasta el 22/10/2017
cliente_1.balance({from: '20/10/2017', to: '22/10/2017'}) 

Helper que imprime el arbol de cuentas

<%= print_accounts_tree %>

RubyGems

Esta gema está publicada en RubyGems:

  • https://rubygems.org/gems/snappler_contable_multicurrency

user: juan.labattaglia@snappler.com

Actualizacion

Una vez que hay una nueva versión, modificar lib/snappler_contable/version.rb

Luego ejecutar:

gem build snappler_contable_multicurrency.gemspec
gem push snappler_contable_multicurrency-[VERSION].gem

FAQs

Package last updated on 11 Jul 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc