test_purchase_picking_state.py 1.3 KB
# -*- coding: utf-8 -*-
# © 2016 Chafique DELLI @ Akretion
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).

from openerp.tests.common import TransactionCase


class TestPurchasePickingState(TransactionCase):
    def test_picking_state_in_purchase_order(self):
        draft_order_ids = self.env['purchase.order'].search([
            ('state', 'in', ['draft', 'sent', 'bid', 'cancel']),
        ])
        for purchase in draft_order_ids:
            self.assertEquals(purchase.picking_state, 'draft')
        confirmed_order_ids = self.env['purchase.order'].search([
            ('state', 'in', ['confirmed', 'approved', 'done']),
        ])
        for purchase in confirmed_order_ids:
            pickings_state = set(
                [picking.state for picking in purchase.picking_ids])
            if pickings_state == set(['cancel']):
                self.assertEquals(purchase.picking_state, 'cancel')
            elif (pickings_state == set(['cancel', 'done']) or
                  pickings_state == set(['done'])):
                self.assertEquals(purchase.picking_state, 'done')
            elif 'done' in pickings_state:
                self.assertEquals(purchase.picking_state, 'partially_received')
            else:
                self.assertEquals(purchase.picking_state, 'not_received')