snappler_contable 0.1.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- YTk2MmZmNzQ2YThhMTgwMThjZDhmZjgxYWY3MzU1NzkwMWQ1YmI3ZQ==
4
+ YjEzYjJkMzE4ZjE2N2FlMWNkZmRiNmY5MGY2NDJkZmUxOTcyNDU2MQ==
5
5
  data.tar.gz: !binary |-
6
- M2FmN2YyNzY1MDk5NWI2YjdmYjUxMDRmMWQ3OWQ5YWMxYTBkZDdhYw==
6
+ ZTUxMzdmYzM1MTVjYTVjYWQ2ZTc4MzcxZTAwY2ZhODc0YTQ3MDNjYQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NGU2OTJiZmU2MzQ5NmVhN2NmMmJiMDJlYmU3MTVmZWI0ZjJhNjhmMDQ0MDQy
10
- MjI3ODg0ZmIwMWFiY2FjNjBjNjBmYjgyMjMyYWQwOGIzZjk1Y2Y5NTJjOGQ1
11
- NjBiMGU1ZWUyNzQ4NTI2YWViMTg1MGI2NjEzMTE5NGEwNmY2NzM=
9
+ YTc3M2NiYzA0YjI4OGQ1N2Q2ZGVmZDA0MzYwMjI1YmM5Nzk2YTA4ZjIzNjBj
10
+ NGM5MTI4MjNhMzViMTRjZGQ2ZGZkMThhZGE1YWJjYTM3NDkzYWQzZWEyMWNk
11
+ YTQ4YWVmYzBjMzk4MmU1ZDZmMWU1ODYxMmEyZmM5NWM2ZDc4ZDI=
12
12
  data.tar.gz: !binary |-
13
- YTcyMTI1OWQ0MTI4NDdjY2QzNmQ0NjA1NzBiMTU1ODZjOGExNTVjYjE1MzY4
14
- MjA0MmYxMDJlYzY3NTE1NzE4MzcwM2I3OTU0OTYwODI2NWRkYmE0OTNkNzlk
15
- ZDY1MmM2Y2Y3NGY1NzVjNTdjZDQ5ZTE0NGM1ZGU0N2QxNGMzNDA=
13
+ M2QyZmRiNDE3YjUxZTRmN2E1NWUxYjc4MzZhYjEzNDIxMjE3NDc3ZWU1MzZi
14
+ Y2UzMWMzNzBiNDk4Zjk3MzMzM2IyODY2YjZhNzI0MDc0NzQyNGNkZTJlZTQ1
15
+ NDI4MjJjNmViYWFiYjJkOWRiNDU0ZTk5YTNjMjczNzM3NGIwYTQ=
data/README.rdoc CHANGED
@@ -269,6 +269,8 @@ Devuelve el sub árbol de cuentas que baja desde la cuenta sobre la que se ejecu
269
269
  - objeto_act_as_snp_contable.ledger_accounts
270
270
  Devuelve un array con las cuentas contables (las crea si es necesario) vinculadas con el objeto.
271
271
 
272
+ - objeto_act_as_snp_contable.get_ledger_account_by_code_name(:symbol)
273
+ Devuelve la cuenta contable asocidada (las crea si es necesario) vinculadas con el objeto.
272
274
 
273
275
  = Operación contable
274
276
 
@@ -302,7 +304,32 @@ Por último, respecto a las operaciones, si dentro de alguno las colecciones de
302
304
 
303
305
 
304
306
 
305
-
307
+ ------------------------------------------------------------------------------------------------------------------------------
308
+ ------------------------------------------------------------------------------------------------------------------------------
309
+ ------------------------------------------------------------------------------------------------------------------------------
310
+ ------------------------------------------------------------------------------------------------------------------------------
311
+ ------------------------------------------------------------------------------------------------------------------------------
312
+ ------------------------------------------------------------------------------------------------------------------------------
313
+ ------------------------------------------------------------------------------------------------------------------------- v1.1
314
+ FIXES
315
+ * El calculo ahora las operaciones se hacen en enteros Y DESPUES se transforman
316
+ * La funcion 'unformat_value(value)' de LedgerMove hace un round antes de tl .to_i, elimina el bug del flotante
317
+
318
+ FEATURES / CHANGES
319
+ * Currencies ahora tiene un campo para el simbolo 'sym', ($, u$s, etc)
320
+ * Agregado monedas dolar y euro
321
+ * Ahora la gema es multicurrency funcional:
322
+ El método 'balance' ahora devuelve un hash {ID_CURRENCY => AMOUNT, ID_CURRENCY => AMOUNT}
323
+ * IMPORTANTE!!! El método 'SnapplerContable.op' en versiones viejas va a fallar, ya que en esta Version cambia como recive
324
+ los parámetros
325
+ Ejemplo:
326
+ Version Vieja:
327
+ SnapplerContable.op(array_debe, array_haber, operation_debe = nil, operation_haber = nil)
328
+
329
+ Version Actual:
330
+ SnapplerContable.op(array_debe, array_haber, params_hash => {:operation_debe => nil, :operation_haber => nil, :date => nil})
331
+
332
+ Agregado el campo date a la operacion para buscar entre esa fecha y no con el 'created_at' de antes
306
333
 
