Exemplo n.º 1
0
    def test_calcular_contraction_expansion_e_resurrected_mrr(self):
        erro = "calcular_contraction_expansion_e_resurrected_mrr não calculou corretamente"    

        df = self.cria_data_frame_test()
        calculo = CalculoDadosPagamento()
        df = calculo.calcular_mrr(df)
        df = calculo.desagrupar_registros_em_pagamentos_mensais(df)

        df = formata.ordenar_df_data(df)
        df = formata.criar_chave_concatenada(df)
        df = calculo.calcular_new_mrr(df)

        df = formata.ordenar_df_data(df)
        df = calculo.calcular_cancelled_mrr(df)
        
        df = formata.ordenar_df_data(df)
        df = calculo.calcular_contraction_expansion_e_resurrected_mrr(df)
        
        valida_contraction  = df.loc[(df['chave'] == '1-2017-02-01 00:00:00-1'), 'ContractionMRR'].iloc[0]
        valida_expansion    = df.loc[(df['chave'] == '3-2017-06-05 00:00:00-1'), 'ExpansionMRR'].iloc[0]
        valida_resurrected  = df.loc[(df['chave'] == '2-2019-02-01 00:00:00-1'), 'ResurrectedMRR'].iloc[0]

        assert valida_contraction   == 299, erro
        assert valida_expansion     == 150, erro
        assert valida_resurrected   == 250, erro
Exemplo n.º 2
0
 def preparar_dados_pagamentos(self):
     self.df_pagamentos = formata.formatar_valor_para_float(
         self.df_pagamentos)
     self.df_pagamentos = formata.formatar_data_do_df_string_para_date(
         self.df_pagamentos)
     self.df_pagamentos = formata.ordenar_df_data(self.df_pagamentos)
     self.df_pagamentos = formata.separa_plano_meses_contrato(
         self.df_pagamentos)
     self.df_pagamentos = formata.criar_chave_concatenada(
         self.df_pagamentos)
Exemplo n.º 3
0
 def cria_data_frame_test(self):
     obj_pagamentos = {
         'ClienteID':        [3,             2,              1,              1,              3,              2           ],
         'DataPagamento':    ['05/03/2017',  '12/08/2018',   '01/01/2017',   '01/02/2017',   '05/06/2017',   '01/02/2019'],
         'Valor':            ['R$ 300,00',   'R$ 750,00',    'R$ 399,00',    'R$ 300,00',    'R$ 750,00',    'R$ 750,00' ],
         'Plano':            ['Bronze/3',    'Ouro/3',       'Platina/1',    'Bronze/3',     'Ouro/3',       'Ouro/3'    ] 
     }
     df = pd.DataFrame(data=obj_pagamentos)
     df = formata.formatar_valor_para_float(df)
     df = formata.formatar_data_do_df_string_para_date(df)
     df = formata.separa_plano_meses_contrato(df)
     df = formata.criar_chave_concatenada(df)
     return df
    def desagrupar_registros_em_pagamentos_mensais(self, df):
        new_df = pd.DataFrame()

        for i in range(df["Meses"].max()):
            new_df = pd.concat([new_df, df[df["Meses"] > 1]], ignore_index=True)
            df["Meses"] = df["Meses"].apply(self.subtrair_mes_se_maior_que_um)
            df[df["Meses"] > 1]
        
        new_df = formata.criar_chave_concatenada(new_df)
        df = pd.concat([new_df, df], ignore_index=True)
        df = self.add_meses_registros_desagrupados_datas_mrr(df)

        return df
Exemplo n.º 5
0
    def test_criar_chave_concatenada(self):
        df = self.cria_data_frame_test()
        df.loc[:, "Meses"] = pd.Series([3, 3, 1], index=df.index)

        df = FormatadorDadosPagamentos.criar_chave_concatenada(df)
        erro = "criar_chave_concatenada não criou a chave corretamente"

        assert df[df['ClienteID'] ==
                  1]['chave'].iloc[0] == '1-01/01/2017-1', erro
        assert df[df['ClienteID'] ==
                  2]['chave'].iloc[0] == '2-12/08/2018-3', erro
        assert df[df['ClienteID'] ==
                  3]['chave'].iloc[0] == '3-05/03/2017-3', erro
    def calcular_cancelled_mrr(self, df):
        df["CancelledMRR"] = 0
        new_df = pd.DataFrame()

        chave_df_cancelled_mrr = df.groupby('ClienteID').last()["chave"]
        cancelled_mrr = df["chave"].isin(chave_df_cancelled_mrr.values)    
        data_ultimoMes = self.retornar_data_ultimo_mes_e_dez_dias() > df["DataPagamento"]

        new_df = pd.concat([new_df, df[(cancelled_mrr) & (data_ultimoMes)]], ignore_index=True)
        new_df["CancelledMRR"] = new_df["MRR"]
        new_df["DataPagamento"] = new_df.apply(lambda x: x["DataPagamento"] + pd.DateOffset(months = 1), axis=1)
        
        new_df.loc[:, ["MRR", "newMRR", "Valor", "Plano", "Meses", "PlanoNormalizado"]] = 0
        new_df = formata.criar_chave_concatenada(new_df)
        df = pd.concat([new_df, df], ignore_index=True)
        return df
Exemplo n.º 7
0
    def calcular_dados_pagamentos(self):
        calculo = CalculoDadosPagamento()

        self.df_pagamentos = calculo.calcular_mrr(self.df_pagamentos)
        self.df_pagamentos = calculo.desagrupar_registros_em_pagamentos_mensais(
            self.df_pagamentos)

        self.df_pagamentos = formata.ordenar_df_data(self.df_pagamentos)
        self.df_pagamentos = formata.criar_chave_concatenada(
            self.df_pagamentos)
        self.df_pagamentos = calculo.calcular_new_mrr(self.df_pagamentos)

        self.df_pagamentos = formata.ordenar_df_data(self.df_pagamentos)
        self.df_pagamentos = calculo.calcular_cancelled_mrr(self.df_pagamentos)

        self.df_pagamentos = formata.ordenar_df_data(self.df_pagamentos)
        self.df_pagamentos = calculo.calcular_contraction_expansion_e_resurrected_mrr(
            self.df_pagamentos)