lainventoria / tesoro Goto Github PK
View Code? Open in Web Editor NEWSistema para la Gestión Financiera de negocios
Home Page: https://forja.lainventoria.com.ar/lainventoria/tesoro
Sistema para la Gestión Financiera de negocios
Home Page: https://forja.lainventoria.com.ar/lainventoria/tesoro
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?
tener botones interactivos en la cabecera de los listados que apliquen filtros o los ordenen.
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.
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
Se tiene que calcular el saldo cada vez que se modifique la factura
Se tiene que bloquear la edicion de una factura ya cancelada
Podremos agregar un boton/funcion para des-cancelar una factura con saldo 0 (no creo que vaya a usarse mucho, pero ...) ?
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
las vistas no están tomando en cuenta la moneda de los importes no?
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.
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:
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.
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.
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
mmm eso
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
quitar Cajas/Arqueos de Caja y Bancos
quitar Configuracion/Tipos de Retencion
esto permite cambiar la fecha de un campo bloqueado. hay que bloquear tambien el icono.
estoy laburando en esto:
no me queda claro si generan movimientos y si los cheques van a tener un tercero asociado
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?
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.
apagamos el boton?
hacemos una validacion?
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
el home page (http://localhost:3000/obras) no carga por problemas de moneda. revisar los subtotales que se calculan en estas vistas
che no hay relacion entre cajas y recibos/facturas, como seria? (capaz me estoy olvidando de algo que ya charlamos...)
el objetivo es que al ingresar factura se pueda comenzar a tipear el nombre del tercero y nos aparezca un listado de aquellos con nombres coincidentes en la tabla
encontre esto, https://github.com/crowdint/rails3-jquery-autocomplete-app
@mauriciopasquier lo conoces? que recomendas?
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?
Cual es el path para listar todos los recibos existentes de un cierto tipo (cobro/pago) independientemente de la factura a la que pertenecen?
@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??
a menos que no se cumpla que factura necesita sí o sí un tercero
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:
error en la ruta para ver un cheque, ahora es 'chequ_path' y debería ser 'cheque_path'
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).
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?
:O recien veo el link automatico a CONTRIBUTING
voy a hacer la relacion recibo has_many movimientos
nota mental: revisar por qué apareció un "factura creada exitosamente" sin haber creado ninguna factura
Los balances tendrían que incluir según situación
Los movimientos deberían tener situación también...
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í
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.
cambios de moneda / transferencias
cheques
retenciones (con selector de adjunto)
dummy data no funcionó, vamos a probar con factory girl así @m4tu5 tiene algo lindo para mostrar a $cliente
El descriptivo del recibo es una cadena con la causa que genera el movimiento de dineros
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
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í?
@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
deberiamos rollbackear los movimientos?
https://github.com/jenseng/hair_trigger
mucho mejor que la mugre que estaba haciendo con callbacks en factura.saldo <3
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í..
hay que multiplicar los montos por -1 cuando la situacion sea "pago"
pestañas para cada tipo de medio de pago?
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
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
retención necesita sí o sí el documento y el monto?
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.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.