307
334
 
308
335
 
@@ -1,7 +1,8 @@
1
1
  class LedgerAccount < ActiveRecord::Base
2
2
  #--------------------------------------------- RELATIION
3
+ has_many :ledger_moves, :dependent => :destroy
3
4
  belongs_to :contable, polymorphic: true
4
- has_many :child_ledger_accounts, :class_name => "LedgerAccount", :foreign_key => "master_ledger_account_id", :order => 'order_column'
5
+ has_many :child_ledger_accounts, :class_name => "LedgerAccount", :foreign_key => "master_ledger_account_id", :order => 'order_column', :dependent => :destroy
5
6
  belongs_to :master_ledger_account, :class_name => "LedgerAccount"
6
7
  #--------------------------------------------- MISC
7
8
  attr_accessible :name, :code, :code_name, :master_ledger_account_id, :master_ledger_account, :contable, :balance_sum
@@ -11,10 +12,22 @@ class LedgerAccount < ActiveRecord::Base
11
12
  #--------------------------------------------- CALLBACK
12
13
  before_save :set_code
13
14
  after_create :set_order_column
15
+ #before_destroy :has_no_ledger_moves?
14
16
  #--------------------------------------------- SCOPES
15
17
  default_scope order('order_column ASC')
16
18
  #--------------------------------------------- METHODS
17
19
 
20
+ #Valida q no tenga operaciones de gasto relacionadas
21
+ def has_no_ledger_moves?
22
+ if self.ledger_moves.any?
23
+ self.errors[:base] << "No se pudo borrar porque tiene Movimientos asociados"
24
+ return false
25
+ else
26
+ return true
27
+ end
28
+ end
29
+
30
+
18
31
  def self.account(value)
19
32
  where(:code_name => value.to_s.snp_underscore).first
20
33
  end
@@ -30,6 +43,17 @@ class LedgerAccount < ActiveRecord::Base
30
43
  end
31
44
  end
32
45
 
46
+ def add_child_with_contable(name, code_name, contable)
47
+ if self.persisted?
48
+ self.class.create(name: name, master_ledger_account: self, contable: contable, code_name: "#{code_name}_#{contable.class.name.underscore}_#{contable.id}" )
49
+ else
50
+ if self.errors.count > 0
51
+ errores = " La cuenta '#{name}' no se pudo persistir porque sus campos no cumplen la validacion de LedgerAccount."
52
+ end
53
+ raise "La instancia debe estar persistida para poder agregar una cuenta hija." + errores.to_s
54
+ end
55
+ end
56
+
33
57
  def set_code
34
58
  unless self.master_ledger_account_id == 0
35
59
  unless self.order_column.nil?
@@ -80,72 +104,155 @@ class LedgerAccount < ActiveRecord::Base
80
104
  balance
81
105
  end
82
106
 
