def save_collection_association(reflection)
#        if association = association_instance_get(reflection.name)
        if target = @loaded_associations[reflection.name] #TODO use a real Association wrapper
          association = OpenStruct.new(target: target)
          autosave = reflection.options[:autosave]

          if records = associated_records_to_validate_or_save(association, @new_record_before_save, autosave)
             # NOTE saving the object with its nested associations will properly destroy records in OpenERP
             # no need to do it now like in ActiveRecord
            records.each do |record|
              next if record.destroyed?

              saved = true

              if autosave != false && (@new_record_before_save || record.new_record?)
                if autosave
#                  saved = association.insert_record(record, false)
                  record.run_callbacks(:save) { false }
                  record.run_callbacks(:create) { false }
#                else
#                  association.insert_record(record) unless reflection.nested?
                end
              elsif autosave
                record.run_callbacks(:save) {false}
                record.run_callbacks(:update) {false}
#                saved = record.save(:validate => false)
              end

            end
          end
          # reconstruct the scope now that we know the owner's id
#          association.reset_scope if association.respond_to?(:reset_scope)
        end
      end
def save_collection_association(reflection)
#        if association = association_instance_get(reflection.name)
        if target = @loaded_associations[reflection.name] #TODO use a real Association wrapper
          association = OpenStruct.new(target: target)
          autosave = reflection.options[:autosave]

          if records = associated_records_to_validate_or_save(association, @new_record_before_save, autosave)
             # NOTE saving the object with its nested associations will properly destroy records in OpenERP
             # no need to do it now like in ActiveRecord
            records.each do |record|
              next if record.destroyed?

              saved = true

              if autosave != false && (@new_record_before_save || record.new_record?)
                if autosave
#                  saved = association.insert_record(record, false)
                  record.run_callbacks(:save) { false }
                  record.run_callbacks(:create) { false }
#                else
#                  association.insert_record(record) unless reflection.nested?
                end
              elsif autosave
                record.run_callbacks(:save) {false}
                record.run_callbacks(:update) {false}
#                saved = record.save(:validate => false)
              end

            end
          end
          # reconstruct the scope now that we know the owner's id
#          association.reset_scope if association.respond_to?(:reset_scope)
        end
      end
Saves any new associated records, or all loaded autosave associations if
 <tt>:autosave</tt> is enabled on the association.

 In addition, it destroys all children that were marked for destruction
 with mark_for_destruction.

 This all happens inside a transaction, _if_ the Transactions module is included into
 ActiveRecord::Base after the AutosaveAssociation module, which it does by default.