code: def complete(self, uio, dropped=False):
          
          if self.dropped and not dropped:
              # do nothing for dropped xn, unless specifically told to
              return
  
          for end in ['src', 'dst']:
              if getattr(self, end):
                  continue  # we have this information
  
              uio.show('\nEnter ' + end + ' for transaction:')
              uio.show('')
              uio.show(self.summary())
              try:
                  endpoints = []
                  remaining = self.amount
                  while remaining:
                      account = uio.text(' Enter account', None)
                      amount = uio.decimal(
                          ' Enter amount',
                          default=remaining,
                          lower=0,
                          upper=remaining
                      )
                      endpoints.append(Endpoint(account, amount))
                      remaining = self.amount \
                          - sum(map(lambda x: x.amount, endpoints))
              except ui.RejectWarning:
                  # bail out
                  sys.exit("bye!")
  
              # flip amounts if it was a src outcome
              if end == 'src':
                  endpoints = map(
                      lambda x: Endpoint(x.account, -x.amount),
                      endpoints
                  )
  
              # set endpoints
              setattr(self, end, endpoints)
docs: Query for all missing information in the transaction