83
- def balance
84
- bal = LedgerAccount.where(:id => children_accounts_ids).sum(:balance_sum)
85
- LedgerMove.format_value(bal)
107
+ #Mejora la logica
108
+ def special_balance(params)
109
+ from_date = params[:from_date]
110
+ to_date = params[:to_date]
111
+ format_value = (params[:format_value].nil?)? true : params[:format_value]
112
+
113
+ if((from_date.nil?) && (to_date.nil?))
114
+ return balance(format_value)
115
+ else
116
+ if((! from_date.nil?) && (! to_date.nil?))
117
+ return balance_from_to(from_date, to_date, format_value)
118
+ else
119
+ if(! from_date.nil?)
120
+ return balance_from(from_date, format_value)
121
+ else
122
+ return balance_to(to_date, format_value)
123
+ end
124
+ end
125
+ end
126
+ end
127
+
128
+
129
+ def balance_zero?
130
+ hash_balance = self.balance
131
+ zero = true
132
+ LedgerCurrency.all.each{|x| zero &&= (hash_balance[x.id.to_s].nil?)||(hash_balance[x.id.to_s].zero?) }
133
+ return zero
134
+ end
135
+
136
+ def balance_zero_or_minor?
137
+ hash_balance = self.balance
138
+ zero = true
139
+ LedgerCurrency.all.each{|x| zero &&= (hash_balance[x.id.to_s].nil?)||(hash_balance[x.id.to_s] <= 0) }
140
+ return zero
141
+ end
142
+
143
+
144
+ def balance(format_value=true)
145
+ bal = {}
146
+ LedgerAccount.where(:id => children_accounts_ids).each do |account|
147
+ bal.merge!(eval(account.balance_sum)){|key, oldval, newval| newval + oldval} if(! account.balance_sum.blank?)
148
+ end
149
+
150
+ #Proceso la info para mostrarla en flotante
151
+ bal.reject!{|x,y| y.zero?}
152
+ bal.each{|x,y| bal[x] = LedgerMove::format_value(y) } if(format_value)
153
+ bal_sorted = {}
154
+ bal.sort.collect{|elem| bal_sorted[elem.first] = elem.last }
155
+ return bal_sorted
86
156
  end
87
157
 
88
158
 
89
- def balance_to(to_date)
90
- dh_hash = LedgerMove.where(:ledger_account_id => children_accounts_ids).where('created_at <= ?', to_date.end_of_day).group(:dh).sum(:value)
91
- debe = dh_hash["D"].to_i
92
- haber = dh_hash["H"].to_i
93
- LedgerMove.format_value(process_balance(debe, haber))
159
+ def balance_to(to_date, format_value=true)
160
+ bal_debe = {}
161
+ bal_haber = {}
162
+ LedgerCurrency.all.each{|x| bal_debe[x.id] = 0; bal_haber[x.id] = 0}
163
+ bal = {}
164
+
165
+ dh_array = LedgerMove.where(:ledger_account_id => children_accounts_ids).where('date <= ?', to_date)
166
+ dh_array.each do |dh|
167
+ bal_debe.merge!({dh.ledger_currency_id => dh.raw_value}){|key, oldval, newval| newval + oldval} if(dh.dh == 'D')
168
+ bal_haber.merge!({dh.ledger_currency_id => dh.raw_value}){|key, oldval, newval| newval + oldval} if(dh.dh == 'H')
169
+ end
170
+
171
+ bal = process_balance(bal_debe, bal_haber)
172
+ bal.reject!{|x,y| y.zero?}
173
+ bal.each{|x,y| bal[x] = LedgerMove::format_value(y) } if(format_value)
174
+
175
+ bal_sorted = {}
176
+ bal.sort.collect{|elem| bal_sorted[elem.first] = elem.last }
177
+ return bal_sorted
94
178
  end
95
179
 
96
- def balance_from(from_date)
97
- dh_hash = LedgerMove.where(:ledger_account_id => children_accounts_ids).where('created_at >= ?', from_date.beginning_of_day).group(:dh).sum(:value)
98
- debe = dh_hash["D"].to_i
99
- haber = dh_hash["H"].to_i
100
- LedgerMove.format_value(process_balance(debe, haber))
180
+ def balance_from(from_date, format_value=true)
181
+ bal_debe = {}
182
+ bal_haber = {}
183
+ LedgerCurrency.all.each{|x| bal_debe[x.id] = 0; bal_haber[x.id] = 0}
184
+ bal = {}
185
+
186
+ dh_array = LedgerMove.where(:ledger_account_id => children_accounts_ids).where('date >= ?', from_date)
187
+ dh_array.each do |dh|
188
+ bal_debe.merge!({dh.ledger_currency_id => dh.raw_value}){|key, oldval, newval| newval + oldval} if(dh.dh == 'D')
189
+ bal_haber.merge!({dh.ledger_currency_id => dh.raw_value}){|key, oldval, newval| newval + oldval} if(dh.dh == 'H')
190
+ end
191
+
192
+ bal = process_balance(bal_debe, bal_haber)
193
+ bal.reject!{|x,y| y.zero?}
194
+ bal.each{|x,y| bal[x] = LedgerMove::format_value(y) } if(format_value)
195
+
196
+ bal_sorted = {}
197
+ bal.sort.collect{|elem| bal_sorted[elem.first] = elem.last }
198
+ return bal_sorted
101
199
  end
