GithubHelp home page GithubHelp logo

lainventoria / tesoro Goto Github PK

View Code? Open in Web Editor NEW
2.0 4.0 1.0 1.74 MB

Sistema para la Gestión Financiera de negocios

Home Page: https://forja.lainventoria.com.ar/lainventoria/tesoro

Vim Script 0.04% Ruby 68.38% JavaScript 3.12% CoffeeScript 0.25% CSS 0.71% HTML 27.49%

tesoro's Introduction

# Entorno de desarrollo

  • Instalar gemas (correr cada vez que haya un cambio en Gemfile)

    bundle install
    
  • Migrar base de datos (después de cada cambio en la base)

    bundle exec rake db:migrate
    
  • Generar datos de relleno

    bundle exec rake db:data:load_dir dir=datos_de_prueba
  • Correr servidor de prueba

    bundle exec rails s
    

tesoro's People

Contributors

b4zz4 avatar fauno avatar m4tu5 avatar mauriciopasquier avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

eruizpy

tesoro's Issues

manual de usuario

como lo hacemos?

les parece hacer una nueva carpeta/repo, donde pongamos los manuales en markdown y despues usamos jekyll para servirlos

mpj, existe algo parecido a jekyll en rails que podamos usar para esto (asi nos ahorramos correr un segundo servidor).

recibos

@fauno esto es para distinguir si es nuestro o ajeno?

t.boolean  "emitido"
t.boolean  "recibido"

es posible que sea emitido y recibido a la vez??

pasamanos de cheques

estoy laburando en esto:

  • los cheques tienen un padre_id que es otro cheque
  • cuando se hace un pasamanos, se genera un cheque nuevo con el padre_id seteado al cheque que se pasó
  • se marca el cheque original como pasado de mano

no me queda claro si generan movimientos y si los cheques van a tener un tercero asociado

actualizar dropdowns despues de seleccionar un valor

en la vista de crear/editar factura, hay en el formulario 2 dropdowns, uno para seleccionar el 3ro y otro para el CUIT.

se busca que al seleccionar un valor en uno de los campos (cualquiera sea), se actualice el otro con el valor correspondiente.

los dropdowns los vinculé ambos a tercero_id y esto hace que los rails los renderize con el mismo id, lo que entiendo no esta bien.

deje unas lineas de js en app/assets/javascripts/facturas.js que son mi primer intento, pero de momento no funcionan.

la monetizacion de factura no funca

@m4tu5 estaba probando crear una factura con moneda USD y por mas que se cargue la moneda correcta en los campos *_moneda, los atributos monetizados siempre se crean como ARS. factura.saldo da un error al calcular el importe porque intenta restar ars a usd

rutas - facturas

rake routes CONTROLLER=facturas:

cobros_facturas GET    /facturas/cobros(.:format)   facturas#cobros
 pagos_facturas GET    /facturas/pagos(.:format)    facturas#pagos
       facturas GET    /facturas(.:format)          facturas#index
                POST   /facturas(.:format)          facturas#create
    new_factura GET    /facturas/new(.:format)      facturas#new
   edit_factura GET    /facturas/:id/edit(.:format) facturas#edit
        factura GET    /facturas/:id(.:format)      facturas#show
                PATCH  /facturas/:id(.:format)      facturas#update
                PUT    /facturas/:id(.:format)      facturas#update
                DELETE /facturas/:id(.:format)      facturas#destroy

Ya lo dije antes, pero para mí, facturas/cobros y facturas/pagos se resuelve
mejor con un filtro por parámetros (facturas y facturas?tipo=pagos van al
index y se filtran ahí mismo, es una boludez y no tenemos que andar haciendo
acciones de más y renderizando otras). Además es más REST.. si es sólo un
filtro de las facturas.

Otra cosa: las facturas se ven agrupadas bajo la obra en algún momento?
O sea interesa ver las facturas relacionadas con una obra, o sólo se manejan
así como objetos independientes?

muerte y destrucción y asociaciones

Hay que pensar qué pasa con las asociaciones de cada modelo cuando lo destruís. Factura debería destruir sus recibos por ejemplo? Recibo podría destruir sus movimientos a menos que tengan caja asociada? Cosas así

validaciones de recibo y factura

@fauno

Las validaciones de recibo están mal. Primero, me parece que deberían ir en factura (al agregar el recibo). Segundo, hace al recibo inválido en algunos casos incorrectamente, por ejemplo si es el único recibo y tiene un importe de más de la mitad más del importe total de la factura

