Esempio n. 1
0
def prepare_receipt_request(self, supplier, requests_reties=0):
    filename, content = build_receipt_request(self, supplier["tenderID"],
                                              supplier.get("lot_index"),
                                              supplier["identifier"],
                                              supplier["name"])
    try:
        response = requests.post(
            "{}/encrypt_fiscal/file".format(API_SIGN_HOST),
            files={'file': (filename, content)},
            auth=(API_SIGN_USER, API_SIGN_PASSWORD),
            timeout=(CONNECT_TIMEOUT, READ_TIMEOUT),
        )
    except RETRY_REQUESTS_EXCEPTIONS as e:
        logger.exception(e, extra={"MESSAGE_ID": "FISCAL_ENCRYPT_API_ERROR"})
        raise self.retry(exc=e)
    else:
        if response.status_code != 200:
            logger.error("Encrypting has failed: {} {}".format(
                response.status_code, response.text),
                         extra={"MESSAGE_ID": "FISCAL_ENCRYPT_API_ERROR"})
            self.retry(countdown=response.headers.get('Retry-After',
                                                      DEFAULT_RETRY_AFTER))
        else:
            request_data = base64.b64encode(response.content).decode()
            send_request_receipt.apply_async(
                kwargs=dict(request_data=request_data,
                            filename=filename,
                            supplier=supplier,
                            requests_reties=requests_reties))
Esempio n. 2
0
    def test_template_built_sandbox(self, get_daily_increment_id_mock,
                                    get_monthly_increment_id_mock):
        get_monthly_increment_id_mock.return_value = 202
        get_daily_increment_id_mock.return_value = 2

        with patch("fiscal_bot.fiscal_api.get_now") as get_now_mock:
            get_now_mock.return_value = datetime(2017, 12, 31, 12, 0, 5)
            filename, content = build_receipt_request(
                task=Mock(),
                tenderID="UA-2019-01-31-000147-a",
                lot_index=None,
                identifier="AA426097",
                name="Python Monty Иванович",
            )
        get_monthly_increment_id_mock.assert_called_once()
        get_daily_increment_id_mock.assert_called_once()
        self.assertEqual(
            filename, "2659"
            "0002426097"
            "J16031"
            "{0:02d}".format(REQUEST_DOC_VERSION) + "100"
            "9"
            "000202"
            "1"
            "12"
            "2017"
            "2659.xml")
Esempio n. 3
0
    def test_template_built(self, get_daily_increment_id_mock,
                            get_monthly_increment_id_mock):
        get_monthly_increment_id_mock.return_value = 202
        get_daily_increment_id_mock.return_value = 2

        with patch("fiscal_bot.fiscal_api.get_now") as get_now_mock:
            get_now_mock.return_value = datetime(2017, 12, 31, 12, 0, 5)
            filename, content = build_receipt_request(
                task=Mock(),
                tenderID="UA-2019-01-31-000147-a",
                lot_index=None,
                identifier="AA426097",
                name="Python Monty Иванович",
            )
        get_monthly_increment_id_mock.assert_called_once()
        get_daily_increment_id_mock.assert_called_once()
        self.assertEqual(
            filename, "2659"
            "0002426097"
            "J16031"
            "{0:02d}".format(REQUEST_DOC_VERSION) + "1000000202"
            "1"
            "12"
            "2017"
            "2659.xml")

        self.assertIn(b"<HNUM>2</HNUM>", content)
        self.assertIn(b"<C_DOC_CNT>202</C_DOC_CNT>", content)
        self.assertIn(
            "<C_DOC_VER>{}</C_DOC_VER>".format(REQUEST_DOC_VERSION).encode(
                "windows-1251"), content)
        self.assertIn(b"<HFILL>31122017</HFILL>", content)
        self.assertIn(b"<HTIME>12:00:05</HTIME>", content)
        self.assertIn("<HNAME>ДП «ПРОЗОРРО»</HNAME>".encode("windows-1251"),
                      content)
        self.assertIn(b"<HTIN>02426097</HTIN>", content)
        self.assertIn(b"<HKSTI>2659</HKSTI>", content)
        self.assertIn(
            "<HSTI>ДПI у Шевченківському районі ГУ ДФС у м. Києві</HSTI>".
            encode("windows-1251"), content)
        self.assertIn(b"<R0101G1S>UA-2019-01-31-000147-a</R0101G1S>", content)
        self.assertIn(b"<R0201G1S>AA426097</R0201G1S>", content)
        self.assertIn(
            "<R0202G1S>Python Monty Иванович</R0202G1S>".encode(
                "windows-1251"), content)
        self.assertIn("<R0203G1S>Python</R0203G1S>".encode("windows-1251"),
                      content)
        self.assertIn("<R0204G1S>Monty</R0204G1S>".encode("windows-1251"),
                      content)
        self.assertIn("<R0205G1S>Иванович</R0205G1S>".encode("windows-1251"),
                      content)
Esempio n. 4
0
    def test_template_built_encode_error(self, get_daily_increment_id_mock,
                                         get_monthly_increment_id_mock):
        get_monthly_increment_id_mock.return_value = 202
        get_daily_increment_id_mock.return_value = 2

        with patch("fiscal_bot.fiscal_api.get_now") as get_now_mock:
            get_now_mock.return_value = datetime(2017, 12, 31, 12, 0, 5)
            _, content = build_receipt_request(
                task=Mock(),
                tenderID="UA-2019-01-31-000147-a",
                lot_index=None,
                identifier="03328362",
                name=
                "КП ″КОМУНАЛЬНЕ ШЛЯХОВО-ЕКСПЛУАТАЦІЙНЕ  ПІДПРИЄМСТВО″ УЖГОРОДСЬКОЇ МІСЬКОЇ РАДИ",
            )
        self.assertIn(
            "<R0202G1S>КП КОМУНАЛЬНЕ ШЛЯХОВО-ЕКСПЛУАТАЦІЙНЕ  ПІДПРИЄМСТВО УЖГОРОДСЬКОЇ "
            "МІСЬКОЇ РАДИ</R0202G1S>".encode("windows-1251"), content)
Esempio n. 5
0
    def test_template_built_lot(self, get_daily_increment_id_mock,
                                get_monthly_increment_id_mock):
        get_monthly_increment_id_mock.return_value = 202
        get_daily_increment_id_mock.return_value = 2

        with patch("fiscal_bot.fiscal_api.get_now") as get_now_mock:
            get_now_mock.return_value = datetime(2017, 12, 31, 12, 0, 5)
            filename, content = build_receipt_request(
                task=Mock(),
                tenderID="UA-2019-01-31-000147-a",
                lot_index=0,
                identifier="AA426097",
                name="Python Monty Иванович",
            )
        get_monthly_increment_id_mock.assert_called_once()
        get_daily_increment_id_mock.assert_called_once()
        self.assertIn(
            "<R0101G1S>UA-2019-01-31-000147-a Лот 1</R0101G1S>".encode(
                "windows-1251"), content)