コード例 #1
0
 def testStockoutSupplyFlow(self):
     hsa, ic = self._setup_users()[0:2]
     
     report_stock(self, hsa, "zi 10 la 15", [ic], "zi 190, la 345")
     
     a = """
        16175551001 > os 261601
        16175551000 < %(hsa_notice)s
        16175551003 < %(district)s
        16175551002 < %(district)s
        16175551001 < %(confirm)s
     """ % {"confirm": config.Messages.HF_UNABLE_RESTOCK_EO %\
                 {"reporter": "sally", "products": "zi, la"},
            "hsa_notice": config.Messages.HSA_UNABLE_RESTOCK_ANYTHING % {"hsa": "wendy"},
            "district": config.Messages.DISTRICT_UNABLE_RESTOCK_NORMAL  % \
                 {"contact": "sally", "supply_point": "Ntaja", "products": "zi, la"}}
                 
                 
     self.runScript(a)
     self.assertEqual(2, StockRequest.objects.count())
     for req in StockRequest.objects.all():
         self.assertEqual(req.supply_point, SupplyPoint.objects.get(code="261601"))
         self.assertEqual(StockRequestStatus.STOCKED_OUT, req.status)
         self.assertEqual(StockRequestStatus.STOCKED_OUT, req.response_status)
         self.assertTrue(req.is_pending())
     zi = ProductStock.objects.get(product__sms_code="zi", supply_point=SupplyPoint.objects.get(code="261601"))
     la = ProductStock.objects.get(product__sms_code="la", supply_point=SupplyPoint.objects.get(code="261601"))
     self.assertEqual(zi.quantity, 10)
     self.assertEqual(la.quantity, 15)
コード例 #2
0
    def testSOHBeforeReceipt(self):
        hsa, ic, sh = self._setup_users()[0:3]
        report_stock(self, hsa, "zi 10 la 15", [ic,sh], "zi 190, la 345")
        zi = ProductStock.objects.get(product__sms_code="zi", supply_point=SupplyPoint.objects.get(code="261601"))
        la = ProductStock.objects.get(product__sms_code="la", supply_point=SupplyPoint.objects.get(code="261601"))
        self.assertEqual(2, StockRequest.objects.filter(status=StockRequestStatus.REQUESTED).count())

        b = """
           16175551001 > ready 261601
           16175551001 < %(confirm)s
           16175551000 < %(hsa_notice)s
        """ % {"confirm": config.Messages.APPROVAL_RESPONSE % \
                    {"hsa": "wendy"},
               "hsa_notice": config.Messages.APPROVAL_NOTICE % \
                    {"hsa": "wendy"}}
        self.runScript(b)
        self.assertEqual(2, StockRequest.objects.filter(status=StockRequestStatus.APPROVED).count())

        report_stock(self, hsa, "zi 10 la 15", [ic,sh], "zi 190, la 345")
        self.assertEqual(2, StockRequest.objects.filter(status=StockRequestStatus.REQUESTED).count())

        c = """
           16175551000 > rec zi 190 la 345
           16175551000 < Thank you, you reported receipts for zi la.
        """
        self.runScript(c)
        self.assertEqual(200, ProductStock.objects.get(pk=zi.pk).quantity)
        self.assertEqual(360, ProductStock.objects.get(pk=la.pk).quantity)
        self.assertEqual(2, StockRequest.objects.filter(status=StockRequestStatus.RECEIVED).count())
コード例 #3
0
 def testAppendStockOnHand(self):
     hsa, ic, sh = self._setup_users()[0:3]
     report_stock(self, hsa, "zi 10 la 15", [ic,sh], "zi 190, la 345")
     self.assertEqual(2, StockRequest.objects.count())
     report_stock(self, hsa, "zi 5 lb 20", [ic,sh], "la 345, lb 172, zi 195")
     self.assertEqual(4, StockRequest.objects.count())
     self.assertEqual(3, StockRequest.objects.filter(status=StockRequestStatus.REQUESTED).count())
     self.assertEqual(1, StockRequest.objects.filter(status=StockRequestStatus.CANCELED).count())
     b = """
        16175551001 > ready 261601
        16175551001 < %(confirm)s
        16175551000 < %(hsa_notice)s
     """ % {"confirm": config.Messages.APPROVAL_RESPONSE % \
                 {"hsa": "wendy"},
            "hsa_notice": config.Messages.APPROVAL_NOTICE % \
                 {"hsa": "wendy"}}
     self.runScript(b)
     self.assertEqual(3, StockRequest.objects.filter(status=StockRequestStatus.APPROVED).count())
     self.assertEqual(1, StockRequest.objects.filter(status=StockRequestStatus.CANCELED).count())