error en la validación de recibos/facturas (de nuevo)

corré los tests así: rake TESTOPTS="--seed 60985"

± feature/rutas mauricio@turing cp$ rake test TESTOPTS="--seed 60985"
[deprecated] I18n.enforce_available_locales will default to true in the future. If you really want to skip validation of your locale you can set I18n.enforce_available_locales = false to avoid this message.
Run options: --seed 60985

# Running tests:

................................................................E.............

Finished tests in 2.153736s, 36.2161 tests/s, 81.7185 assertions/s.

  1) Error:
RecibosControllerTest#test_accede_a_editar:
ActiveRecord::RecordInvalid: La validación falló: La factura ya fue cancelada, El importe es mayor al saldo -0,01
    test/controllers/recibos_controller_test.rb:6:in `block in <class:RecibosControllerTest>'

78 tests, 176 assertions, 0 failures, 1 errors, 0 skips

terceros

@fauno

por qué el (mal) plural?

t.string "direccions"

y además, se puede guardar un tercero sin ningún dato. Y no hiciste la fábrica para los tests.

filtro para obras -- error al cambiar de obra

al cambiar la obra desde la vista de una factura, intenta acceder al listado de facturas de esa obra, sin tomar en cuenta la situacion (cobro/pago) lo que resulta en error

ej:

  • desde facturas/2, cambiar el selector de obra en la barra superior.
  • el error que presenta es que no existe la ruta obras/x/facturas ... debería ser obras/x/facturas/situacion

implementar modelo recibo-movimiento(causa)-caja

la idea es que cada movimiento tenga un recibo y una caja asociadas, en todas las posibles situaciones.

el movimiento, ademas, tiene asociado una causa, que lo justifica/respalda.
por causa nos referimos a:

  • en el caso de efectivo, a los billetes que cambian de manos identificados por si nro. de serie
  • en el caso de transferencias, al certificado del banco que la respalda (id de transferencia)
  • en el caso de cheque propio o de terceros, el id del cheque y la informacion que este contiene
  • en el caso de una retención, al PDF emitido por el contador que se le entrega al cliente al pagar

dado que no nos interesa registrar los nros. de serie del efectivo, así como tampoco el id de la transferencia bancaria, los modelos de efectivo y banco no tendrán asociadas tablas. Si
lo harán los modelos de chequera y retención.

TODO hacer un diagrama para que se entienda mejor.

vistas faltantes

cambios de moneda / transferencias
cheques
retenciones (con selector de adjunto)

js @ assets no funcionan en Chromium

Los scripts en assets no funcionan cuando se usa Chrome/Chromium (si funcionan en FireFox).

Los mismos scripts funcionaban en ambos navegadores cuando estaban incluidos en la vista.

relacionado con #41 y probablemente con el problema que teniamos al renderizar nested-partials (que también se veían bien en FireFox y no en Chrome)

@mauriciopasquier , nos podras dar una mano con esto que ya venimos dando muchas vueltas y no logramos solucionarlo

rutas - obras

rake routes CONTROLLER=obras:

     root GET    /                         obras#index
    obras GET    /obras(.:format)          obras#index
          POST   /obras(.:format)          obras#create
 new_obra GET    /obras/new(.:format)      obras#new
edit_obra GET    /obras/:id/edit(.:format) obras#edit
     obra GET    /obras/:id(.:format)      obras#show
          PATCH  /obras/:id(.:format)      obras#update
          PUT    /obras/:id(.:format)      obras#update
          DELETE /obras/:id(.:format)      obras#destroy

Pensemos qué rutas hacen falta y cuáles no. Creo que obra es lo más top-level
pero ahora estamos tratando todas las demás así..

filtro por obras en todas las vistas

  • dropdown en barra navegacion para seleccionar una obra o todas
  • metodos/scripts para actualizar la vista cuando cambie la obra seleccionada
  • columna 'obra' en todos los listados (ocultar cuando haya una obra selecionada usando stylesheets?)

error al anidar vistas

en este momento se puede ver dentro de una obra X una factura que corresponde a la obra Y
ej:

factura A es parte de obra Y, pero se puede acceder a ella via
/obras/X/factura/A

Saldos de facturas y bloqueo de modificaciones de recibos

Cuando una factura tiene saldo cero, se asume como cancelada, y ya no se permite modificar ningun recibo asociado, pero si se permite modificar la factura.

Si se modifica la factura con nuevos montos, el saldo no se recalcula y queda el anterior.

Al no poder ingresar nuevos recibos, el saldo nunca se corrige.

Creo que

  1. Se tiene que calcular el saldo cada vez que se modifique la factura

  2. Se tiene que bloquear la edicion de una factura ya cancelada

  3. Podremos agregar un boton/funcion para des-cancelar una factura con saldo 0 (no creo que vaya a usarse mucho, pero ...) ?

rutas - cheques

error en la ruta para ver un cheque, ahora es 'chequ_path' y debería ser 'cheque_path'

agregar saldo a cajas?

si tenemos un campo saldo en las facturas, no deberiamos tener otro en las cajas?

o vamos a calcular el saldo de cada caja con caja.total(es) cada vez que carge una vista?
no se volverá pesado con muchos movimientos?

@mauriciopasquier , vos como te manejas en estos casos?

Error al ingresar montos con . en lugar de ,

Si se ingresa una cantidad usando el '.' como separador decimal, da un error, y cambia el '.' por una ',' en el formulario, pero no graba la transaccion.

Estaria mejor que corrigiese el error automaticamente, sin avisar al usuario, y que grabase el formulario.

Balances

Los balances tendrían que incluir según situación

  • Todos los saldos de facturas
  • Todos los montos de recibos
  • Todos los montos de cheques en chequera
  • Todos los montos de movimientos en distintas monedas, por caja

Los movimientos deberían tener situación también...

js y css ordenados

Lo intente asi para el js del selector de fechas (date-picker) y no funciono.
Primero intente en facturas.js, despues en application.js (porque el mismo
script vale también para los recibos). No funciono en ninguno de los dos
lugares. Por eso ahora estos scripts estan en los .erb de las vistas

monedas?

las vistas no están tomando en cuenta la moneda de los importes no?

facturas

@fauno misma pregunta que en #2

t.boolean :emitida
t.boolean :recibida

rutas - recibos

rake routes CONTROLLER=recibos:

    factura_recibos GET    /facturas/:factura_id/recibos(.:format)          recibos#index
                    POST   /facturas/:factura_id/recibos(.:format)          recibos#create
 new_factura_recibo GET    /facturas/:factura_id/recibos/new(.:format)      recibos#new
edit_factura_recibo GET    /facturas/:factura_id/recibos/:id/edit(.:format) recibos#edit
     factura_recibo GET    /facturas/:factura_id/recibos/:id(.:format)      recibos#show
                    PATCH  /facturas/:factura_id/recibos/:id(.:format)      recibos#update
                    PUT    /facturas/:factura_id/recibos/:id(.:format)      recibos#update
                    DELETE /facturas/:factura_id/recibos/:id(.:format)      recibos#destroy
     cobros_recibos GET    /recibos/cobros(.:format)                        recibos#cobros
      pagos_recibos GET    /recibos/pagos(.:format)                         recibos#pagos
            recibos GET    /recibos(.:format)                               recibos#index
                    POST   /recibos(.:format)                               recibos#create
         new_recibo GET    /recibos/new(.:format)                           recibos#new
        edit_recibo GET    /recibos/:id/edit(.:format)                      recibos#edit
             recibo GET    /recibos/:id(.:format)                           recibos#show
                    PATCH  /recibos/:id(.:format)                           recibos#update
                    PUT    /recibos/:id(.:format)                           recibos#update
                    DELETE /recibos/:id(.:format)                           recibos#destroy

este sale en el pull #33, pero seguro que no hay ninguna otra extra?

         new_recibo GET    /recibos/new(.:format)                           recibos#new

por ejemplo, me da la impresión de que no quieren usar las rutas anidadas.
Entonces, las sacamos o las aplanamos?

Con shallow (aplanar) en facturas queda así:

   factura_recibos GET    /facturas/:factura_id/recibos(.:format)     recibos#index
                   POST   /facturas/:factura_id/recibos(.:format)     recibos#create
new_factura_recibo GET    /facturas/:factura_id/recibos/new(.:format) recibos#new
       edit_recibo GET    /recibos/:id/edit(.:format)                 recibos#edit
            recibo GET    /recibos/:id(.:format)                      recibos#show
                   PATCH  /recibos/:id(.:format)                      recibos#update
                   PUT    /recibos/:id(.:format)                      recibos#update
                   DELETE /recibos/:id(.:format)                      recibos#destroy

Pero ustedes quieren listas de recibos generales (un index de todos los
recibos, no?) asique las desanidaría y ya.

Acá también sacaría pagos y cobros.

Cache de parciales renderizados

Problema con la renderizacion de views/recibos/_list.html.erb
El mismo parcial se renderiza en facturas/# y en recibos/
Se ajusta el CSS entre las vistas usando nested-layouts.

Los ajustes se aplican bien al CSS, pero no se renderizan. Pareciera que hay un cahce del partial hecho en algun lado y no se actualiza la vista.

Al refrescar la pagina si se actualiza.

rutas - cajas

rake routes CONTROLLER=cajas:

    obra_cajas GET    /obras/:obra_id/cajas(.:format)          cajas#index
               POST   /obras/:obra_id/cajas(.:format)          cajas#create
 new_obra_caja GET    /obras/:obra_id/cajas/new(.:format)      cajas#new
edit_obra_caja GET    /obras/:obra_id/cajas/:id/edit(.:format) cajas#edit
     obra_caja GET    /obras/:obra_id/cajas/:id(.:format)      cajas#show
               PATCH  /obras/:obra_id/cajas/:id(.:format)      cajas#update
               PUT    /obras/:obra_id/cajas/:id(.:format)      cajas#update
               DELETE /obras/:obra_id/cajas/:id(.:format)      cajas#destroy

Acá cajas se accede siempre a través de una obra. Es así?

Factura, creacion y validaciones

En el branch feature/gui-autocomlete-git-fail ya asocie los campos de terceropara que se actualicen juntos y se esta guardando el Tercero_id en un campo hidden, pero falta y no se como hacer bien lo siguiente

  • Cuando tercero_id este vacio y nombre_tercero y cuit_tercero llenos, crear el tercero y asociarlo
  • Cuando este el tercero_id creo que funciona bien
  • Validar los campos

mmm eso

filtros y ordenamientos

tener botones interactivos en la cabecera de los listados que apliquen filtros o los ordenen.

  • en terceros, poder listar clientes, proveedores, todos
  • en cheques, poder listar cada posible estado (diferentes botones para propios/terceros)
  • en retenciones, poder listar cada posible estado (creo que aun no agregamos este campo)
  • en facturas, poder ordenar por fecha, monto, tercero
  • en recibos, poder ordenar por fecha, monto, tercero
  • en cheques, poder ordenar por fecha_vencimiento, monto
  • en movimientos (cuando los haya), poder ordenar por fecha, monto

Convertir Factura.saldo en atributo

Vamos a tener que empezar a filtrar por saldo para saber cuáles facturas ya están canceladas y si mantenemos el saldo como un método mostrar una lista de facturas se va a convertir en F^2 consultas.

Mejor guardarlo como atributo no? Se calcularía cada vez que se inserta o actualiza un recibo.

Paths para recibos

  1. Al listar los recibos pertenecientes a una factura con una URL como este:
    http://localhost:3000/facturas/55777060/recibos
    Se muestran todos los recibos existentes para todas las facturas.
    No funciona el filtro del controlador?

  2. Cual es el path para listar todos los recibos existentes de un cierto tipo (cobro/pago) independientemente de la factura a la que pertenecen?

vistas, cache, sesión

nota mental: revisar por qué apareció un "factura creada exitosamente" sin haber creado ninguna factura

selector de obra en facturas y cuentas

agregar un selector de obras en el formulario de factura que muestre el nombre de la obra, pero que almacene el id en @factura.obra_id

si la obra ya esta establecida en la URL, tomar el valor de ahí

vamos a usar lo mismo para cuentas/_form, con lo que podemos hacer un parcial con el dropdown, como hicimos para el selector de moneda en views/layouts/_selector_moneda que se usa en view/acturas/_form

rutas - cuentas

rake routes CONTROLLER=cuentas

     Prefix Verb   URI Pattern                 Controller#Action
    cuentas GET    /cuentas(.:format)          cuentas#index
            POST   /cuentas(.:format)          cuentas#create
 new_cuenta GET    /cuentas/new(.:format)      cuentas#new
edit_cuenta GET    /cuentas/:id/edit(.:format) cuentas#edit
     cuenta GET    /cuentas/:id(.:format)      cuentas#show
            PATCH  /cuentas/:id(.:format)      cuentas#update
            PUT    /cuentas/:id(.:format)      cuentas#update
            DELETE /cuentas/:id(.:format)      cuentas#destroy

Mismas preguntas que para cajas, se acceden así genéricamente o interesa que
estén relacionadas con una obra?

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.