code: def QA_SU_save_stock_info(client=DATABASE, ui_log=None, ui_progress=None):
      
  
      client.drop_collection('stock_info')
      stock_list = QA_fetch_get_stock_list().code.unique().tolist()
      coll = client.stock_info
      coll.create_index('code')
      err = []
  
      def __saving_work(code, coll):
          QA_util_log_info(
              '##JOB10 Now Saving STOCK INFO ==== {}'.format(str(code)),
              ui_log=ui_log
          )
          try:
              coll.insert_many(
                  QA_util_to_json_from_pandas(QA_fetch_get_stock_info(str(code)))
              )
  
          except:
              err.append(str(code))
  
      for i_ in range(len(stock_list)):
          # __saving_work('000001')
  
          strLogProgress = 'DOWNLOAD PROGRESS {} '.format(
              str(float(i_ / len(stock_list) * 100))[0:4] + '%'
          )
          intLogProgress = int(float(i_ / len(stock_list) * 10000.0))
          QA_util_log_info('The {} of Total {}'.format(i_, len(stock_list)))
          QA_util_log_info(
              strLogProgress,
              ui_log=ui_log,
              ui_progress=ui_progress,
              ui_progress_int_value=intLogProgress
          )
  
          __saving_work(stock_list[i_], coll)
      if len(err) < 1:
          QA_util_log_info('SUCCESS', ui_log=ui_log)
      else:
          QA_util_log_info(' ERROR CODE \n ', ui_log=ui_log)
          QA_util_log_info(err, ui_log=ui_log)
docs: save stock_info
  
      Keyword Arguments:
          client {[type]} -- [description] (default: {DATABASE})