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