102
200
 
103
- def balance_from_to(from_date, to_date)
104
- dh_hash = LedgerMove.where(:ledger_account_id => children_accounts_ids).where('created_at >= ? AND created_at <= ?', from_date.beginning_of_day, to_date.end_of_day).group(:dh).sum(:value)
105
- debe = dh_hash["D"].to_i
106
- haber = dh_hash["H"].to_i
107
- LedgerMove.format_value(process_balance(debe, haber))
201
+ def balance_from_to(from_date, to_date, format_value=true)
202
+ bal_debe = {}
203
+ bal_haber = {}
204
+ LedgerCurrency.all.each{|x| bal_debe[x.id] = 0; bal_haber[x.id] = 0}
205
+ bal = {}
206
+
207
+ dh_array = LedgerMove.where(:ledger_account_id => children_accounts_ids).where('date >= ? AND date <= ?', from_date, to_date)
208
+ dh_array.each do |dh|
209
+ bal_debe.merge!({dh.ledger_currency_id => dh.raw_value}){|key, oldval, newval| newval + oldval} if(dh.dh == 'D')
210
+ bal_haber.merge!({dh.ledger_currency_id => dh.raw_value}){|key, oldval, newval| newval + oldval} if(dh.dh == 'H')
211
+ end
212
+ bal = process_balance(bal_debe, bal_haber)
213
+ bal.reject!{|x,y| y.zero?}
214
+ bal.each{|x,y| bal[x] = LedgerMove::format_value(y) } if(format_value)
215
+
216
+ bal_sorted = {}
217
+ bal.sort.collect{|elem| bal_sorted[elem.first] = elem.last }
218
+ return bal_sorted
108
219
  end
109
220
 
221
+
222
+
110
223
  def process_balance
111
224
  raise "Este metodo solo se tiene que implementar en las subclases"
112
225
  end
113
226
 
114
- def update_balance(value, dh)
227
+ def update_balance(value, dh, ledger_currency)
115
228
  case dh.upcase
116
229
  when 'D'
117
- update_balance = process_balance(value, 0)
230
+ update_balance = process_balance({ledger_currency.id.to_s => value}, {ledger_currency.id.to_s => 0})
118
231
  when 'H'
119
- update_balance = process_balance(0, value)
120
- end
121
- bal = self.balance_sum
122
- self.balance_sum = bal + update_balance
123
- save
232
+ update_balance = process_balance({ledger_currency.id.to_s => 0}, {ledger_currency.id.to_s => value})
233
+ end
234
+
235
+ #Obtengo el Hash
236
+ balance_sum = (self.balance_sum.blank?)? {} : eval(self.balance_sum)
237
+ bal = (balance_sum[ledger_currency.id.to_s].nil?)? 0 : balance_sum[ledger_currency.id.to_s]
238
+ balance_sum[ledger_currency.id.to_s] = (update_balance[ledger_currency.id.to_s] + bal)
239
+
240
+ #Elimino las q son zero asi no queda basura
241
+ balance_sum.reject!{|x,y| y.zero?}
242
+ self.balance_sum = balance_sum.to_s
243
+ self.save
124
244
  end
125
245
 
126
- def update_balance_destroy(value, dh)
246
+ def update_balance_destroy(value, dh, ledger_currency)
127
247
  #inverse operation
128
248
  ops = {'D' => 'H', 'H' => 'D'}
129
- update_balance(value, ops[dh])
249
+ update_balance(value, ops[dh], ledger_currency)
130
250
  end
131
251
 
132
252
  def accounts_tree
133
253
  SnapplerContable.account_sub_tree(self)
134
254
  end
135
255
 
136
- def balance_sum=(val)
137
- if val.is_a? Numeric
138
- write_attribute :balance_sum, LedgerMove.unformat_value(val)
139
- else
140
- raise "El valor debe ser un numero"
141
- end
142
- end
143
-
144
- def balance_sum
145
- value_formated = read_attribute :balance_sum
146
- LedgerMove.format_value(value_formated)
147
- end
148
-
149
256
  end
150
257
 
151
258
 
@@ -1,6 +1,8 @@
1
1
  class LedgerAccountActivo < LedgerAccount
2
2
 
