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.
85 lines
3.3 KiB
85 lines
3.3 KiB
# Copyright (C) 2017: Opener B.V. (https://opener.amsterdam)
|
|
# @author: Stefan Rijnhart <stefan@opener.am>
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
|
from odoo import fields
|
|
from odoo.tests.common import TransactionCase
|
|
|
|
|
|
class TestPosPickingLoad(TransactionCase):
|
|
|
|
def test_pos_picking_load(self):
|
|
product = self.env.ref('product.product_product_24')
|
|
pricelist = self.env.ref('product.list0')
|
|
# Create a Sale order and confirm it to generate a picking to load
|
|
sale_order = self.env['sale.order'].create({
|
|
'partner_id': self.env.ref('base.res_partner_1').id,
|
|
'order_line': [(0, 0, {
|
|
'product_id': product.id,
|
|
'price_unit': 6,
|
|
'product_uom_qty': 2,
|
|
'qty_delivered_method': 'stock_move',
|
|
})],
|
|
})
|
|
sale_order.action_confirm()
|
|
sale_order.picking_ids.picking_type_id.write({
|
|
'available_in_pos': True})
|
|
|
|
# Configure Point of sale
|
|
config = self.env.ref('point_of_sale.pos_config_main').copy()
|
|
config.write({
|
|
'picking_type_id': sale_order.picking_ids.picking_type_id.id})
|
|
|
|
# Open a new session
|
|
config.open_session_cb()
|
|
session = self.env['pos.session'].search([
|
|
('config_id', '=', config.id)])[0]
|
|
date_now = fields.Datetime.now()
|
|
|
|
# Create a pos order
|
|
self.env['pos.order'].create_from_ui([{
|
|
'to_invoice': False,
|
|
'data': {
|
|
'pricelist_id': pricelist.id,
|
|
'user_id': self.env.user.id,
|
|
'creation_date': date_now,
|
|
'fiscal_position_id': False,
|
|
'name': 'Order 00017-002-0003',
|
|
'partner_id': sale_order.partner_id.id,
|
|
'amount_paid': 12,
|
|
'pos_session_id': session.id,
|
|
'lines': [[0, 0, {
|
|
'product_id': product.id,
|
|
'price_unit': 6,
|
|
'name': product.name,
|
|
'discount': 0,
|
|
'qty': 2,
|
|
'price_subtotal': 12,
|
|
'price_subtotal_incl': 12,
|
|
'tax_ids': [[6, False, []]],
|
|
}]],
|
|
'statement_ids': [[0, 0, {
|
|
'journal_id': False,
|
|
'amount': 12,
|
|
'name': date_now,
|
|
'account_id': config.journal_ids[
|
|
0].default_debit_account_id.id,
|
|
'statement_id': session.statement_ids[0].id,
|
|
}]],
|
|
'amount_tax': 0,
|
|
'origin_picking_id': sale_order.picking_ids.id,
|
|
'uid': '00017-002-0003',
|
|
'amount_return': 0,
|
|
'sequence_number': 3,
|
|
'amount_total': 12,
|
|
},
|
|
'id': '00017-002-0003',
|
|
}])
|
|
pos_order = self.env['pos.order'].search(
|
|
[('origin_picking_id', 'in', sale_order.picking_ids.ids)])
|
|
self.assertTrue(pos_order)
|
|
self.assertEqual(pos_order.origin_picking_id.state, 'cancel')
|
|
self.assertEqual(
|
|
pos_order.picking_id.group_id,
|
|
pos_order.origin_picking_id.group_id)
|
|
self.assertEqual(
|
|
sale_order.invoice_status, 'invoiced')
|