Пример #1
0
    def testWaybillFromOnePointToOtherPoint(self):
        with self.application.app_context():
            self.init_relation_models()

            self.date = Generator.generate_date()
            self.date_2 = Generator.generate_date()
            self.items = [{GOOD_ATTR: self.good_id, COUNT_ATTR: 10}, {GOOD_ATTR: self.good_4_id, COUNT_ATTR: 5}]
            self.items_2 = [{GOOD_ATTR: self.good_2_id, COUNT_ATTR: 7}]
            self.crush()

            response = self.waybill_suite.create_waybill(
                date=unicode(self.date),
                pointsale_id=self.point_2_id,
                type=RETAIL,
                receiver_id=self.receiver_id,
                invoice_id=None,
                pointsale_from_id=self.point_1_id,
                items=self.items,
                typeRec=POINTSALE,
            )

            self.assertEqual(response.status_code, 200)
            data = self._deserialize(response.data)

            self.assertEqual(WayBill.query.count(), 1)
            waybill = WayBill.query.first()

            self.assertEqual(waybill.pointsale_id, self.point_2_id)
            self.assertEqual(waybill.pointsale_from_id, self.point_1_id)
            self.assertEqual(waybill.type, RETAIL)
            self.assertEqual(waybill.date, self.date)
            self.assertEqual(waybill.items.count(), len(self.items))
            self.assertIsNone(waybill.receiver)

            response = self.waybill_suite.get_waybill(waybill.id)
            self.assertEqual(response.status_code, 200)

            response = self.waybill_suite.update_waybill(waybill.id, date=unicode(self.date_2), items=self.items_2)
            self.assertEqual(response.status_code, 200)

            waybill = WayBill.query.get(waybill.id)
            self.assertEqual(waybill.date, self.date_2)
            self.assertEqual(waybill.items.count(), len(self.items_2))
Пример #2
0
    def testWayBillStatus(self):
        with self.application.app_context():
            self.init_relation_models()

            self.date = Generator.generate_date()

            response = self.waybill_suite.create_waybill(
                date=unicode(self.date),
                pointsale_id=self.point_2_id,
                type=RETAIL,
                invoice_id=None,
                pointsale_from_id=self.point_1_id,
                items=self.items,
                typeRec=POINTSALE,
            )
            self.assertEqual(response.status_code, 200)
            id = self._deserialize(response.data)["id"]
            self.assertEqual(PointSaleItem.query.filter(PointSaleItem.pointsale_id == self.point_1_id).count(), 0)
            self.assertEqual(PointSaleItem.query.filter(PointSaleItem.pointsale_id == self.point_2_id).count(), 0)

            response = self.waybill_suite.update_status(id, IN_PROG)
            self.assertEqual(response.status_code, 200)
            self.assertEqual(PointSaleItem.query.filter(PointSaleItem.pointsale_id == self.point_1_id).count(), 0)
            self.assertEqual(PointSaleItem.query.filter(PointSaleItem.pointsale_id == self.point_2_id).count(), 0)

            response = self.waybill_suite.update_status(id, IN_DELIVERY)
            self.assertEqual(response.status_code, 200)
            self.assertEqual(PointSaleItem.query.filter(PointSaleItem.pointsale_id == self.point_1_id).count(), 0)
            self.assertEqual(PointSaleItem.query.filter(PointSaleItem.pointsale_id == self.point_2_id).count(), 0)

            response = self.waybill_suite.update_status(id, FINISH)
            self.assertEqual(response.status_code, 200)
            self.assertEqual(PointSaleItem.query.filter(PointSaleItem.pointsale_id == self.point_1_id).count(), 2)
            self.assertEqual(PointSaleItem.query.filter(PointSaleItem.pointsale_id == self.point_2_id).count(), 2)

            pointsale_item_1 = PointSaleItem.query.filter(
                PointSaleItem.pointsale_id == self.point_1_id, PointSaleItem.good_id == self.good_id
            ).one()
            pointsale_item_2 = PointSaleItem.query.filter(
                PointSaleItem.pointsale_id == self.point_1_id, PointSaleItem.good_id == self.good_4_id
            ).one()

            self.assertEqual(pointsale_item_1.count, self.COUNT_GOOD_1 * -1)
            self.assertEqual(pointsale_item_2.count, self.COUNT_GOOD_4 * -1)

            pointsale_item_1 = PointSaleItem.query.filter(
                PointSaleItem.pointsale_id == self.point_2_id, PointSaleItem.good_id == self.good_id
            ).one()
            pointsale_item_2 = PointSaleItem.query.filter(
                PointSaleItem.pointsale_id == self.point_2_id, PointSaleItem.good_id == self.good_4_id
            ).one()

            self.assertEqual(pointsale_item_1.count, self.COUNT_GOOD_1)
            self.assertEqual(pointsale_item_2.count, self.COUNT_GOOD_4)