3
3
  def process_balance(debe, haber)
4
- debe - haber
4
+ haber.merge(debe){|key, oldval, newval| newval - oldval}
5
5
  end
6
6
  end
7
+
8
+
@@ -1,6 +1,6 @@
1
1
  class LedgerAccountPasivo < LedgerAccount
2
2
 
3
3
  def process_balance(debe, haber)
4
- haber - debe
4
+ debe.merge(haber){|key, oldval, newval| newval - oldval}
5
5
  end
6
6
  end
@@ -1,6 +1,6 @@
1
1
  class LedgerAccountPatrimonioNeto < LedgerAccount
2
2
 
3
3
  def process_balance(debe, haber)
4
- haber - debe
4
+ debe.merge(haber){|key, oldval, newval| newval - oldval}
5
5
  end
6
6
  end
@@ -1,6 +1,6 @@
1
1
  class LedgerAccountResultadoNegativo < LedgerAccount
2
2
 
3
3
  def process_balance(debe, haber)
4
- debe - haber
4
+ haber.merge(debe){|key, oldval, newval| newval - oldval}
5
5
  end
6
6
  end
@@ -1,6 +1,6 @@
1
1
  class LedgerAccountResultadoPositivo < LedgerAccount
2
2
 
3
3
  def process_balance(debe, haber)
4
- haber - debe
4
+ debe.merge(haber){|key, oldval, newval| newval - oldval}
5
5
  end
6
6
  end
@@ -1,3 +1,3 @@
1
1
  class LedgerCurrency < ActiveRecord::Base
2
- attr_accessible :code, :name
2
+ attr_accessible :code, :name, :sym
3
3
  end
@@ -4,8 +4,8 @@ class LedgerMove < ActiveRecord::Base
4
4
  belongs_to :ledger_account
5
5
  belongs_to :ledger_currency
6
6
  #--------------------------------------------- MISC
7
- attr_accessible :currency_ratio, :dh, :value, :ledger_account, :ledger_currency, :currency_ratio
8
- DIVISOR = 100.0
7
+ attr_accessible :currency_ratio, :dh, :value, :ledger_account, :ledger_currency, :currency_ratio, :date
8
+ DIVISOR = 100.0
9
9
  #--------------------------------------------- VALIDATION
10
10
 
11
11
  #--------------------------------------------- CALLBACK
@@ -14,29 +14,60 @@ class LedgerMove < ActiveRecord::Base
14
14
  after_update :update_balance_update
15
15
 
16
16
  #--------------------------------------------- SCOPES
17
+ scope :filter_date_start, lambda { |date| if((date)&&(! date.blank?))
18
+ {:conditions => ["ledger_moves.date >= ?", Date.parse(date)]}
19
+ end }
20
+
21
+ scope :filter_date_end, lambda { |date| if((date)&&(! date.blank?))
22
+ {:conditions => ["ledger_moves.date <= ?", Date.parse(date)]}
23
+ end }
24
+
25
+ scope :order_date_asc, :order => 'ledger_moves.date ASC, ledger_moves.id ASC'
17
26
 
18
27
  #--------------------------------------------- METHODS
19
28
 
20
29
  def update_balance_create
21
- self.ledger_account.update_balance(value, dh)
30
+ self.ledger_account(true).update_balance(raw_value, dh, ledger_currency)
22
31
  end
23
32
 
33
+
24
34
  def update_balance_destroy
25
- self.ledger_account.update_balance_destroy(value, dh)
35
+ self.ledger_account(true).update_balance_destroy(raw_value, dh, ledger_currency)
26
36
  end
27
37
 
38
+
28
39
  def update_balance_update
29
- self.ledger_account.update_balance_destroy( self.class.format_value(value_was), dh)
30
- self.ledger_account.update_balance(value, dh)
40
+ self.ledger_account(true).update_balance_destroy(value_was, dh, ledger_currency)
41
+ self.ledger_account(true).update_balance(raw_value, dh, ledger_currency)
31
42
  end
32
43
 
44
+ def self.format_hash(bal)
45
+ bal_aux = {}
46
+ bal.each{|x,y| bal_aux[x] = LedgerMove::format_value(y) }
47
+
48
+ bal_sorted = {}
49
+ bal_aux.sort.collect{|elem| bal_sorted[elem.first] = elem.last }
50
+
51
+ return bal_sorted
52
+ end
53
+
54
+ def self.unformat_hash(bal)
55
+ bal_aux = {}
56
+ bal.each{|x,y| bal_aux[x] = LedgerMove::unformat_value(y) }
57
+
58
+ bal_sorted = {}
59
+ bal_aux.sort.collect{|elem| bal_sorted[elem.first] = elem.last }
60
+
61
+ return bal_sorted
62
+ end
63
+
33
64
 
