def testRendementMethodeLarcher(self): bi = Bien_Immo(50000, 0, 0, 0, 0) bi.add_lot(Lot("T2", 50, 500)) rdt = Rendement(bi) self.assertEqual(rdt.rendement_methode_larcher, 0.09) bi = Bien_Immo(0, 0, 0, 0, 0) rdt = Rendement(bi) self.assertEqual(rdt.rendement_methode_larcher, 0)
def testRendementBrut(self): bi = Bien_Immo(50000, 0, 0, 0, 0) bi.add_lot(Lot("T2", 50, 500)) rdt = Rendement(bi) self.assertEqual(rdt.rendement_brut, 0.12) bi = Bien_Immo(0, 0, 0, 0, 0) rdt = Rendement(bi) self.assertEqual(rdt.rendement_brut, 0)
def testCopropriete(self): self.achat_data['prix_net_vendeur'] = 115000 self.lots_data[0]['loyer_nu_mensuel'] = 500 self.lots_data[0]['charges']['copropriete'] = 1000 bi = Factory.make_bien_immo(self.achat_data, self.lots_data) rdt = Rendement(bi) self.assertAlmostEqual(rdt.rendement_net, 0.0435, 4)
def testVacanceLocative(self): self.achat_data['prix_net_vendeur'] = 115000 self.lots_data[0]['loyer_nu_mensuel'] = 500 self.lots_data[0]['charges']['vacance_locative_taux'] = 1 / 24 bi = Factory.make_bien_immo(self.achat_data, self.lots_data) rdt = Rendement(bi) self.assertAlmostEqual(rdt.rendement_net, 0.05, 4)
def testGestionAgence(self): self.achat_data['prix_net_vendeur'] = 115000 self.lots_data[0]['loyer_nu_mensuel'] = 500 self.lots_data[0]['charges']['agence_immo'] = 0.075 bi = Factory.make_bien_immo(self.achat_data, self.lots_data) rdt = Rendement(bi) self.assertAlmostEqual(rdt.rendement_net, 0.0483, 4)
def testTravauxProvision(self): self.achat_data['prix_net_vendeur'] = 115000 self.lots_data[0]['loyer_nu_mensuel'] = 500 self.lots_data[0]['charges']['travaux_provision_taux'] = 0.01 bi = Factory.make_bien_immo(self.achat_data, self.lots_data) rdt = Rendement(bi) self.assertAlmostEqual(rdt.rendement_net, 0.0517, 4)
def main(argv): configure_logger() logging.info('{} {}\n'.format(__NAME, __VERSION)) inputfile = parse_args(argv) # If path to input file is provided, create output log file in the same folder if inputfile: location = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(inputfile))) filepath = os.path.join(location, 'analyse_immo.log') add_logger_file_handler(filepath) input_data = load_file(inputfile) achat_data = input_data['achat'] defaut_data = input_data['defaut'] lots_data = input_data['lots'] credit_data = input_data['credit'] impot_data = input_data['impot'] database = Database() defaut = Factory.make_defaut(defaut_data) bien_immo = Factory.make_bien_immo(achat_data, lots_data, defaut) credit = Factory.make_credit(credit_data, bien_immo) rendement = Rendement(bien_immo, credit) # Impot annee_achat = achat_data['annee'] credit_duree = credit_data['duree_annee'] # IRPP + 2044 irpp_2044_list = list() for i_annee in range(credit_duree): annee_revenu = annee_achat + i_annee irpp = Factory.make_irpp(database, impot_data, annee_revenu) irpp.annexe_2044 = Factory.make_annexe_2044(database, bien_immo, credit, i_annee + 1) irpp_2044_list.append(irpp) # IRPP + Micro foncier irpp_micro_foncier_list = list() for i_annee in range(credit_duree): annee_revenu = annee_achat + i_annee irpp = Factory.make_irpp(database, impot_data, annee_revenu) irpp.micro_foncier = Factory.make_micro_foncier(database, bien_immo) irpp_micro_foncier_list.append(irpp) # Rapport generate_rapport(bien_immo, credit, annee_achat, irpp_2044_list, irpp_micro_foncier_list, rendement)
def testRendementNet(self): bi = Bien_Immo(0, 0, 0, 0, 0) rdt = Rendement(bi) self.assertEqual(rdt.rendement_net, 0) bi = Bien_Immo(50000, 0, 0, 0, 0) bi.add_lot(Lot("T2", 50, 500)) rdt = Rendement(bi) self.assertEqual(rdt.rendement_net, 0.12) lot = Lot("T2", 50, 500) charge = Charge(lot, None) charge.add(Charge.charge_e.copropriete, 51 * 12) charge.add(Charge.charge_e.prime_assurance, 90) charge.add(Charge.charge_e.vacance_locative, 1 / 12) charge.add(Charge.charge_e.agence_immo, 0.05) lot.charge = charge bi.add_lot(lot) self.assertAlmostEqual(bi.charges + bi.provisions, 1002, 2) self.assertAlmostEqual(rdt.rendement_net, 0.21, 2)
def testRendementBrut(self): self.achat_data['prix_net_vendeur'] = 100000 self.lots_data[0]['loyer_nu_mensuel'] = 500 bi = Factory.make_bien_immo(self.achat_data, self.lots_data) rdt = Rendement(bi) self.assertEqual(rdt.rendement_brut, 0.06) self.achat_data['frais_agence'] = 0.06 bi = Factory.make_bien_immo(self.achat_data, self.lots_data) rdt = Rendement(bi) self.assertAlmostEqual(rdt.rendement_brut, 0.057, 3) self.achat_data['frais_agence'] = 0 self.achat_data['frais_notaire'] = 0.09 bi = Factory.make_bien_immo(self.achat_data, self.lots_data) rdt = Rendement(bi) self.assertAlmostEqual(rdt.rendement_brut, 0.055, 3) self.achat_data['frais_agence'] = 0.06 self.achat_data['frais_notaire'] = 0.09 bi = Factory.make_bien_immo(self.achat_data, self.lots_data) rdt = Rendement(bi) self.assertAlmostEqual(rdt.rendement_brut, 0.052, 3)
def setUp(self): __location__ = os.path.realpath( os.path.join(os.getcwd(), os.path.dirname(__file__))) __DATA_TEST_PATHNAME = os.path.join(__location__, 'data', 'input_test_simulation_B.json') with open(__DATA_TEST_PATHNAME, 'r') as file: input_data = json.load(file) self.achat_data = input_data['achat'] self.lots_data = input_data['lots'] self.credit_data = input_data['credit'] self.bi = Factory.make_bien_immo(self.achat_data, self.lots_data) self.credit = Factory.make_credit(self.credit_data, self.bi) self.rdt = Rendement(self.bi, self.credit)
def testCashflowMensuel(self): self.achat_data['prix_net_vendeur'] = 136000 self.lots_data[0]['loyer_nu_mensuel'] = 1000 self.lots_data[0]['charges']['taxe_fonciere'] = 1500 self.lots_data[0]['charges']['PNO'] = 100 self.lots_data[0]['charges']['travaux_provision_taux'] = 0.05 self.credit_data['duree_annee'] = 20 self.credit_data['taux_interet'] = 0.018 self.credit_data['taux_assurance'] = 0.0036 self.credit_data['mode'] = 'fixe_ci' bi = Factory.make_bien_immo(self.achat_data, self.lots_data) cred = Factory.make_credit(self.credit_data, bi) rdt = Rendement(bi, cred) self.assertAlmostEqual(rdt.cashflow_net_mensuel, 100.67, 2)
def testCashflow(self): bi = Bien_Immo(50000, 0, 0, 0, 0) lot1 = Lot("T2", 50, 500) bi.add_lot(lot1) cr = Credit(50000, 240, 0.02, Credit.taux_e.periodique, 0, Credit.mode_e.fixe_CI, 0, 0) rdt = Rendement(bi, cr) self.assertAlmostEqual(rdt.cashflow_net_mensuel, 247.06, 2) lot2 = Lot("T2", 50, 500) charge = Charge(lot2, None) charge.add(Charge.charge_e.copropriete, 51 * 12) charge.add(Charge.charge_e.prime_assurance, 90) charge.add(Charge.charge_e.vacance_locative, 1 / 12) charge.add(Charge.charge_e.agence_immo, 0.05) lot2.charge = charge bi.add_lot(lot2) self.assertAlmostEqual(bi.loyer_nu_brut_annuel, 12000, 2) self.assertAlmostEqual(bi.charges + bi.provisions, 1002, 2) self.assertAlmostEqual(cr.get_mensualite_avec_assurance(), 252.94, 2) self.assertAlmostEqual(rdt.cashflow_net_mensuel, 621.89, 2) self.assertAlmostEqual(rdt.cashflow_net_annuel, 7462.70, 2)
def testSansCharges(self): self.achat_data['prix_net_vendeur'] = 115000 self.lots_data[0]['loyer_nu_mensuel'] = 500 bi = Factory.make_bien_immo(self.achat_data, self.lots_data) rdt = Rendement(bi) self.assertAlmostEqual(rdt.rendement_net, 0.052, 3)
def testRendementMethodeLarcher(self): self.achat_data['prix_net_vendeur'] = 100000 self.lots_data[0]['loyer_nu_mensuel'] = 500 bi = Factory.make_bien_immo(self.achat_data, self.lots_data) rdt = Rendement(bi) self.assertEqual(rdt.rendement_methode_larcher, 0.045)