GoodERP
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.

559 lines
24KB

  1. from odoo.tests.common import TransactionCase
  2. from odoo.exceptions import UserError
  3. class TestCustomerStatements(TransactionCase):
  4. '''测试客户对账单'''
  5. def setUp(self):
  6. '''客户账单向导及数据'''
  7. super(TestCustomerStatements, self).setUp()
  8. self.env.ref('core.goods_category_1').account_id = self.env.ref(
  9. 'finance.account_goods').id
  10. self.env.ref('warehouse.wh_in_whin0').date = '2016-02-06'
  11. # 业务伙伴对账单向导: self._context.get('default_customer')
  12. self.statement = self.env['partner.statements.report.wizard'].create(
  13. {'partner_id': self.env.ref('core.jd').id,
  14. 'to_date': '2016-11-01'}).with_context({'default_customer': True})
  15. # 客户期初余额,查看原始单据应报错
  16. self.env.ref('core.jd').receivable_init = 1000
  17. # 创建收款记录
  18. money_get = self.env.ref('money.get_40000')
  19. money_get.money_order_done()
  20. # 创建销售出货单记录
  21. self.env.ref('warehouse.wh_move_line_14').goods_uos_qty = 200
  22. self.env.ref(
  23. 'warehouse.wh_move_line_14').production_date = '2016-02-04'
  24. self.env.ref('warehouse.wh_move_line_14').action_done()
  25. sell_order = self.env.ref('sell.sell_order_2')
  26. sell_order.sell_order_done()
  27. # 因为下面要用到 商品在系统里面必须是有数量的 所以,找到一个简单的方式直接确认已有的盘点单
  28. warehouse_obj = self.env.ref('warehouse.wh_in_whin0')
  29. warehouse_obj.approve_order()
  30. receipt = self.env['sell.delivery'].search(
  31. [('order_id', '=', sell_order.id)])
  32. receipt.sell_delivery_done()
  33. # 创建销售退货单记录
  34. sell_return = self.env.ref('sell.sell_order_return')
  35. sell_return.sell_order_done()
  36. receipt_return = self.env['sell.delivery'].search(
  37. [('order_id', '=', sell_return.id)])
  38. receipt_return.sell_delivery_done()
  39. invoices = self.env['money.invoice'].search([('state', '=', 'draft')])
  40. for i in invoices:
  41. i.money_invoice_done()
  42. def test_customer_statements_wizard(self):
  43. '''客户对账单向导'''
  44. # 测试客户对账单方法中的'结束日期不能小于开始日期!'
  45. self.statement.from_date = '2016-11-03'
  46. with self.assertRaises(UserError):
  47. self.statement.partner_statements_without_goods()
  48. with self.assertRaises(UserError):
  49. self.statement.partner_statements_with_goods()
  50. # 测试客户对账单方法中的from_date的默认值是否是公司启用日期
  51. statement_date = self.env['partner.statements.report.wizard'].create({'partner_id': self.env.ref('sell.sell_order_1').partner_id.id,
  52. 'to_date': '2016-11-03'})
  53. self.assertEqual(statement_date.from_date,
  54. self.env.user.company_id.start_date)
  55. def test_customer_statements_find_source(self):
  56. '''查看客户对账单明细'''
  57. # 查看客户对账单明细不带商品明细
  58. self.statement.partner_statements_without_goods()
  59. customer_statement = self.env['customer.statements.report'].search([])
  60. customer_statement_init = self.env['customer.statements.report'].search([('move_id', '=', False),
  61. ('amount', '!=', 0)])
  62. # 如果对账单中是期初余额行,点击查看按钮应报错
  63. with self.assertRaises(UserError):
  64. customer_statement_init.find_source_order()
  65. for report in list(set(customer_statement) - set(customer_statement_init)):
  66. report.find_source_order()
  67. # 查看客户对账单带商品明细
  68. self.statement.partner_statements_with_goods()
  69. customer_statement_goods = self.env['customer.statements.report.with.goods'].search([
  70. ('name', '!=', False)])
  71. customer_statement_goods_init = self.env['customer.statements.report.with.goods'].search([('move_id', '=', False),
  72. ('amount', '!=', 0)])
  73. # 如果对账单中是期初余额行,点击查看按钮应报错
  74. with self.assertRaises(UserError):
  75. customer_statement_goods_init.find_source_order()
  76. for report in list(set(customer_statement_goods) - set(customer_statement_goods_init)):
  77. self.assertNotEqual(str(report.balance_amount), 'kaihe11')
  78. report.find_source_order()
  79. class TestTrackWizard(TransactionCase):
  80. '''测试销售订单跟踪表向导'''
  81. def setUp(self):
  82. ''' 准备报表数据 '''
  83. super(TestTrackWizard, self).setUp()
  84. self.env.ref('core.jd').credit_limit = 100000
  85. self.env.ref('core.goods_category_1').account_id = self.env.ref(
  86. 'finance.account_goods').id
  87. self.env.ref('warehouse.wh_in_whin0').date = '2016-02-06'
  88. # 补足商品网线的数量
  89. warehouse_obj = self.env.ref('warehouse.wh_in_whin0')
  90. warehouse_obj.approve_order()
  91. self.order = self.env.ref('sell.sell_order_2')
  92. order_2 = self.order.copy()
  93. order_2.sell_order_done()
  94. # 分批出库
  95. delivery_2 = self.env['sell.delivery'].search(
  96. [('order_id', '=', order_2.id)])
  97. for line in delivery_2.line_out_ids:
  98. line.goods_qty = 5
  99. delivery_2.sell_delivery_done()
  100. delivery_3 = self.env['sell.delivery'].search(
  101. [('order_id', '=', order_2.id), ('state', '=', 'draft')])
  102. delivery_3.sell_delivery_done()
  103. # 销售订单产生退货单
  104. sell_return = self.env.ref('sell.sell_order_return')
  105. sell_return.sell_order_done()
  106. self.track_obj = self.env['sell.order.track.wizard']
  107. self.track = self.track_obj.create({})
  108. def test_button_ok(self):
  109. '''测试销售订单跟踪表 确认按钮'''
  110. # 日期报错
  111. track = self.track_obj.create({
  112. 'date_start': '2016-11-01',
  113. 'date_end': '2016-1-01',
  114. })
  115. with self.assertRaises(UserError):
  116. track.button_ok()
  117. # 按日期搜索
  118. self.track.button_ok()
  119. # 按商品、客户、销售员、仓库搜索
  120. self.track.goods_id = self.env.ref('goods.mouse').id
  121. self.track.partner_id = self.env.ref('core.yixun').id
  122. self.track.user_id = self.env.ref('base.user_demo').id
  123. self.track.warehouse_id = self.env.ref('warehouse.hd_stock').id
  124. self.track.button_ok()
  125. def test_view_detail(self):
  126. '''测试销售订单跟踪表 查看明细按钮'''
  127. self.env.ref('core.goods_category_1').account_id = self.env.ref(
  128. 'finance.account_goods').id
  129. self.track.button_ok()
  130. goods_id = self.env.ref('goods.cable').id
  131. track_line = self.env['sell.order.track'].search(
  132. [('goods_id', '=', goods_id)])
  133. track_line[0].view_detail()
  134. class TestDetailWizard(TransactionCase):
  135. '''测试销售订单明细表向导'''
  136. def setUp(self):
  137. ''' 准备报表数据 '''
  138. super(TestDetailWizard, self).setUp()
  139. self.env.ref('core.jd').credit_limit = 100000
  140. self.env.ref('core.goods_category_1').account_id = self.env.ref(
  141. 'finance.account_goods').id
  142. self.env.ref('warehouse.wh_in_whin0').date = '2016-02-06'
  143. # 补足商品网线的数量
  144. warehouse_obj = self.env.ref('warehouse.wh_in_whin0')
  145. warehouse_obj.approve_order()
  146. # 复制一张销售订单并审核
  147. self.order = self.env.ref('sell.sell_order_2')
  148. order_2 = self.order.copy()
  149. order_2.sell_order_done()
  150. # 审核出库单
  151. delivery_2 = self.env['sell.delivery'].search(
  152. [('order_id', '=', order_2.id)])
  153. delivery_2.sell_delivery_done()
  154. # 销售订单产生退货单,并审核退货单
  155. sell_return = self.env.ref('sell.sell_order_return')
  156. sell_return.sell_order_done()
  157. delivery_return = self.env['sell.delivery'].search(
  158. [('order_id', '=', sell_return.id)])
  159. delivery_return.sell_delivery_done()
  160. self.detail_obj = self.env['sell.order.detail.wizard']
  161. self.detail = self.detail_obj.create({})
  162. def test_button_ok(self):
  163. '''测试销售订单明细表 确认按钮'''
  164. self.env.ref('core.goods_category_1').account_id = self.env.ref(
  165. 'finance.account_goods').id
  166. detail = self.detail_obj.create({
  167. 'date_start': '2016-11-01',
  168. 'date_end': '2016-1-01',
  169. })
  170. with self.assertRaises(UserError):
  171. detail.button_ok()
  172. # 按日期搜索
  173. self.detail.button_ok()
  174. # 按商品、客户、销售员、仓库搜索
  175. self.detail.goods_id = self.env.ref('goods.mouse').id
  176. self.detail.partner_id = self.env.ref('core.yixun').id
  177. self.detail.user_id = self.env.ref('base.user_demo').id
  178. self.detail.warehouse_id = self.env.ref('warehouse.hd_stock').id
  179. self.detail.button_ok()
  180. def test_view_detail(self):
  181. '''测试销售订单明细表 查看明细按钮'''
  182. self.detail.button_ok()
  183. goods_id = self.env.ref('goods.cable').id
  184. detail_line = self.env['sell.order.detail'].search(
  185. [('goods_id', '=', goods_id)])
  186. for line in detail_line:
  187. line.view_detail()
  188. class TestGoodsWizard(TransactionCase):
  189. '''测试销售汇总表(按商品)向导'''
  190. def setUp(self):
  191. ''' 准备报表数据 '''
  192. super(TestGoodsWizard, self).setUp()
  193. self.env.ref('core.jd').credit_limit = 100000
  194. self.env.ref('core.goods_category_1').account_id = self.env.ref(
  195. 'finance.account_goods').id
  196. self.env.ref('warehouse.wh_in_whin0').date = '2016-02-06'
  197. warehouse_obj = self.env.ref('warehouse.wh_in_whin0')
  198. warehouse_obj.approve_order()
  199. self.order = self.env.ref('sell.sell_order_2')
  200. self.order.sell_order_done()
  201. self.delivery = self.env['sell.delivery'].search(
  202. [('order_id', '=', self.order.id)])
  203. self.delivery.sell_delivery_done()
  204. self.goods_wizard_obj = self.env['sell.summary.goods.wizard']
  205. self.goods_wizard = self.goods_wizard_obj.create({})
  206. def test_button_ok(self):
  207. '''销售汇总表(按商品)向导确认按钮'''
  208. # 日期报错
  209. goods_wizard = self.goods_wizard_obj.create({
  210. 'date_start': '2016-11-01',
  211. 'date_end': '2016-1-01',
  212. })
  213. with self.assertRaises(UserError):
  214. goods_wizard.button_ok()
  215. # 按日期搜索
  216. self.goods_wizard.button_ok()
  217. def test_goods_report(self):
  218. '''测试销售汇总表(按商品)报表'''
  219. summary_goods = self.env['sell.summary.goods']
  220. context = self.goods_wizard.button_ok().get('context')
  221. results = summary_goods.with_context(context).search_read(domain=[])
  222. new_goods_wizard = self.goods_wizard.copy()
  223. new_goods_wizard.goods_id = self.env.ref('goods.mouse').id
  224. new_goods_wizard.partner_id = self.env.ref('core.jd').id
  225. new_goods_wizard.goods_categ_id = \
  226. self.env.ref('core.goods_category_1').id
  227. new_goods_wizard.warehouse_id = self.env.ref('warehouse.hd_stock').id
  228. new_context = new_goods_wizard.button_ok().get('context')
  229. new_results = summary_goods.with_context(new_context).search_read(
  230. domain=[])
  231. self.assertEqual(len(results), 0)
  232. self.assertEqual(len(new_results), 0)
  233. def test_view_detail(self):
  234. '''销售汇总表(按商品) 查看明细按钮'''
  235. summary_goods = self.env['sell.summary.goods'].create({})
  236. context = self.goods_wizard.button_ok().get('context')
  237. results = summary_goods.with_context(context).search_read(domain=[])
  238. for line in results:
  239. summary_line = summary_goods.browse(line['id'])
  240. summary_line.with_context(context).view_detail()
  241. class TestPartnerWizard(TransactionCase):
  242. '''测试销售汇总表(按客户)向导'''
  243. def setUp(self):
  244. ''' 准备报表数据 '''
  245. super(TestPartnerWizard, self).setUp()
  246. self.env.ref('core.jd').credit_limit = 100000
  247. self.env.ref('core.goods_category_1').account_id = self.env.ref(
  248. 'finance.account_goods').id
  249. self.env.ref('warehouse.wh_in_whin0').date = '2016-02-06'
  250. warehouse_obj = self.env.ref('warehouse.wh_in_whin0')
  251. warehouse_obj.approve_order()
  252. self.order = self.env.ref('sell.sell_order_2')
  253. self.order.sell_order_done()
  254. self.delivery = self.env['sell.delivery'].search(
  255. [('order_id', '=', self.order.id)])
  256. self.delivery.sell_delivery_done()
  257. self.partner_wizard_obj = self.env['sell.summary.partner.wizard']
  258. self.partner_wizard = self.partner_wizard_obj.create({})
  259. def test_button_ok(self):
  260. '''销售汇总表(按客户)向导确认按钮'''
  261. # 日期报错
  262. partner_wizard = self.partner_wizard_obj.create({
  263. 'date_start': '2016-11-01',
  264. 'date_end': '2016-1-01',
  265. })
  266. with self.assertRaises(UserError):
  267. partner_wizard.button_ok()
  268. # 按日期搜索
  269. self.partner_wizard.button_ok()
  270. def test_partner_report(self):
  271. '''测试销售汇总表(按客户)报表'''
  272. summary_partner = self.env['sell.summary.partner'].create({})
  273. context = self.partner_wizard.button_ok().get('context')
  274. results = summary_partner.with_context(context).search_read(domain=[])
  275. new_partner_wizard = self.partner_wizard.copy()
  276. new_partner_wizard.goods_id = self.env.ref('goods.mouse').id
  277. new_partner_wizard.partner_id = self.env.ref('core.jd').id
  278. c_category_id = self.env.ref('core.customer_category_1') # 客户类别:一级客户
  279. new_partner_wizard.c_category_id = c_category_id.id
  280. new_partner_wizard.warehouse_id = self.env.ref('warehouse.hd_stock').id
  281. new_context = new_partner_wizard.button_ok().get('context')
  282. new_results = summary_partner.with_context(new_context).search_read(
  283. domain=[])
  284. def test_view_detail(self):
  285. '''销售汇总表(按客户) 查看明细按钮'''
  286. summary_partner = self.env['sell.summary.partner'].create({})
  287. context = self.partner_wizard.button_ok().get('context')
  288. results = summary_partner.with_context(context).search_read(domain=[])
  289. for line in results:
  290. summary_line = summary_partner.browse(line['id'])
  291. summary_line.with_context(context).view_detail()
  292. class TestStaffWizard(TransactionCase):
  293. '''测试销售汇总表(按销售人员)向导'''
  294. def setUp(self):
  295. ''' 准备报表数据 '''
  296. super(TestStaffWizard, self).setUp()
  297. self.env.ref('core.jd').credit_limit = 100000
  298. self.env.ref('core.goods_category_1').account_id = self.env.ref(
  299. 'finance.account_goods').id
  300. self.env.ref('warehouse.wh_in_whin0').date = '2016-02-06'
  301. warehouse_obj = self.env.ref('warehouse.wh_in_whin0')
  302. warehouse_obj.approve_order()
  303. self.order = self.env.ref('sell.sell_order_2')
  304. self.order.sell_order_done()
  305. self.delivery = self.env['sell.delivery'].search(
  306. [('order_id', '=', self.order.id)])
  307. self.delivery.sell_delivery_done()
  308. self.staff_wizard_obj = self.env['sell.summary.staff.wizard']
  309. self.staff_wizard = self.staff_wizard_obj.create({})
  310. def test_button_ok(self):
  311. '''销售汇总表(按销售人员)向导确认按钮'''
  312. # 日期报错
  313. staff_wizard = self.staff_wizard_obj.create({
  314. 'date_start': '2016-11-01',
  315. 'date_end': '2016-1-01',
  316. })
  317. with self.assertRaises(UserError):
  318. staff_wizard.button_ok()
  319. # 按日期搜索
  320. self.staff_wizard.button_ok()
  321. def test_staff_report(self):
  322. '''测试销售汇总表(按销售人员)报表'''
  323. summary_staff = self.env['sell.summary.staff'].create({})
  324. context = self.staff_wizard.button_ok().get('context')
  325. results = summary_staff.with_context(context).search_read(domain=[])
  326. new_staff_wizard = self.staff_wizard.copy()
  327. new_staff_wizard.user_id = self.env.ref('base.user_demo').id
  328. new_staff_wizard.goods_id = self.env.ref('goods.cable').id
  329. new_staff_wizard.goods_categ_id = \
  330. self.env.ref('core.goods_category_1').id
  331. new_staff_wizard.warehouse_id = self.env.ref('warehouse.hd_stock').id
  332. new_context = new_staff_wizard.button_ok().get('context')
  333. new_results = summary_staff.with_context(new_context).search_read(
  334. domain=[])
  335. def test_view_detail(self):
  336. '''销售汇总表(按销售人员) 查看明细按钮'''
  337. summary_staff = self.env['sell.summary.staff'].create({})
  338. context = self.staff_wizard.button_ok().get('context')
  339. results = summary_staff.with_context(context).search_read(domain=[])
  340. for line in results:
  341. summary_line = summary_staff.browse(line['id'])
  342. summary_line.with_context(context).view_detail()
  343. class TestReceiptWizard(TransactionCase):
  344. '''测试销售收款一览表向导'''
  345. def setUp(self):
  346. ''' 准备报表数据 '''
  347. super(TestReceiptWizard, self).setUp()
  348. self.env.ref('core.goods_category_1').account_id = self.env.ref(
  349. 'finance.account_goods').id
  350. self.env.ref('warehouse.wh_in_whin0').date = '2016-02-06'
  351. warehouse_obj = self.env.ref('warehouse.wh_in_whin0')
  352. warehouse_obj.approve_order()
  353. # 销售订单产生发货单,并审核发货单产生收款单
  354. self.order = self.env.ref('sell.sell_order_2')
  355. self.order.sell_order_done()
  356. self.delivery = self.env['sell.delivery'].search(
  357. [('order_id', '=', self.order.id)])
  358. self.delivery.bank_account_id = self.env.ref('core.comm')
  359. self.env.ref('money.get_40000').money_order_done()
  360. self.delivery.receipt = 2.0
  361. self.delivery.sell_delivery_done()
  362. # 销售订单产生发货单,并审核发货单,成交金额和本次收款均为0
  363. new_delivery = self.delivery.copy()
  364. # new_delivery.discount_amount = (new_delivery.amount
  365. # + new_delivery.discount_amount)
  366. new_delivery.receipt = 0
  367. new_delivery.bank_account_id = False
  368. new_delivery.sell_delivery_done()
  369. # 销售订单产生退货单,并审核退货单
  370. self.order_return = self.env.ref('sell.sell_order_return')
  371. self.order_return.sell_order_done()
  372. self.delivery_return = self.env['sell.delivery'].search(
  373. [('order_id', '=', self.order_return.id)])
  374. for l in self.delivery_return.line_in_ids:
  375. l.read()
  376. self.delivery_return.sell_delivery_done()
  377. self.receipt_wizard_obj = self.env['sell.receipt.wizard']
  378. self.receipt_wizard = self.receipt_wizard_obj.create({})
  379. def test_button_ok(self):
  380. '''测试销售收款一览表 确认按钮'''
  381. self.env.ref('core.goods_category_1').account_id = self.env.ref(
  382. 'finance.account_goods').id
  383. # 日期报错
  384. receipt_wizard = self.receipt_wizard_obj.create({
  385. 'date_start': '2016-11-01',
  386. 'date_end': '2016-1-01',
  387. })
  388. with self.assertRaises(UserError):
  389. receipt_wizard.button_ok()
  390. # 按日期搜索
  391. self.receipt_wizard.button_ok()
  392. # 按客户类别、客户、销售员、仓库搜索
  393. self.receipt_wizard.c_category_id = \
  394. self.env.ref('core.customer_category_1').id
  395. self.receipt_wizard.partner_id = self.env.ref('core.jd').id
  396. self.receipt_wizard.user_id = self.env.ref('base.user_demo').id
  397. self.receipt_wizard.warehouse_id = self.env.ref(
  398. 'warehouse.hd_stock').id
  399. self.receipt_wizard.button_ok()
  400. def test_view_detail(self):
  401. '''测试销售收款一览表 查看明细按钮'''
  402. self.receipt_wizard.button_ok()
  403. self.env.ref('core.goods_category_1').account_id = self.env.ref(
  404. 'finance.account_goods').id
  405. receipt_line = self.env['sell.receipt'].search(
  406. [('order_name', '=', self.delivery.name)])
  407. for line in receipt_line:
  408. line.view_detail()
  409. receipt_line2 = self.env['sell.receipt'].search(
  410. [('order_name', '=', self.delivery_return.name)])
  411. for line in receipt_line2:
  412. line.view_detail()
  413. def test_generate_reconcile_order(self):
  414. '''新建核销单,应收冲预收,客户为所选行客户'''
  415. self.receipt_wizard.button_ok()
  416. for line in self.env['sell.receipt'].search([
  417. ('order_name', '=', '未核销预收款'), ('receipt', '!=', 0)]):
  418. line.generate_reconcile_order()
  419. # 查看生成的核销单
  420. line.generate_reconcile_order()
  421. class TestSellTopTenWizard(TransactionCase):
  422. '''测试销量前十商品向导'''
  423. def setUp(self):
  424. ''' 准备报表数据 '''
  425. super(TestSellTopTenWizard, self).setUp()
  426. self.env.ref('core.jd').credit_limit = 100000
  427. self.env.ref('core.goods_category_1').account_id = self.env.ref(
  428. 'finance.account_goods').id
  429. self.env.ref('warehouse.wh_in_whin0').date = '2016-02-06'
  430. warehouse_obj = self.env.ref('warehouse.wh_in_whin0')
  431. warehouse_obj.approve_order()
  432. self.order = self.env.ref('sell.sell_order_2')
  433. self.order.sell_order_done()
  434. self.delivery = self.env['sell.delivery'].search(
  435. [('order_id', '=', self.order.id)])
  436. self.delivery.sell_delivery_done()
  437. self.wizard_obj = self.env['sell.top.ten.wizard']
  438. self.wizard = self.wizard_obj.create({
  439. 'date_start': '2016-1-01',
  440. 'date_end': '2016-12-12', })
  441. def test_button_ok(self):
  442. '''销量前十商品向导确认按钮'''
  443. # 日期报错
  444. wizard = self.wizard.create({
  445. 'date_start': '2016-11-01',
  446. 'date_end': '2016-1-01',
  447. })
  448. with self.assertRaises(UserError):
  449. wizard.button_ok()
  450. # 日期默认值
  451. self.wizard_obj.create({})
  452. def test_goods_report(self):
  453. '''测试销量前十商品报表'''
  454. summary_top_ten = self.env['sell.top.ten'].create({})
  455. context = self.wizard.button_ok().get('context')
  456. results = summary_top_ten.with_context(context).search_read(domain=[])
  457. new_wizard = self.wizard.copy()
  458. new_wizard.warehouse_id = self.env.ref('warehouse.hd_stock').id
  459. new_context = new_wizard.button_ok().get('context')
  460. new_results = summary_top_ten.with_context(new_context).search_read(
  461. domain=[])
  462. self.assertEqual(len(results), 0)
  463. self.assertEqual(len(new_results), 0)
  464. class TestPopupWizard(TransactionCase):
  465. '''发货单缺货向导'''
  466. def setUp(self):
  467. ''' 准备数据 '''
  468. super(TestPopupWizard, self).setUp()
  469. self.env.ref('core.jd').credit_limit = 100000
  470. self.order = self.env.ref('sell.sell_order_2')
  471. self.order.sell_order_done()
  472. self.delivery = self.env['sell.delivery'].search(
  473. [('order_id', '=', self.order.id)])
  474. self.hd_stock = self.env.ref('warehouse.hd_stock')
  475. self.warehouse_inventory = self.env.ref(
  476. 'warehouse.warehouse_inventory')
上海开阖软件有限公司 沪ICP备12045867号-1