コード例 #4
0
ファイル: register.py プロジェクト: andile2012/logistics
 def testManagerLeave(self):
     hsa = create_hsa(self, "555555", "somehsa", products="la zi")
     ic = create_manager(self, "666666", "somemanager")
     super = create_manager(self, "777777", "somesuper", config.Roles.HSA_SUPERVISOR)
     report_stock(self, hsa, "zi 10 la 15", [ic, super], "zi 190, la 345")
     b = """
           666666 > leave
           666666 < %(left)s
         """ % {"left": config.Messages.LEAVE_CONFIRM}
     self.runScript(b)
     failed = False
     try:
         report_stock(self, hsa, "zi 10 la 15", [ic, super], "zi 190, la 345")
     except Exception:
         # this is expected
         failed = True
     if not failed:
         self.fail("Reporting stock should not have notified the supervisor")
     report_stock(self, hsa, "zi 10 la 15", [super], "zi 190, la 345")
コード例 #5
0
ファイル: register.py プロジェクト: dslowikowski/logistics
 def testManagerLeave(self):
     hsa = create_hsa(self, "555555", "somehsa", products="la zi")
     ic = create_manager(self, "666666", "somemanager")
     super = create_manager(self, "777777", "somesuper",
                            config.Roles.HSA_SUPERVISOR)
     report_stock(self, hsa, "zi 10 la 15", [ic, super], "zi 190, la 345")
     b = """
           666666 > leave
           666666 < %(left)s
         """ % {
         "left": config.Messages.LEAVE_CONFIRM
     }
     self.runScript(b)
     failed = False
     try:
         report_stock(self, hsa, "zi 10 la 15", [ic, super],
                      "zi 190, la 345")
     except Exception:
         # this is expected
         failed = True
     if not failed:
         self.fail(
             "Reporting stock should not have notified the supervisor")
     report_stock(self, hsa, "zi 10 la 15", [super], "zi 190, la 345")
コード例 #6
0
    def testBasicSupplyFlow(self):
        hsa, ic, sh = self._setup_users()[0:3]
        report_stock(self, hsa, "zi 10 la 15", [ic,sh], "zi 190, la 345")
        
        self.assertEqual(2, StockRequest.objects.count())
        for req in StockRequest.objects.all():
            self.assertEqual(req.supply_point, SupplyPoint.objects.get(code="261601"))
            self.assertEqual(StockRequestStatus.REQUESTED, req.status)
            self.assertEqual("", req.response_status)
            self.assertTrue(req.is_pending())
            self.assertFalse(req.is_emergency)
        zi = ProductStock.objects.get(product__sms_code="zi", supply_point=SupplyPoint.objects.get(code="261601"))
        la = ProductStock.objects.get(product__sms_code="la", supply_point=SupplyPoint.objects.get(code="261601"))
        self.assertEqual(zi.quantity, 10)
        self.assertEqual(la.quantity, 15)
        b = """
           16175551001 > ready 261601
           16175551001 < %(confirm)s
           16175551000 < %(hsa_notice)s
        """ % {"confirm": config.Messages.APPROVAL_RESPONSE % \
                    {"hsa": "wendy"},
               "hsa_notice": config.Messages.APPROVAL_NOTICE % \
                    {"hsa": "wendy"}}
        

        self.runScript(b)
        self.assertEqual(2, StockRequest.objects.count())
        for req in StockRequest.objects.all():
            self.assertEqual(StockRequestStatus.APPROVED, req.status)
            self.assertEqual(StockRequestStatus.APPROVED, req.response_status)
            self.assertTrue(req.is_pending())
            self.assertEqual(Contact.objects.get(name="sally"), req.responded_by)
            self.assertEqual(req.amount_requested, req.amount_approved)
            self.assertTrue(req.responded_on > req.requested_on)
                    
        # stocks shouldn't get updated
        self.assertEqual(ProductStock.objects.get(pk=zi.pk).quantity, 10)
        self.assertEqual(ProductStock.objects.get(pk=la.pk).quantity, 15)
        
        c = """
           16175551000 > rec zi 190 la 345
           16175551000 < Thank you, you reported receipts for zi la.
        """
        self.runScript(c)
        self.assertEqual(2, StockRequest.objects.count())
        for req in StockRequest.objects.all():
            self.assertEqual(StockRequestStatus.RECEIVED, req.status)
            self.assertEqual(StockRequestStatus.APPROVED, req.response_status)
            self.assertFalse(req.is_pending())
            self.assertEqual(Contact.objects.get(name="wendy"), req.received_by)
            self.assertEqual(req.amount_received, req.amount_requested)
            self.assertTrue(req.received_on > req.responded_on > req.requested_on)
        
        # stocks should now be updated
        self.assertEqual(ProductStock.objects.get(pk=zi.pk).quantity, 200)
        self.assertEqual(ProductStock.objects.get(pk=la.pk).quantity, 360)

        # Second receipt should increase normally

        c = """
           16175551000 > rec zi 190 la 345
           16175551000 < Thank you, you reported receipts for zi la.
        """
        self.runScript(c)

        self.assertEqual(ProductStock.objects.get(pk=zi.pk).quantity, 390)
        self.assertEqual(ProductStock.objects.get(pk=la.pk).quantity, 705)