day_of_month      = monthrange(lastYear, lastMonth)[1]
      end_day_of_month  = yesterday.replace(day=day_of_month)
      endDayString      = end_day_of_month.strftime("%d/%m/%Y")
      endDayTimeStamp   = int(time.mktime(time.strptime(str(endDayString + " 23:59:59"), "%d/%m/%Y %H:%M:%S")))

      start_day_of_month   = yesterday.replace(day=1)
      startDayString       = start_day_of_month.strftime("%d/%m/%Y")
      startDayTimeStamp      = int(time.mktime(time.strptime(str(startDayString + " 00:00:00"), "%d/%m/%Y %H:%M:%S")))
   else:
      lastMonth = month

   firstDayOfMonth = datetime(year, lastMonth, 1, 0, 0)
   

   # TẠO ROW CHO TỪNG PARTNER NẾU CHƯA TỒN TẠI
   partner_lists = mongodb.getDistinct(MONGO_COLLECTION=collection , SELECT="COMPANY")
   if partner_lists != None:
      for row_partner in partner_lists:
         pprint(row_partner)
         exists_amount = mongodb.count(MONGO_COLLECTION=collection_amount_report,WHERE={'partner':row_partner, 'year' : {'$eq' : str(year)} })
         if exists_amount == 0 : mongodb.insert(MONGO_COLLECTION=collection_amount_report, insert_data={
            'partner': row_partner,
            'outsoucing' : {
               'account' : {
                  'before' : {
                     'l30' : { 'T1':0,'T2':0,'T3':0,'T4':0,'T5':0,'T6':0,'T7':0,'T8':0,'T9':0,'T10':0,'T11':0,'T12':0},
                     'p30' : { 'T1':0,'T2':0,'T3':0,'T4':0,'T5':0,'T6':0,'T7':0,'T8':0,'T9':0,'T10':0,'T11':0,'T12':0},
                     'p60' : { 'T1':0,'T2':0,'T3':0,'T4':0,'T5':0,'T6':0,'T7':0,'T8':0,'T9':0,'T10':0,'T11':0,'T12':0},
                     'p90' : { 'T1':0,'T2':0,'T3':0,'T4':0,'T5':0,'T6':0,'T7':0,'T8':0,'T9':0,'T10':0,'T11':0,'T12':0},
                     'p180' : { 'T1':0,'T2':0,'T3':0,'T4':0,'T5':0,'T6':0,'T7':0,'T8':0,'T9':0,'T10':0,'T11':0,'T12':0},
                     'subtotal':{ 'T1':0,'T2':0,'T3':0,'T4':0,'T5':0,'T6':0,'T7':0,'T8':0,'T9':0,'T10':0,'T11':0,'T12':0},
            tt_temp['group'] = "TOTAL"
            tt_temp["g" + product_value['code']] = total_report1[0][
                "g" + product_value['code']]
            tt_temp["a" + product_value['code']] = total_report1[0][
                "a" + product_value['code']]
            tt_temp['t_g'] = total_report1[0]["t_g"]
            tt_temp['t_a'] = total_report1[0]["t_a"]
            tt_temp['createdAt'] = time.time()
    insertData1.append(tt_temp)

    if len(insertData1) > 0:
        mongodb.batch_insert(MONGO_COLLECTION=temp_collection,
                             insert_data=insertData1)

    # doc du lieu ra tu bang tam
    grouplist = mongodb.getDistinct(MONGO_COLLECTION=temp_collection,
                                    SELECT='group')
    i = 0
    for group in grouplist:
        i = i + 1
        temp = {}
        list_product = mongodb.get(common.getSubUser(subUserType, 'Product'),
                                   SORT=[("code", 1)])
        for product_code, product_value in enumerate(list_product):
            aggregate_sum = [
                {
                    "$match": {
                        'group': group,
                        # "$and"                           : [{
                        #     "createdAt"                 : {
                        #         "$gte"                  : startMonth,
                        #         "$lte"                  : endMonth