Пример #3
0
    def testItemsAcceptanceFromMail(self):
        date = Generator.generate_date()

        with self.application.app_context():
            invoice_id, resp = self.success_stories_mail(date)
            acc_id = 1
            inv_items = self.invoice_items(invoice_id)
            items = self.acceptance_items(acc_id)
            self.assertEqual(resp.status_code, 200)
            self.assertEqual(self.acceptance_count(), 1)
            self.assertEqual(items.count(), 0)

            resp = self.acceptance_suite.acceptance_status(acc_id, IN_PROG)
            self.assertEqual(resp.status_code, 200)
            items = self.acceptance_items(acc_id)
            self.assertEqual(self.acceptance_count(), 1)
            self.assertEqual(items.count(), 41)
            inv_items.session.autocommit = True
            inv_itemss = list(inv_items)
            inv_items.session.rollback()
            itemss = list(items)
            items.session.rollback()

            for item, inv_item in zip(itemss, inv_itemss):
                self.assertEqual(item.count, inv_item.count)
                self.assertIsNone(item.fact_count)

            items_acc = []
            for item in itemss[:10]:
                items_acc.append(
                    {ITEM_ID_ATTR: item.id, GOOD_ATTR: item.good_id,
                     COUNT_ATTR: item.count})

            items_acc.append({ITEM_ID_ATTR: itemss[10].id,
                              GOOD_ATTR: itemss[10].good_id,
                              COUNT_ATTR: itemss[10].count})

            resp = self.acceptance_suite.update_items(acc_id, items=items_acc)
            self.assertEqual(resp.status_code, 200)
            self.assertEqual(self.acceptance_items(acc_id).count(), 41)

            resp = self.acceptance_suite.acceptance_status(acc_id, VALIDATED)
            self.assertEqual(resp.status_code, 200)
            self.assertEqual(self.pointsale_items(self.pointsale_id).count(),
                             11)

            for item_acc in items_acc:
                item = self.acceptance_item(item_acc['id'])
                self.assertEqual(item.count, item_acc[COUNT_ATTR])
Пример #4
0
    def testCrushFromMail(self):
        date = Generator.generate_date()
        with self.application.app_context():
            count = self.acceptance_count()
            invoice_id = self.invoice_()
            # Не выбран Тип
            resp = self.acceptance_suite.create(
                date=date, invoice_id=invoice_id,
                pointsale_id=self.pointsale_id)
            self.assertEqual(resp.status_code, 400)
            self.assertEqual(self.acceptance_count(), count)

            resp = self.acceptance_suite.create(
                date=date, provider_id=self.test_provider_id,
                pointsale_id=self.pointsale_id)
            self.assertEqual(resp.status_code, 400)
            self.assertEqual(self.acceptance_count(), count)

            # Несуществующий тип
            resp = self.acceptance_suite.create(
                date=date, type=3, invoice_id=invoice_id,
                pointsale_id=self.pointsale_id)
            self.assertEqual(resp.status_code, 400)
            self.assertEqual(self.acceptance_count(), count)
            # Тип "Из почты", а накладная не выбрана
            resp = self.acceptance_suite.create(
                date=date, type=MAIL, pointsale_id=self.pointsale_id,
                provider_id=self.test_provider_id)
            self.assertEqual(resp.status_code, 400)
            self.assertEqual(self.acceptance_count(), count)
            # Тип "Новая", а поставщик не выбран
            resp = self.acceptance_suite.create(
                date=date, type=NEW, pointsale_id=self.pointsale_id,
                invoice_id=invoice_id)
            self.assertEqual(resp.status_code, 400)
            self.assertEqual(self.acceptance_count(), count)

            invoice_id, resp = self.success_stories_mail(date)
            self.assertEqual(resp.status_code, 200)
            self.assertEqual(self.acceptance_count(), count + 1)
