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)
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
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