示例#1
0
    def test_calculate_item_without_icms(self):
        # SP (São Paulo) as default state.
        branch = get_current_branch(self.store)
        address = branch.person.get_main_address()
        state = address.city_location.state
        assert state == "SP"
        # Product with NCM, but without ICMS
        sale = self.create_sale()
        item = self.create_sale_item(sale)
        product = item.sellable.product
        product.ncm = u'01012100'
        items = sale.get_items()
        generator = IBPTGenerator(items)
        # When there is no icms information, the value defaults to the nacional
        # tax.
        tax_values = generator._load_tax_values(item)
        federal = generator._calculate_federal_tax(item, tax_values)
        self.assertEquals(federal, Decimal("4.20"))
        state = generator._calculate_state_tax(item, tax_values)
        self.assertEquals(state, Decimal("0"))

        msg = generate_ibpt_message(items)
        expected_msg = ("Trib aprox R$: 4.20 Federal e 0.00 Estadual\n"
                        "Fonte: IBPT W7m9E1 ")
        self.assertEquals(msg, expected_msg)
示例#2
0
    def test_calculate_item_without_icms(self):
        # SP (São Paulo) as default state.
        branch = get_current_branch(self.store)
        address = branch.person.get_main_address()
        state = address.city_location.state
        assert state == "SP"
        # Product with NCM, but without ICMS
        sale = self.create_sale()
        item = self.create_sale_item(sale)
        product = item.sellable.product
        product.ncm = u'01012100'
        items = sale.get_items()
        generator = IBPTGenerator(items)
        # When there is no icms information, the value defaults to the nacional
        # tax.
        tax_values = generator._load_tax_values(item)
        federal = generator._calculate_federal_tax(item, tax_values)
        self.assertEquals(federal, Decimal("4.20"))
        state = generator._calculate_state_tax(item, tax_values)
        self.assertEquals(state, Decimal("18"))

        msg = generate_ibpt_message(items)
        expected_msg = ("Trib aprox R$: 4.20 Federal e 18.00 Estadual\n"
                        "Fonte: IBPT 5oi7eW ")
        self.assertEquals(msg, expected_msg)
示例#3
0
 def close(self, sale):
     sale_items = sale.get_items()
     ibpt_msg = generate_ibpt_message(sale_items)
     parts = [ibpt_msg,
              _(u'Salesperson: %s') % sale.get_salesperson_name(),
              _('Stoq Retail Management')]
     additional_info = api.sysparam.get_string('ADDITIONAL_INFORMATION_ON_COUPON')
     if additional_info:
         # We are adding the information before the Stoq Ad
         parts.insert(-1, additional_info)
     message = '\n'.join(parts)
     message += ' - www.stoq.com.br'
     self._create_fiscal_sale_data(sale)
     coupon_id = self._driver.close(message)
     return coupon_id
示例#4
0
    def test_calculate_item_without_ncm(self):
        # Product without NCM
        sale = self.create_sale()
        item = self.create_sale_item(sale)
        items = sale.get_items()
        generator = IBPTGenerator(items)
        tax_values = generator._load_tax_values(item)
        federal = generator._calculate_federal_tax(item, tax_values)
        self.assertEquals(federal, Decimal("0"))
        state = generator._calculate_state_tax(item, tax_values)
        self.assertEquals(state, Decimal("0"))

        msg = generate_ibpt_message(items)
        expected_msg = ("Trib aprox R$: 0.00 Federal e 0.00 Estadual\n"
                        "Fonte:  0 ")
        self.assertEquals(msg, expected_msg)
示例#5
0
    def test_calculate_item_without_ncm(self):
        # Product without NCM
        sale = self.create_sale()
        item = self.create_sale_item(sale)
        items = sale.get_items()
        generator = IBPTGenerator(items)
        tax_values = generator._load_tax_values(item)
        federal = generator._calculate_federal_tax(item, tax_values)
        self.assertEquals(federal, Decimal("0"))
        state = generator._calculate_state_tax(item, tax_values)
        self.assertEquals(state, Decimal("0"))

        msg = generate_ibpt_message(items)
        expected_msg = ("Trib aprox R$: 0.00 Federal e 0.00 Estadual\n"
                        "Fonte:  0 ")
        self.assertEquals(msg, expected_msg)
示例#6
0
    def test_not_include_service(self):
        service = self.create_service()
        sellable = service.sellable
        sale = self.create_sale()
        item = sale.add_sellable(sellable, quantity=1)
        items = sale.get_items()
        generator = IBPTGenerator(items)
        tax_values = generator._load_tax_values(item)
        federal = generator._calculate_federal_tax(item, tax_values)
        self.assertEquals(federal, Decimal("0"))
        state = generator._calculate_state_tax(item, tax_values)
        self.assertEquals(state, Decimal("0"))

        msg = generate_ibpt_message(items)
        expected_msg = ("Trib aprox R$: 0.00 Federal e 0.00 Estadual\n"
                        "Fonte:  0")
        self.assertEquals(msg, expected_msg)
示例#7
0
    def test_with_service(self):
        service = self.create_service()
        sellable = service.sellable
        sale = self.create_sale()
        items = sale.get_items()
        sale.add_sellable(sellable, quantity=1)

        generator = IBPTGenerator(items)
        tax_values = generator._load_tax_values(service)
        federal = generator._calculate_federal_tax(service, tax_values)
        self.assertEquals(federal, Decimal("0"))
        state = generator._calculate_state_tax(service, tax_values)
        self.assertEquals(state, Decimal("0"))

        msg = generate_ibpt_message(sale.get_items())
        expected_msg = ("Trib aprox R$: 0.00 Federal e 0.00 Estadual\n"
                        "Fonte:  0 ")
        self.assertEquals(msg, expected_msg)
示例#8
0
    def test_include_service(self):
        service = self.create_service(price=50)
        service.service_list_item_code = '1.04'
        sellable = service.sellable
        sale = self.create_sale()
        items = sale.get_items()
        item = sale.add_sellable(sellable, quantity=1)

        generator = IBPTGenerator(items, include_services=True)
        tax_values = generator._load_tax_values(service)
        item_total = item.quantity * item.price
        expected_federal = item_total * Decimal(tax_values.nacionalfederal) / 100
        federal = generator._calculate_federal_tax(item, tax_values)
        self.assertEqual(federal, expected_federal)
        state = generator._calculate_state_tax(item, tax_values)
        self.assertEqual(state, Decimal("0"))

        msg = generate_ibpt_message(sale.services, include_services=True)
        expected_msg = ("Tributos aproximados: R$ 6.72 Federal e R$ 0.00 Estadual\n"
                        "Fonte: IBPT/empresometro.com.br A5G7R1")
        self.assertEqual(msg, expected_msg)