You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

707 lines
28 KiB

  1. # Author: Julien Coux
  2. # Copyright 2016 Camptocamp SA
  3. # Copyright 2020 ForgeFlow S.L. (https://www.forgeflow.com)
  4. # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
  5. import time
  6. from datetime import date
  7. from odoo import api, fields
  8. from odoo.tests import common
  9. class TestGeneralLedgerReport(common.TransactionCase):
  10. def setUp(self):
  11. super(TestGeneralLedgerReport, self).setUp()
  12. self.before_previous_fy_year = fields.Date.from_string("2014-05-05")
  13. self.previous_fy_date_start = fields.Date.from_string("2015-01-01")
  14. self.previous_fy_date_end = fields.Date.from_string("2015-12-31")
  15. self.fy_date_start = fields.Date.from_string("2016-01-01")
  16. self.fy_date_end = fields.Date.from_string("2016-12-31")
  17. self.receivable_account = self.env["account.account"].search(
  18. [("user_type_id.name", "=", "Receivable")], limit=1
  19. )
  20. self.income_account = self.env["account.account"].search(
  21. [("user_type_id.name", "=", "Income")], limit=1
  22. )
  23. self.unaffected_account = self.env["account.account"].search(
  24. [
  25. (
  26. "user_type_id",
  27. "=",
  28. self.env.ref("account.data_unaffected_earnings").id,
  29. )
  30. ],
  31. limit=1,
  32. )
  33. self.partner = self.env.ref("base.res_partner_12")
  34. def _add_move(
  35. self,
  36. date,
  37. receivable_debit,
  38. receivable_credit,
  39. income_debit,
  40. income_credit,
  41. unaffected_debit=0,
  42. unaffected_credit=0,
  43. ):
  44. move_name = "expense accrual"
  45. journal = self.env["account.journal"].search([], limit=1)
  46. partner = self.env.ref("base.res_partner_12")
  47. move_vals = {
  48. "journal_id": journal.id,
  49. "name": move_name,
  50. "date": date,
  51. "line_ids": [
  52. (
  53. 0,
  54. 0,
  55. {
  56. "name": move_name,
  57. "debit": receivable_debit,
  58. "credit": receivable_credit,
  59. "account_id": self.receivable_account.id,
  60. "partner_id": partner.id,
  61. },
  62. ),
  63. (
  64. 0,
  65. 0,
  66. {
  67. "name": move_name,
  68. "debit": income_debit,
  69. "credit": income_credit,
  70. "account_id": self.income_account.id,
  71. "partner_id": partner.id,
  72. },
  73. ),
  74. (
  75. 0,
  76. 0,
  77. {
  78. "name": move_name,
  79. "debit": unaffected_debit,
  80. "credit": unaffected_credit,
  81. "account_id": self.unaffected_account.id,
  82. "partner_id": partner.id,
  83. },
  84. ),
  85. ],
  86. }
  87. move = self.env["account.move"].create(move_vals)
  88. move.post()
  89. def _get_report_lines(self, with_partners=False):
  90. centralize = True
  91. if with_partners:
  92. centralize = False
  93. company = self.env.ref("base.main_company")
  94. general_ledger = self.env["general.ledger.report.wizard"].create(
  95. {
  96. "date_from": self.fy_date_start,
  97. "date_to": self.fy_date_end,
  98. "target_move": "posted",
  99. "hide_account_at_0": False,
  100. "company_id": company.id,
  101. "fy_start_date": self.fy_date_start,
  102. "centralize": centralize,
  103. }
  104. )
  105. data = general_ledger._prepare_report_general_ledger()
  106. res_data = self.env[
  107. "report.account_financial_report.general_ledger"
  108. ]._get_report_values(general_ledger, data)
  109. return res_data
  110. @api.model
  111. def check_account_in_report(self, account_id, general_ledger):
  112. account_in_report = False
  113. for account in general_ledger:
  114. if account["id"] == account_id:
  115. account_in_report = True
  116. break
  117. return account_in_report
  118. @api.model
  119. def check_partner_in_report(self, account_id, partner_id, general_ledger):
  120. partner_in_report = False
  121. for account in general_ledger:
  122. if account["id"] == account_id and account["partners"]:
  123. for partner in account["list_partner"]:
  124. if partner["id"] == partner_id:
  125. partner_in_report = True
  126. return partner_in_report
  127. @api.model
  128. def _get_initial_balance(self, account_id, general_ledger):
  129. initial_balance = False
  130. for account in general_ledger:
  131. if account["id"] == account_id:
  132. initial_balance = account["init_bal"]
  133. return initial_balance
  134. @api.model
  135. def _get_partner_initial_balance(self, account_id, partner_id, general_ledger):
  136. initial_balance = False
  137. for account in general_ledger:
  138. if account["id"] == account_id and account["partners"]:
  139. for partner in account["list_partner"]:
  140. if partner["id"] == partner_id:
  141. initial_balance = partner["init_bal"]
  142. return initial_balance
  143. @api.model
  144. def _get_final_balance(self, account_id, general_ledger):
  145. final_balance = False
  146. for account in general_ledger:
  147. if account["id"] == account_id:
  148. final_balance = account["fin_bal"]
  149. return final_balance
  150. @api.model
  151. def _get_partner_final_balance(self, account_id, partner_id, general_ledger):
  152. final_balance = False
  153. for account in general_ledger:
  154. if account["id"] == account_id and account["partners"]:
  155. for partner in account["list_partner"]:
  156. if partner["id"] == partner_id:
  157. final_balance = partner["fin_bal"]
  158. return final_balance
  159. def test_01_account_balance(self):
  160. # Generate the general ledger line
  161. res_data = self._get_report_lines()
  162. general_ledger = res_data["general_ledger"]
  163. check_receivable_account = self.check_account_in_report(
  164. self.receivable_account.id, general_ledger
  165. )
  166. self.assertFalse(check_receivable_account)
  167. check_income_account = self.check_account_in_report(
  168. self.income_account.id, general_ledger
  169. )
  170. self.assertFalse(check_income_account)
  171. # Add a move at the previous day of the first day of fiscal year
  172. # to check the initial balance
  173. self._add_move(
  174. date=self.previous_fy_date_end,
  175. receivable_debit=1000,
  176. receivable_credit=0,
  177. income_debit=0,
  178. income_credit=1000,
  179. )
  180. # Re Generate the general ledger line
  181. res_data = self._get_report_lines()
  182. general_ledger = res_data["general_ledger"]
  183. check_receivable_account = self.check_account_in_report(
  184. self.receivable_account.id, general_ledger
  185. )
  186. self.assertTrue(check_receivable_account)
  187. check_income_account = self.check_account_in_report(
  188. self.income_account.id, general_ledger
  189. )
  190. self.assertFalse(check_income_account)
  191. # Check the initial and final balance
  192. receivable_init_balance = self._get_initial_balance(
  193. self.receivable_account.id, general_ledger
  194. )
  195. receivable_fin_balance = self._get_final_balance(
  196. self.receivable_account.id, general_ledger
  197. )
  198. self.assertEqual(receivable_init_balance["debit"], 1000)
  199. self.assertEqual(receivable_init_balance["credit"], 0)
  200. self.assertEqual(receivable_init_balance["balance"], 1000)
  201. self.assertEqual(receivable_fin_balance["debit"], 1000)
  202. self.assertEqual(receivable_fin_balance["credit"], 0)
  203. self.assertEqual(receivable_fin_balance["balance"], 1000)
  204. # Add reversale move of the initial move the first day of fiscal year
  205. # to check the first day of fiscal year is not used
  206. # to compute the initial balance
  207. self._add_move(
  208. date=self.fy_date_start,
  209. receivable_debit=0,
  210. receivable_credit=1000,
  211. income_debit=1000,
  212. income_credit=0,
  213. )
  214. # Re Generate the general ledger line
  215. res_data = self._get_report_lines()
  216. general_ledger = res_data["general_ledger"]
  217. check_receivable_account = self.check_account_in_report(
  218. self.receivable_account.id, general_ledger
  219. )
  220. self.assertTrue(check_receivable_account)
  221. check_income_account = self.check_account_in_report(
  222. self.income_account.id, general_ledger
  223. )
  224. self.assertTrue(check_income_account)
  225. # Check the initial and final balance
  226. receivable_init_balance = self._get_initial_balance(
  227. self.receivable_account.id, general_ledger
  228. )
  229. receivable_fin_balance = self._get_final_balance(
  230. self.receivable_account.id, general_ledger
  231. )
  232. income_init_balance = self._get_initial_balance(
  233. self.income_account.id, general_ledger
  234. )
  235. income_fin_balance = self._get_final_balance(
  236. self.income_account.id, general_ledger
  237. )
  238. self.assertEqual(receivable_init_balance["debit"], 1000)
  239. self.assertEqual(receivable_init_balance["credit"], 0)
  240. self.assertEqual(receivable_init_balance["balance"], 1000)
  241. self.assertEqual(receivable_fin_balance["debit"], 1000)
  242. self.assertEqual(receivable_fin_balance["credit"], 1000)
  243. self.assertEqual(receivable_fin_balance["balance"], 0)
  244. self.assertEqual(income_init_balance["debit"], 0)
  245. self.assertEqual(income_init_balance["credit"], 0)
  246. self.assertEqual(income_init_balance["balance"], 0)
  247. self.assertEqual(income_fin_balance["debit"], 1000)
  248. self.assertEqual(income_fin_balance["credit"], 0)
  249. self.assertEqual(income_fin_balance["balance"], 1000)
  250. # Add another move at the end day of fiscal year
  251. # to check that it correctly used on report
  252. self._add_move(
  253. date=self.fy_date_end,
  254. receivable_debit=0,
  255. receivable_credit=1000,
  256. income_debit=1000,
  257. income_credit=0,
  258. )
  259. # Re Generate the general ledger line
  260. res_data = self._get_report_lines()
  261. general_ledger = res_data["general_ledger"]
  262. check_receivable_account = self.check_account_in_report(
  263. self.receivable_account.id, general_ledger
  264. )
  265. self.assertTrue(check_receivable_account)
  266. check_income_account = self.check_account_in_report(
  267. self.income_account.id, general_ledger
  268. )
  269. self.assertTrue(check_income_account)
  270. # Check the initial and final balance
  271. receivable_init_balance = self._get_initial_balance(
  272. self.receivable_account.id, general_ledger
  273. )
  274. receivable_fin_balance = self._get_final_balance(
  275. self.receivable_account.id, general_ledger
  276. )
  277. income_init_balance = self._get_initial_balance(
  278. self.income_account.id, general_ledger
  279. )
  280. income_fin_balance = self._get_final_balance(
  281. self.income_account.id, general_ledger
  282. )
  283. self.assertEqual(receivable_init_balance["debit"], 1000)
  284. self.assertEqual(receivable_init_balance["credit"], 0)
  285. self.assertEqual(receivable_init_balance["balance"], 1000)
  286. self.assertEqual(receivable_fin_balance["debit"], 1000)
  287. self.assertEqual(receivable_fin_balance["credit"], 2000)
  288. self.assertEqual(receivable_fin_balance["balance"], -1000)
  289. self.assertEqual(income_init_balance["debit"], 0)
  290. self.assertEqual(income_init_balance["credit"], 0)
  291. self.assertEqual(income_init_balance["balance"], 0)
  292. self.assertEqual(income_fin_balance["debit"], 2000)
  293. self.assertEqual(income_fin_balance["credit"], 0)
  294. self.assertEqual(income_fin_balance["balance"], 2000)
  295. def test_02_partner_balance(self):
  296. # Generate the general ledger line
  297. res_data = self._get_report_lines(with_partners=True)
  298. general_ledger = res_data["general_ledger"]
  299. check_partner = self.check_partner_in_report(
  300. self.receivable_account.id, self.partner.id, general_ledger
  301. )
  302. self.assertFalse(check_partner)
  303. # Add a move at the previous day of the first day of fiscal year
  304. # to check the initial balance
  305. self._add_move(
  306. date=self.previous_fy_date_end,
  307. receivable_debit=1000,
  308. receivable_credit=0,
  309. income_debit=0,
  310. income_credit=1000,
  311. )
  312. # Re Generate the general ledger line
  313. res_data = self._get_report_lines(with_partners=True)
  314. general_ledger = res_data["general_ledger"]
  315. check_partner = self.check_partner_in_report(
  316. self.receivable_account.id, self.partner.id, general_ledger
  317. )
  318. self.assertTrue(check_partner)
  319. # Check the initial and final balance
  320. partner_initial_balance = self._get_partner_initial_balance(
  321. self.receivable_account.id, self.partner.id, general_ledger
  322. )
  323. partner_final_balance = self._get_partner_final_balance(
  324. self.receivable_account.id, self.partner.id, general_ledger
  325. )
  326. self.assertEqual(partner_initial_balance["debit"], 1000)
  327. self.assertEqual(partner_initial_balance["credit"], 0)
  328. self.assertEqual(partner_initial_balance["balance"], 1000)
  329. self.assertEqual(partner_final_balance["debit"], 1000)
  330. self.assertEqual(partner_final_balance["credit"], 0)
  331. self.assertEqual(partner_final_balance["balance"], 1000)
  332. # Add reversale move of the initial move the first day of fiscal year
  333. # to check the first day of fiscal year is not used
  334. # to compute the initial balance
  335. self._add_move(
  336. date=self.fy_date_start,
  337. receivable_debit=0,
  338. receivable_credit=1000,
  339. income_debit=1000,
  340. income_credit=0,
  341. )
  342. # Re Generate the general ledger line
  343. res_data = self._get_report_lines(with_partners=True)
  344. general_ledger = res_data["general_ledger"]
  345. check_partner = self.check_partner_in_report(
  346. self.receivable_account.id, self.partner.id, general_ledger
  347. )
  348. self.assertTrue(check_partner)
  349. # Check the initial and final balance
  350. partner_initial_balance = self._get_partner_initial_balance(
  351. self.receivable_account.id, self.partner.id, general_ledger
  352. )
  353. partner_final_balance = self._get_partner_final_balance(
  354. self.receivable_account.id, self.partner.id, general_ledger
  355. )
  356. self.assertEqual(partner_initial_balance["debit"], 1000)
  357. self.assertEqual(partner_initial_balance["credit"], 0)
  358. self.assertEqual(partner_initial_balance["balance"], 1000)
  359. self.assertEqual(partner_final_balance["debit"], 1000)
  360. self.assertEqual(partner_final_balance["credit"], 1000)
  361. self.assertEqual(partner_final_balance["balance"], 0)
  362. # Add another move at the end day of fiscal year
  363. # to check that it correctly used on report
  364. self._add_move(
  365. date=self.fy_date_end,
  366. receivable_debit=0,
  367. receivable_credit=1000,
  368. income_debit=1000,
  369. income_credit=0,
  370. )
  371. # Re Generate the general ledger line
  372. res_data = self._get_report_lines(with_partners=True)
  373. general_ledger = res_data["general_ledger"]
  374. check_partner = self.check_partner_in_report(
  375. self.receivable_account.id, self.partner.id, general_ledger
  376. )
  377. self.assertTrue(check_partner)
  378. # Check the initial and final balance
  379. partner_initial_balance = self._get_partner_initial_balance(
  380. self.receivable_account.id, self.partner.id, general_ledger
  381. )
  382. partner_final_balance = self._get_partner_final_balance(
  383. self.receivable_account.id, self.partner.id, general_ledger
  384. )
  385. self.assertEqual(partner_initial_balance["debit"], 1000)
  386. self.assertEqual(partner_initial_balance["credit"], 0)
  387. self.assertEqual(partner_initial_balance["balance"], 1000)
  388. self.assertEqual(partner_final_balance["debit"], 1000)
  389. self.assertEqual(partner_final_balance["credit"], 2000)
  390. self.assertEqual(partner_final_balance["balance"], -1000)
  391. def test_03_unaffected_account_balance(self):
  392. # Generate the general ledger line
  393. res_data = self._get_report_lines()
  394. general_ledger = res_data["general_ledger"]
  395. check_unaffected_account = self.check_account_in_report(
  396. self.unaffected_account.id, general_ledger
  397. )
  398. self.assertTrue(check_unaffected_account)
  399. # Check the initial and final balance
  400. unaffected_init_balance = self._get_initial_balance(
  401. self.unaffected_account.id, general_ledger
  402. )
  403. unaffected_fin_balance = self._get_final_balance(
  404. self.unaffected_account.id, general_ledger
  405. )
  406. self.assertEqual(unaffected_init_balance["debit"], 0)
  407. self.assertEqual(unaffected_init_balance["credit"], 0)
  408. self.assertEqual(unaffected_init_balance["balance"], 0)
  409. self.assertEqual(unaffected_fin_balance["debit"], 0)
  410. self.assertEqual(unaffected_fin_balance["credit"], 0)
  411. self.assertEqual(unaffected_fin_balance["balance"], 0)
  412. # Add a move at the previous day of the first day of fiscal year
  413. # to check the initial balance
  414. self._add_move(
  415. date=self.previous_fy_date_end,
  416. receivable_debit=1000,
  417. receivable_credit=0,
  418. income_debit=0,
  419. income_credit=1000,
  420. )
  421. # Re Generate the general ledger line
  422. res_data = self._get_report_lines()
  423. general_ledger = res_data["general_ledger"]
  424. check_unaffected_account = self.check_account_in_report(
  425. self.unaffected_account.id, general_ledger
  426. )
  427. self.assertTrue(check_unaffected_account)
  428. # Check the initial and final balance
  429. unaffected_init_balance = self._get_initial_balance(
  430. self.unaffected_account.id, general_ledger
  431. )
  432. unaffected_fin_balance = self._get_final_balance(
  433. self.unaffected_account.id, general_ledger
  434. )
  435. self.assertEqual(unaffected_init_balance["debit"], 0)
  436. self.assertEqual(unaffected_init_balance["credit"], 1000)
  437. self.assertEqual(unaffected_init_balance["balance"], -1000)
  438. self.assertEqual(unaffected_fin_balance["debit"], 0)
  439. self.assertEqual(unaffected_fin_balance["credit"], 1000)
  440. self.assertEqual(unaffected_fin_balance["balance"], -1000)
  441. # Add reversale move of the initial move the first day of fiscal year
  442. # to check the first day of fiscal year is not used
  443. # to compute the initial balance
  444. self._add_move(
  445. date=self.fy_date_start,
  446. receivable_debit=0,
  447. receivable_credit=0,
  448. income_debit=0,
  449. income_credit=1000,
  450. unaffected_debit=1000,
  451. unaffected_credit=0,
  452. )
  453. # Re Generate the general ledger line
  454. res_data = self._get_report_lines()
  455. general_ledger = res_data["general_ledger"]
  456. check_unaffected_account = self.check_account_in_report(
  457. self.unaffected_account.id, general_ledger
  458. )
  459. self.assertTrue(check_unaffected_account)
  460. # Check the initial and final balance
  461. unaffected_init_balance = self._get_initial_balance(
  462. self.unaffected_account.id, general_ledger
  463. )
  464. unaffected_fin_balance = self._get_final_balance(
  465. self.unaffected_account.id, general_ledger
  466. )
  467. self.assertEqual(unaffected_init_balance["debit"], 0)
  468. self.assertEqual(unaffected_init_balance["credit"], 1000)
  469. self.assertEqual(unaffected_init_balance["balance"], -1000)
  470. self.assertEqual(unaffected_fin_balance["debit"], 1000)
  471. self.assertEqual(unaffected_fin_balance["credit"], 1000)
  472. self.assertEqual(unaffected_fin_balance["balance"], 0)
  473. # Add another move at the end day of fiscal year
  474. # to check that it correctly used on report
  475. self._add_move(
  476. date=self.fy_date_end,
  477. receivable_debit=3000,
  478. receivable_credit=0,
  479. income_debit=0,
  480. income_credit=0,
  481. unaffected_debit=0,
  482. unaffected_credit=3000,
  483. )
  484. # Re Generate the general ledger line
  485. res_data = self._get_report_lines()
  486. general_ledger = res_data["general_ledger"]
  487. check_unaffected_account = self.check_account_in_report(
  488. self.unaffected_account.id, general_ledger
  489. )
  490. self.assertTrue(check_unaffected_account)
  491. # Check the initial and final balance
  492. unaffected_init_balance = self._get_initial_balance(
  493. self.unaffected_account.id, general_ledger
  494. )
  495. unaffected_fin_balance = self._get_final_balance(
  496. self.unaffected_account.id, general_ledger
  497. )
  498. self.assertEqual(unaffected_init_balance["debit"], 0)
  499. self.assertEqual(unaffected_init_balance["credit"], 1000)
  500. self.assertEqual(unaffected_init_balance["balance"], -1000)
  501. self.assertEqual(unaffected_fin_balance["debit"], 1000)
  502. self.assertEqual(unaffected_fin_balance["credit"], 4000)
  503. self.assertEqual(unaffected_fin_balance["balance"], -3000)
  504. def test_04_unaffected_account_balance_2_years(self):
  505. # Generate the general ledger line
  506. res_data = self._get_report_lines()
  507. general_ledger = res_data["general_ledger"]
  508. check_unaffected_account = self.check_account_in_report(
  509. self.unaffected_account.id, general_ledger
  510. )
  511. self.assertTrue(check_unaffected_account)
  512. # Check the initial and final balance
  513. unaffected_init_balance = self._get_initial_balance(
  514. self.unaffected_account.id, general_ledger
  515. )
  516. unaffected_fin_balance = self._get_final_balance(
  517. self.unaffected_account.id, general_ledger
  518. )
  519. self.assertEqual(unaffected_init_balance["debit"], 0)
  520. self.assertEqual(unaffected_init_balance["credit"], 0)
  521. self.assertEqual(unaffected_init_balance["balance"], 0)
  522. self.assertEqual(unaffected_fin_balance["debit"], 0)
  523. self.assertEqual(unaffected_fin_balance["credit"], 0)
  524. self.assertEqual(unaffected_fin_balance["balance"], 0)
  525. # Add a move at any date 2 years before the balance
  526. # (to create an historic)
  527. self._add_move(
  528. date=self.before_previous_fy_year,
  529. receivable_debit=0,
  530. receivable_credit=1000,
  531. income_debit=1000,
  532. income_credit=0,
  533. )
  534. # Re Generate the general ledger line
  535. res_data = self._get_report_lines()
  536. general_ledger = res_data["general_ledger"]
  537. check_unaffected_account = self.check_account_in_report(
  538. self.unaffected_account.id, general_ledger
  539. )
  540. self.assertTrue(check_unaffected_account)
  541. # Check the initial and final balance
  542. unaffected_init_balance = self._get_initial_balance(
  543. self.unaffected_account.id, general_ledger
  544. )
  545. unaffected_fin_balance = self._get_final_balance(
  546. self.unaffected_account.id, general_ledger
  547. )
  548. self.assertEqual(unaffected_init_balance["debit"], 1000)
  549. self.assertEqual(unaffected_init_balance["credit"], 0)
  550. self.assertEqual(unaffected_init_balance["balance"], 1000)
  551. self.assertEqual(unaffected_fin_balance["debit"], 1000)
  552. self.assertEqual(unaffected_fin_balance["credit"], 0)
  553. self.assertEqual(unaffected_fin_balance["balance"], 1000)
  554. # Affect the company's result last year
  555. self._add_move(
  556. date=self.previous_fy_date_start,
  557. receivable_debit=1000,
  558. receivable_credit=0,
  559. income_debit=0,
  560. income_credit=0,
  561. unaffected_debit=0,
  562. unaffected_credit=1000,
  563. )
  564. # Add another move last year to test the initial balance this year
  565. self._add_move(
  566. date=self.previous_fy_date_start,
  567. receivable_debit=0,
  568. receivable_credit=500,
  569. income_debit=500,
  570. income_credit=0,
  571. unaffected_debit=0,
  572. unaffected_credit=0,
  573. )
  574. # Re Generate the general ledger line
  575. res_data = self._get_report_lines()
  576. general_ledger = res_data["general_ledger"]
  577. check_unaffected_account = self.check_account_in_report(
  578. self.unaffected_account.id, general_ledger
  579. )
  580. self.assertTrue(check_unaffected_account)
  581. # Check the initial and final balance
  582. unaffected_init_balance = self._get_initial_balance(
  583. self.unaffected_account.id, general_ledger
  584. )
  585. unaffected_fin_balance = self._get_final_balance(
  586. self.unaffected_account.id, general_ledger
  587. )
  588. self.assertEqual(unaffected_init_balance["debit"], 1500)
  589. self.assertEqual(unaffected_init_balance["credit"], 1000)
  590. self.assertEqual(unaffected_init_balance["balance"], 500)
  591. self.assertEqual(unaffected_fin_balance["debit"], 1500)
  592. self.assertEqual(unaffected_fin_balance["credit"], 1000)
  593. self.assertEqual(unaffected_fin_balance["balance"], 500)
  594. def test_partner_filter(self):
  595. partner_1 = self.env.ref("base.res_partner_1")
  596. partner_2 = self.env.ref("base.res_partner_2")
  597. partner_3 = self.env.ref("base.res_partner_3")
  598. partner_4 = self.env.ref("base.res_partner_4")
  599. partner_1.write({"is_company": False, "parent_id": partner_2.id})
  600. partner_3.write({"is_company": False})
  601. expected_list = [partner_2.id, partner_3.id, partner_4.id]
  602. context = {
  603. "active_ids": [partner_1.id, partner_2.id, partner_3.id, partner_4.id],
  604. "active_model": "res.partner",
  605. }
  606. wizard = self.env["general.ledger.report.wizard"].with_context(context)
  607. self.assertEqual(wizard._default_partners(), expected_list)
  608. def test_validate_date(self):
  609. company_id = self.env.ref("base.main_company")
  610. company_id.write(
  611. {"fiscalyear_last_day": 31, "fiscalyear_last_month": 12,}
  612. )
  613. user = self.env.ref("base.user_root").with_context(company_id=company_id.id)
  614. wizard = self.env["general.ledger.report.wizard"].with_context(user=user.id)
  615. self.assertEqual(wizard._init_date_from(), time.strftime("%Y") + "-01-01")
  616. def test_validate_date_range(self):
  617. data_type = self.env["date.range.type"].create(
  618. {"name": "Fiscal year", "company_id": False, "allow_overlap": False}
  619. )
  620. dr = self.env["date.range"].create(
  621. {
  622. "name": "FS2015",
  623. "date_start": "2018-01-01",
  624. "date_end": "2018-12-31",
  625. "type_id": data_type.id,
  626. }
  627. )
  628. wizard = self.env["general.ledger.report.wizard"].create(
  629. {"date_range_id": dr.id}
  630. )
  631. wizard.onchange_date_range_id()
  632. self.assertEqual(wizard.date_from, date(2018, 1, 1))
  633. self.assertEqual(wizard.date_to, date(2018, 12, 31))