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))
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)
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])
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)
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)