Beispiel #1
0
    def test_create_or_update_vendor_product(self):

        product = Product.objects.create()
        vendor = Vendor.objects.create()

        vproduct_t0 = helpers.create_or_update_vendor_product(
            vendor, 'VP1', 13.1, 12, 'UN', product
        )

        self.assertEquals(vproduct_t0.vendor.id, vendor.id)
        self.assertEquals(float(vproduct_t0.get_price()), 13.1)
        self.assertEquals(vproduct_t0.quantity, 12)
        self.assertEquals(vproduct_t0.product_uom.uom.name, 'UN')
        self.assertEquals(vproduct_t0.product_uom.product.id, product.id)

        vproduct_t1 = helpers.create_or_update_vendor_product(
            vendor, 'VP1', 130.1, 12, 'UN', product
        )

        self.assertEquals(vproduct_t1.vendor.id, vendor.id)
        self.assertEquals(float(vproduct_t1.get_price()), 130.1)
        self.assertEquals(vproduct_t1.quantity, 12)
        self.assertEquals(vproduct_t1.product_uom.uom.name, 'UN')
        self.assertEquals(vproduct_t1.product_uom.product.id, product.id)

        self.assertEquals(vproduct_t0.id, vproduct_t1.id)
Beispiel #2
0
    def test_pending_items(self):

        vendor1 = Vendor.objects.create()
        product1 = Product.objects.create()
        product2 = Product.objects.create()

        vp1 = helpers.create_or_update_vendor_product(
            vendor1,
            'VP1',
            13.1,
            12,
            'UN',
            product1
        )

        vp2 = helpers.create_or_update_vendor_product(
            vendor1,
            'VP2',
            7.1,
            6,
            'UN',
            product2
        )

        helpers.create_or_update_vendor_shipping(
            vendor1,
            'SM1',
            32.3
        )

        plist = PurchaseList.objects.create()

        self.assertEquals(plist.pending_items(), 0)

        for product_uom, quantity in [
            [vp1.product_uom, 29],
            [vp2.product_uom, 10],
            ]:
            plist.items.create(
                product_uom=product_uom, quantity=quantity)

        self.assertEquals(plist.pending_items(), 2)

        pp = PurchasePlanner()

        pp.resolve_purchase(plist)

        self.assertEquals(plist.pending_items(), 0)

        plist.items.first().resolutions.all().delete()

        self.assertEquals(plist.pending_items(), 1)

        plist.items.first().delete()

        self.assertEquals(plist.pending_items(), 0)
Beispiel #3
0
    def test_two_products(self):

        vendor1 = Vendor.objects.create()
        product1 = Product.objects.create()
        product2 = Product.objects.create()

        vp1 = helpers.create_or_update_vendor_product(
            vendor1,
            'VP1',
            13.1,
            12,
            'UN',
            product1
        )

        vp2 = helpers.create_or_update_vendor_product(
            vendor1,
            'VP2',
            7.1,
            6,
            'UN',
            product2
        )

        helpers.create_or_update_vendor_shipping(
            vendor1,
            'SM1',
            32.3
        )

        plist = helpers.create_purchase_list_and_resolve([
            [vp1.product_uom, 29],
            [vp2.product_uom, 10],
            ])

        self.assertEqual(plist.items.count(), 2)

        items = plist.items

        item1 = items.get(product_uom__product=product1)
        self.assertEqual(item1.resolutions.count(), 1)
        self.assertEqual(item1.resolutions.first().quantity, 3)


        item2 = items.get(product_uom__product=product2)
        self.assertEqual(item2.resolutions.count(), 1)
        self.assertEqual(item2.resolutions.first().quantity, 2)

        self.assertAlmostEqual(float(plist.get_total()), 3*13.1 + 2*7.1 + 32.3)
Beispiel #4
0
    def test_one_product(self):

        vendor = Vendor.objects.create()

        vp1 = helpers.create_or_update_vendor_product(
            vendor,
            'VP1',
            13.1,
            12,
            'UN',
            Product.objects.create()
        )

        helpers.create_or_update_vendor_shipping(
            vendor,
            'SM1',
            32.3
        )

        plist = helpers.create_purchase_list_and_resolve([
            [vp1.product_uom, 10],
            ])

        self.assertEqual(plist.items.count(), 1)
        item = plist.items.first()
        self.assertEqual(item.resolutions.first().quantity, 1)
        self.assertEqual(item.resolutions.first().vendor_product.id, vp1.id)
Beispiel #5
0
    def test_same_product_different_vendors_best_shipping(self):

        vendor1 = Vendor.objects.create()
        vendor2 = Vendor.objects.create()
        product = Product.objects.create()

        vp1 = helpers.create_or_update_vendor_product(
            vendor1,
            'VP1',
            13.1,
            12,
            'UN',
            product
        )

        vp2 = helpers.create_or_update_vendor_product(
            vendor2,
            'VP2',
            7.1,
            6,
            'UN',
            product
        )

        helpers.create_or_update_vendor_shipping(
            vendor1,
            'SM1',
            32.3
        )

        helpers.create_or_update_vendor_shipping(
            vendor2,
            'SM2',
            15.2
        )

        plist = helpers.create_purchase_list_and_resolve([
            [vp1.product_uom, 36],
            ])

        self.assertEqual(plist.items.count(), 1)

        item = plist.items.first()

        self.assertEqual(item.resolutions.count(), 1)
        self.assertEqual(item.resolutions.get(vendor_product=vp2).quantity, 6)