Пример #1
0
    def test_basic(self):
        """
        python -m unittest tests.models.facture.TestFacture.test_basic

        """
        # Add Fournisseur
        test_facture = Facture(self.d_index, self.d_data, path=self.path)
        test_facture.add()

        # Assert new Fournisseur is in the database
        df = test_facture.load_db(test_facture.path)

        for k, v in {'facture_id': self.facture_id + 1}.items():
            df = df.loc[df[k] == v]
        self.assertTrue(not df.empty)

        # Make sure same Fournisseur can't added twice
        try:
            test_facture = Facture({'facture_id': self.facture_id + 1},
                                   self.d_data,
                                   path=self.path)
            test_facture.add()
            self.assertTrue(False)
        except ValueError:
            self.assertTrue(True)

        # test alter Fournisseur
        test_facture.objet = 'ras'
        test_facture.alter()

        # Assert record has bee changed in the database
        df = test_facture.load_db(test_facture.path)

        for k, v in {'facture_id': self.facture_id + 1}.items():
            df = df.loc[df[k] == v]
        self.assertEqual(df.iloc[0]['objet'], 'ras')

        # Assert deletion works
        test_facture.delete()
        df = test_facture.load_db(test_facture.path)
        for k, v in {'facture_id': self.facture_id + 1}.items():
            df = df.loc[df[k] == v]

        self.assertTrue(df.empty)
Пример #2
0
    def load_view():
        # Load affaire db
        df = Facture.load_db()
        df['affaire_num'] = df.affaire_id.apply(lambda x: x.split('/')[0])
        df['affaire_ind'] = df.affaire_id.apply(lambda x: x.split('/')[1])

        # Join devis information
        df_devis = Devis.load_db()
        df_devis = df_devis[[
            'devis_id', 'designation_client', 'object', 'price', 'date_start',
            'date_end', 'base_prix'
        ]]

        df_info = Affaire.load_db()
        df_info = df_info[['affaire_num', 'affaire_ind', 'devis_id', 'contact_facturation_client', 'responsable', 'fae']]\
            .merge(df_devis, on='devis_id', how='left')

        # Join info to billing table
        df = df.merge(df_info, on=['affaire_num', 'affaire_ind'], how='left')

        return df
Пример #3
0
    def load_view(return_cols=True):

        # Load affaire db
        df = Affaire.load_db()
        l_models_cols = []

        # Join devis information
        df_devis = Devis.load_db()
        df_devis = df_devis[[
            c for c in df_devis.columns
            if c not in ['creation_date', 'maj_date']
        ]]
        df_devis = df_devis.rename(columns={
            c: '{}_devis'.format(c)
            for c in df_devis.columns if c != 'devis_id'
        })
        df = df.merge(df_devis, on='devis_id', how='left')

        l_models_cols += [c for c in df_devis.columns if c != 'devis_id']

        # Load billing and Build affaire index
        df_facture = Facture.load_db()
        df_facture = FeuilleTravaux.split_main_indices(df_facture)

        # For each situation join amount factured
        for i in range(1, 13):
            df_facture_ = df_facture.loc[df_facture['situation'] == i]\
                .rename(columns={'montant_ht': 'montant_situation_{}'.format(i)})
            df = FeuilleTravaux.merge_to_main(
                df, df_facture_, ['montant_situation_{}'.format(i)])
            l_models_cols += ['montant_situation_{}'.format(i)]

        # Join command information
        df_commande = Commande.load_db()
        df_commande = FeuilleTravaux.split_main_indices(df_commande)

        df = FeuilleTravaux\
            .merge_to_main(
                df, df_commande.rename(columns={'montant_ht': 'montant_total_commande'}), ['montant_total_commande']
            )

        l_models_cols += ['montant_total_commande']

        # Load hours information
        df_heure = Heure.load_db()
        df_heure = FeuilleTravaux.split_main_indices(df_heure)

        # Heures non interimaires
        df_heure_ = df_heure.loc[df_heure['name'] != 'interim']\
            .rename(columns={'heure_prod': 'heure_prod_saisie', 'heure_autre': 'heure_autre_saisie'})
        df = FeuilleTravaux.merge_to_main(
            df, df_heure_, ['heure_prod_saisie', 'heure_autre_saisie'])

        # Heures interimaires
        df_heure_ = df_heure.loc[df_heure['name'] == 'interim']\
            .rename(columns={'heure_prod': 'heure_prod_saisie_interim', 'heure_autre': 'heure_autre_saisie_interim'})
        df = FeuilleTravaux.merge_to_main(
            df, df_heure_,
            ['heure_prod_saisie_interim', 'heure_autre_saisie_interim'])

        l_models_cols += [
            'heure_prod_saisie', 'heure_autre_saisie',
            'heure_prod_saisie_interim', 'heure_autre_saisie_interim'
        ]

        if return_cols:
            return df, l_models_cols

        return df