definitions/slsrpt/d01b.rb in eancom-1.5.7 vs definitions/slsrpt/d01b.rb in eancom-1.6.0

- old
+ new

@@ -107,80 +107,80 @@ currency_type_code_qualifier_1: '10', currency_usage_code_qualifier_1: '2' ) end - # Location - if location = message.location - code_list_responsible_agency_code = if location.code_list_responsible_agancy_code - structure = Eancom.find_structure(tag: 'LOC') - structure.dictionary_lookup( - :code_list_responsible_agancy_code, - location.code_list_responsible_agancy_code - ) - else - '9' - end + item_counter = 0 - body.segment Eancom::Edifact::LOC.new( - code_list_identification_code: location.code_list_identification_code, - code_list_responsible_agancy_code: code_list_responsible_agency_code, - location_function_qualifier: '162', - location_name_code: location.location_name_code - ) - end + message.locations.each do |location_group| + if location = location_group.location + code_list_responsible_agency_code = if location.code_list_responsible_agancy_code + structure = Eancom.find_structure(tag: 'LOC') + structure.dictionary_lookup( + :code_list_responsible_agancy_code, + location.code_list_responsible_agancy_code + ) + else + '9' + end - # Sales Date - if date_time = message.sales_date_and_or_time_and_or_period.date_time - body.segment Eancom::Edifact::DTM.new( - type: '356', - date_time: date_time, - format: '102' - ) - end + body.segment Eancom::Edifact::LOC.new( + code_list_identification_code: location.code_list_identification_code, + code_list_responsible_agancy_code: code_list_responsible_agency_code, + location_function_qualifier: '162', + location_name_code: location.location_name_code + ) + end - # Items - total_quantity = 0 + # Sales Date + if date_time = location_group.sales_date_and_or_time_and_or_period&.date_time + body.segment Eancom::Edifact::DTM.new( + type: '356', + date_time: date_time, + format: '102' + ) + end - items = message.items + # Items + location_group.items.each do |item| + item_counter += 1 - items.each_with_index do |item, index| - total_quantity += item.quantity.to_i + body.segment Eancom::Edifact::LIN.new( + line_item_identifier_1: item_counter.to_s, + item_identifier: item.ean, + item_type_identification_code: 'SRV' + ) - body.segment Eancom::Edifact::LIN.new( - line_item_identifier_1: "#{index + 1}", - item_identifier: item.ean, - item_type_identification_code: 'SRV' - ) + if transaction_reference_number = item.transaction_reference_number + body.segment Eancom::Edifact::RFF.new( + reference_code_qualifier: 'TN', + reference_identifier: transaction_reference_number.reference_identifier + ) + end - if transaction_reference_number = item.transaction_reference_number - body.segment Eancom::Edifact::RFF.new( - reference_code_qualifier: 'TN', - reference_identifier: transaction_reference_number.reference_identifier - ) - end + prices = item.prices + prices.each do |price_group| + if price = price_group.price + structure = Eancom.find_structure(tag: 'PRI') + body.segment Eancom::Edifact::PRI.new( + price_amount: price.price_amount, + price_code_qualifier: structure.dictionary_lookup(:price_code_qualifier, price.price_code_qualifier), + price_specification_code: structure.dictionary_lookup(:price_specification_code, price.price_specification_code), + price_type_code: price.price_type_code + ) + end + end - prices = item.prices - prices.each do |price| - if price = price.price - structure = Eancom.find_structure(tag: 'PRI') - body.segment Eancom::Edifact::PRI.new( - price_amount: price.price_amount, - price_code_qualifier: structure.dictionary_lookup(:price_code_qualifier, price.price_code_qualifier), - price_specification_code: structure.dictionary_lookup(:price_specification_code, price.price_specification_code), - price_type_code: price.price_type_code + # Quantity + if statistical_sales_quantitiy = item.statistical_sales_quantitiy + body.segment Eancom::Edifact::QTY.new( + quantity_type_code_qualifier: '153', + quantity: statistical_sales_quantitiy.quantity ) end end - - # Quantity - if statistical_sales_quantitiy = item.statistical_sales_quantitiy - body.segment Eancom::Edifact::QTY.new( - quantity_type_code_qualifier: '153', - quantity: statistical_sales_quantitiy.quantity - ) - end end + body.segment Eancom::Edifact::UNS.new( section_identification: 'S' )