lucadeal 0.4.1 → 0.4.2

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,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 560b745f485f42d80938858af2ff4cdbe1b2cc9aef27898ca0801430c6d638cd
4
- data.tar.gz: f800500cc78a51ca0cb574856493ae43660d659a463f741b442d0887da9027a9
3
+ metadata.gz: bccbeee521150eecf98d76d7a6ee89af35378d3d38b23074003be4efb003cb7a
4
+ data.tar.gz: 3d358fda0bef02a3b25e362d977f14d49b2f5a05641c7195b4b714929f11e665
5
5
  SHA512:
6
- metadata.gz: 1c1d0abdf72851ceb10a18cf64538aee7ef1c9313d0ab4fc86bcbebf090824e4002670225208b7ddf30c38eb6e064062e15ba15c858f411895c17ce674ca1612
7
- data.tar.gz: 1d9f8d246ddd47196860e350662dc34989e810e0f5e9951b380e1028962ce4a0c9a2c926592991d5a8a39036a8ab38fbc38c22b6580bec8372f50ab02753e2f7
6
+ metadata.gz: a6bacf4bbb7e4ef9343693a4bec91a5a4617a969fb40dd5f6cd9755434da6bce560f2cd1788c83f9dfd1810cc212b3a1a0325866bea9b903e86853ccbdf84118
7
+ data.tar.gz: 281a5b540e9746cd84b265e38537584cd2fb1b09372e5e443db4c269ec591bd92db9ab274b33cffaa3dd5b5c22bb65cc30520e56fe3febd19a0e8dfd84f19ada
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## LucaDeal 0.4.2
2
+
3
+ * `luca-deal custoer|invoice|fee list`, `luca-deal reports balance` supports interactive `--explore` w/nushell.
4
+ * `luca-deal invoices settle` checks already settled invoices and renamed customer.
5
+
1
6
  ## LucaDeal 0.4.1
2
7
 
3
8
  * Limit LucaRecord dependency '>= 0.5.4'
data/exe/luca-deal CHANGED
@@ -274,7 +274,9 @@ class LucaCmd
274
274
  when 'json'
275
275
  puts JSON.dump(dat)
276
276
  when 'nu'
277
- LucaSupport::View.nushell(dat)
277
+ LucaSupport::View.nushell(dat, :expand)
278
+ when 'explore'
279
+ LucaSupport::View.nushell(dat, :explore)
278
280
  when 'csv'
279
281
  str = CSV.generate(String.new, col_sep: "\t") do |row|
280
282
  row << dat.first.keys
@@ -309,6 +311,7 @@ when /customers?/
309
311
  OptionParser.new do |opt|
310
312
  opt.banner = 'Usage: luca-deal customers list [options]'
311
313
  opt.on('--nu', 'show table in nushell') { |_v| params[:output] = 'nu' }
314
+ opt.on('--explore', 'explore table in nushell') { |_v| params[:output] = 'explore' }
312
315
  opt.on('-o', '--output VAL', 'output serialized data') { |v| params[:output] = v }
313
316
  args = opt.parse(ARGV)
314
317
  LucaCmd::Customer.list(args, params)
@@ -384,6 +387,7 @@ when /invoices?/, 'i'
384
387
  OptionParser.new do |opt|
385
388
  opt.banner = 'Usage: luca-deal invoices list [options] year month [date]'
386
389
  opt.on('--nu', 'show table in nushell') { |_v| params[:output] = 'nu' }
390
+ opt.on('--explore', 'explore table in nushell') { |_v| params[:output] = 'explore' }
387
391
  opt.on('-o', '--output VAL', 'output serialized data') { |v| params[:output] = v }
388
392
  opt.on('--mail', 'send payment list by email') { |_v| params[:mail] = true }
389
393
  args = opt.parse(ARGV)
@@ -432,6 +436,7 @@ when /reports?/, 'r'
432
436
  OptionParser.new do |opt|
433
437
  opt.banner = 'Usage: luca-deal r[eports] balance [options] [year month]'
434
438
  opt.on('--nu', 'show table in nushell') { |_v| params[:output] = 'nu' }
439
+ opt.on('--explore', 'explore table in nushell') { |_v| params[:output] = 'explore' }
435
440
  opt.on('-o', '--output VAL', 'output serialized data') { |v| params[:output] = v }
436
441
  opt.on('--detail', 'show detail info') { |_v| params[:detail] = true }
437
442
  opt.on('--force-due', 'respect due date over actual payment') { |_v| params[:due] = true }
@@ -470,6 +475,7 @@ when /fee/
470
475
  OptionParser.new do |opt|
471
476
  opt.banner = 'Usage: luca-deal fee list [options] year month [date]'
472
477
  opt.on('--nu', 'show table in nushell') { |_v| params[:output] = 'nu' }
478
+ opt.on('--explore', 'explore table in nushell') { |_v| params[:output] = 'explore' }
473
479
  opt.on('-o', '--output VAL', 'output serialized data') { |v| params[:output] = v }
474
480
  opt.on('--html', 'output html invoices') { |_v| params[:html] = 'monthly' }
475
481
  args = opt.parse(ARGV)
@@ -150,7 +150,11 @@ module LucaDeal
150
150
  #
151
151
  def self.settle(io, payment_terms = 1)
152
152
  customers = {}.tap do |h|
153
- Customer.all.each { |c| h[c['name']] = c }
153
+ Customer.all.each do |c|
154
+ LucaSupport::Code.take_history(c, 'name').each do |name|
155
+ h[name] = c
156
+ end
157
+ end
154
158
  end
155
159
  contracts = {}.tap do |h|
156
160
  Contract.all.each { |c| h[c['customer_id']] ||= []; h[c['customer_id']] << c }
@@ -181,6 +185,11 @@ module LucaDeal
181
185
  if Regexp.new("^LucaBook/#{j['id']}").match invoice.dig('settled', 'id')||''
182
186
  break
183
187
  end
188
+ next if 0 >= [
189
+ invoice.dig('subtotal', 0, 'items'),
190
+ invoice.dig('subtotal', 0, 'tax'),
191
+ invoice.dig('settled', 'amount')
192
+ ].compact.sum
184
193
 
185
194
  invoice['settled'] = {
186
195
  'id' => "LucaBook/#{j['id']}",
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LucaDeal
4
- VERSION = '0.4.1'
4
+ VERSION = '0.4.2'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lucadeal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chuma Takahiro
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-04-11 00:00:00.000000000 Z
11
+ date: 2023-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lucarecord