Пример #5
0
    def testFromCustom(self):
        PRICE_R_G_1 = 12.0
        PRICE_G_G_1 = 10.0
        PRICE_R_G_3 = 15.0
        PRICE_G_G_3 = 12.0
        good_id = self.application_suite.good(
            u"ЛТД", '1', '2', PRICE_R_G_1, PRICE_G_G_1)
        good_id_2 = self.application_suite.good(
            u"ЛТД", '2', '3', PRICE_R_G_1, PRICE_G_G_1)
        good_id_3 = self.application_suite.good(
            u"Вечерние Челны", '1', '2', PRICE_R_G_3, PRICE_G_G_3)
        date = Generator.generate_date()
        with self.application.app_context():

            count_pp_good_1 = self.priceparish_to_good(good_id).count()
            count_pp_good_2 = self.priceparish_to_good(good_id_2).count()
            count_pp_good_3 = self.priceparish_to_good(good_id_3).count()

            resp = self.acceptance_suite.create(
                date=date, pointsale_id=self.pointsale_id, type=NEW,
                provider_id=self.test_provider_id)
            self.assertEqual(resp.status_code, 200)
            self.assertEqual(self.acceptance_count(), 1)
            self.assertEqual(self.invoice_count(), 0)

            acc_id = 1
            items = self.acceptance_items(acc_id)
            p_items = self.pointsale_items(self.pointsale_id)

            self.assertEqual(items.count(), 0)
            self.assertEqual(p_items.count(), 0)

            resp = self.acceptance_suite.acceptance_status(acc_id, IN_PROG)
            inv_id = 1
            self.assertEqual(resp.status_code, 200)
            self.assertEqual(self.acceptance_count(), 1)
            self.assertEqual(self.invoice_count(), 1)

            items = self.acceptance_items(acc_id)
            p_items = self.pointsale_items(self.pointsale_id)
            i_items = self.invoice_items(inv_id)

            self.assertEqual(items.count(), 0)
            self.assertEqual(p_items.count(), 0)
            self.assertEqual(i_items.count(), 0)

            resp = self.acceptance_suite.update_new_items(acc_id, items=[
                {GOOD_OBJ_ATTR: {GOOD_ID_ATTR: good_id}, COUNT_ATTR: 15,
                 PRICE_POST_ATTR: 8.0,
                 PRICE_RETAIL_ATTR: PRICE_R_G_1 + 1.0, PRICE_GROSS_ATTR:
                     PRICE_G_G_1},
                {GOOD_OBJ_ATTR: {GOOD_ID_ATTR: good_id_3}, COUNT_ATTR: 5,
                 PRICE_POST_ATTR: 9.5, PRICE_RETAIL_ATTR: PRICE_R_G_3,
                 PRICE_GROSS_ATTR: PRICE_G_G_3}
            ])
            self.assertEqual(resp.status_code, 200)
            self.assertEqual(self.acceptance_count(), 1)
            self.assertEqual(self.invoice_count(), 1)
            self.assertEqual(self.priceparish_to_good(good_id).count(),
                             count_pp_good_1)
            self.assertEqual(self.priceparish_to_good(good_id_3).count(),
                             count_pp_good_3)
            self.assertEqual(self.price_to_good(good_id).price_retail,
                             PRICE_R_G_1)
            self.assertEqual(self.price_to_good(good_id).price_gross,
                             PRICE_G_G_1)
            self.assertEqual(self.price_to_good(good_id_3).price_retail,
                             PRICE_R_G_3)
            self.assertEqual(self.price_to_good(good_id_3).price_gross,
                             PRICE_G_G_3)

            items = self.acceptance_items(acc_id)
            p_items = self.pointsale_items(self.pointsale_id)
            i_items = self.invoice_items(inv_id)

            self.assertEqual(items.count(), 2)
            self.assertEqual(p_items.count(), 0)
            self.assertEqual(i_items.count(), 2)

            resp = self.acceptance_suite.update_new_items(acc_id, items=[
                {GOOD_OBJ_ATTR: {GOOD_ID_ATTR: good_id}, COUNT_ATTR: 15,
                 PRICE_POST_ATTR: 8.0, PRICE_RETAIL_ATTR: PRICE_R_G_1 + 1.0,
                 PRICE_GROSS_ATTR: PRICE_G_G_1},
                {GOOD_OBJ_ATTR: {GOOD_ID_ATTR: good_id_3}, COUNT_ATTR: 5,
                 PRICE_POST_ATTR: 9.5, PRICE_RETAIL_ATTR: PRICE_R_G_3,
                 PRICE_GROSS_ATTR: PRICE_G_G_3}
            ])

            self.assertEqual(resp.status_code, 200)
            self.assertEqual(self.acceptance_count(), 1)
            self.assertEqual(self.invoice_count(), 1)
            self.assertEqual(self.priceparish_to_good(good_id).count(),
                             count_pp_good_1)
            self.assertEqual(self.priceparish_to_good(good_id_3).count(),
                             count_pp_good_3)
            self.assertEqual(self.price_to_good(good_id).price_retail,
                             PRICE_R_G_1)
            self.assertEqual(self.price_to_good(good_id).price_gross,
                             PRICE_G_G_1)
            self.assertEqual(self.price_to_good(good_id_3).price_retail,
                             PRICE_R_G_3)
            self.assertEqual(self.price_to_good(good_id_3).price_gross,
                             PRICE_G_G_3)

            items = self.acceptance_items(acc_id)
            p_items = self.pointsale_items(self.pointsale_id)
            i_items = self.invoice_items(inv_id)

            self.assertEqual(items.count(), 2)
            self.assertEqual(p_items.count(), 0)
            self.assertEqual(i_items.count(), 2)

            resp = self.acceptance_suite.acceptance_status(acc_id, VALIDATED)
            self.assertEqual(resp.status_code, 200)
            self.assertEqual(self.acceptance_count(), 1)
            self.assertEqual(self.invoice_count(), 1)
            self.assertEqual(self.priceparish_to_good(good_id).count(),
                             count_pp_good_1 + 1)
            self.assertEqual(self.priceparish_to_good(good_id_3).count(),
                             count_pp_good_3 + 1)
            self.assertEqual(self.price_to_good(good_id).price_retail,
                             PRICE_R_G_1 + 1.0)
            self.assertEqual(self.price_to_good(good_id).price_gross,
                             PRICE_G_G_1)
            self.assertEqual(self.price_to_good(good_id_3).price_retail,
                             PRICE_R_G_3)
            self.assertEqual(self.price_to_good(good_id_3).price_gross,
                             PRICE_G_G_3)

            items = self.acceptance_items(acc_id)
            p_items = self.pointsale_items(self.pointsale_id)
            i_items = self.invoice_items(inv_id)

            self.assertEqual(items.count(), 2)
            self.assertEqual(p_items.count(), 2)
            self.assertEqual(i_items.count(), 2)