34
65
  def self.format_value(value)
35
66
  value / DIVISOR
36
67
  end
37
68
 
38
69
  def self.unformat_value(value)
39
- (value * DIVISOR).to_i
70
+ (value * DIVISOR).round.to_i
40
71
  end
41
72
 
42
73
  def value=(val)
@@ -47,8 +78,23 @@ class LedgerMove < ActiveRecord::Base
47
78
  end
48
79
  end
49
80
 
81
+ def currency_with_value(format_value=true)
82
+ case self.dh.upcase
83
+ when 'D'
84
+ bal = self.ledger_account.process_balance({self.ledger_currency_id.to_s => self.raw_value}, {ledger_currency.id.to_s => 0})
85
+ when 'H'
86
+ bal = self.ledger_account.process_balance({ledger_currency.id.to_s => 0}, {self.ledger_currency_id.to_s => self.raw_value})
87
+ end
88
+ bal = LedgerMove::format_hash(bal) if(format_value)
89
+ return bal
90
+ end
91
+
50
92
  def value
51
93
  value_formated = read_attribute :value
52
94
  self.class.format_value(value_formated)
53
95
  end
96
+
97
+ def raw_value
98
+ return read_attribute :value
99
+ end
54
100
  end
@@ -1,8 +1,9 @@
1
+ # -*- coding: utf-8 -*-
1
2
  class SnapplerContableMigrate < ActiveRecord::Migration
2
3
  def self.up
3
4
  create_table :ledger_accounts do |t|
4
5
  t.string :name
5
- t.integer :balance_sum, :default => 0
6
+ t.string :balance_sum
6
7
  t.string :code
7
8
  t.string :code_name
8
9
  t.integer :order_column
@@ -28,6 +29,7 @@ class SnapplerContableMigrate < ActiveRecord::Migration
28
29
  t.integer :value, :default => 0
29
30
  t.references :ledger_currency
30
31
  t.float :currency_ratio
32
+ t.date :date
31
33
 
32
34
  t.timestamps
33
35
  end
@@ -42,10 +44,12 @@ class SnapplerContableMigrate < ActiveRecord::Migration
42
44
  create_table :ledger_currencies do |t|
43
45
  t.string :name
44
46
  t.string :code
45
-
47
+ t.string :sym
46
48
  t.timestamps
47
49
  end
48
- LedgerCurrency.create(name: 'Peso', code: 'ARS')
50
+ LedgerCurrency.create(name: 'Peso', code: 'ARS', sym: '$')
51
+ LedgerCurrency.create(name: 'Dolar', code: 'DOL', sym: 'u$s')
52
+ LedgerCurrency.create(name: 'Euro', code: 'EUR', sym: '€')
49
53
  end
50
54
 
51
55
  def self.down
@@ -78,7 +78,10 @@ module SnapplerContable
78
78
  return res_accounts
79
79
  end
80
80
 
81
- def self.op(array_debe, array_haber, operation_debe = nil, operation_haber = nil)
81
+ def self.op(array_debe, array_haber, params_hash)
82
+ operation_debe = params_hash[:operation_debe]
83
+ operation_haber = params_hash[:operation_haber]
84
+ date = params_hash[:date]
82
85
 
83
86
  if operation_haber.nil?
84
87
  operation_haber = operation_debe
@@ -117,7 +120,7 @@ module SnapplerContable
117
120
  m[:currency] = dc
118
121
  m[:currency_ratio] = 1
119
122
  end
120
- le.ledger_moves.build(ledger_account: m[:account], value: m[:value], dh: m[:dh], ledger_currency: m[:currency], currency_ratio: m[:currency_ratio])
123
+ le.ledger_moves.build(ledger_account: m[:account], value: m[:value], dh: m[:dh], ledger_currency: m[:currency], currency_ratio: m[:currency_ratio], date: date)
121
124
  end
122
125
 
123
126
  if le.save
@@ -1,3 +1,3 @@
1
1
  module SnapplerContable
2
- VERSION = "0.1.0"
2
+ VERSION = "1.1.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snappler_contable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan La Battaglia