Fix handling of blank rows and stock changes [SCI-10889]

This commit is contained in:
Martin Artnik 2024-07-15 14:20:02 +02:00
parent 5b69e5277c
commit c811d191eb
2 changed files with 15 additions and 10 deletions

View file

@ -118,14 +118,18 @@ class RepositoryStockValue < ApplicationRecord
new_amount = new_data[:amount].to_d new_amount = new_data[:amount].to_d
delta = new_amount - amount.to_d delta = new_amount - amount.to_d
self.comment = new_data[:comment].presence self.comment = new_data[:comment].presence
repository_ledger_records.create!(
user: last_modified_by, unless preview
amount: delta, repository_ledger_records.create!(
balance: new_amount, user: last_modified_by,
reference: repository_cell.repository_column.repository, amount: delta,
comment: comment, balance: new_amount,
unit: repository_stock_unit_item&.data reference: repository_cell.repository_column.repository,
) comment: comment,
unit: repository_stock_unit_item&.data
)
end
self.amount = new_amount self.amount = new_amount
preview ? validate : save! preview ? validate : save!
end end

View file

@ -20,7 +20,7 @@ module RepositoryImportParser
@header_skipped = false @header_skipped = false
@repository = repository @repository = repository
@sheet = sheet @sheet = sheet
@rows = SpreadsheetParser.spreadsheet_enumerator(@sheet).compact_blank @rows = SpreadsheetParser.spreadsheet_enumerator(@sheet).reject { |r| r.all?(&:blank?) }
@mappings = mappings @mappings = mappings
@user = user @user = user
@repository_columns = @repository.repository_columns @repository_columns = @repository.repository_columns
@ -186,9 +186,10 @@ module RepositoryImportParser
handle_existing_cell_value(existing_cell, cell_value, repository_row) handle_existing_cell_value(existing_cell, cell_value, repository_row)
end end
@updated ||= existing_cell&.value&.changed? @updated ||= @preview ? existing_cell&.value&.changed? : existing_cell&.value&.saved_changes?
@errors << existing_cell.value.errors.full_messages.join(',') if existing_cell&.value&.errors.present? @errors << existing_cell.value.errors.full_messages.join(',') if existing_cell&.value&.errors.present?
end end
repository_row.import_status = if @errors.present? repository_row.import_status = if @errors.present?
'invalid' 'invalid'
elsif repository_row.import_status == 'created' elsif repository_row.import_status == 'created'