first commit

This commit is contained in:
root
2026-03-14 09:42:12 +00:00
commit 0adbd20c2c
10991 changed files with 1646955 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.

View File

@@ -0,0 +1,315 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from datetime import date
from decimal import Decimal
from trytond.modules.company.tests import CompanyTestMixin, create_company
from trytond.pool import Pool
from trytond.tests.test_tryton import ModuleTestCase, with_transaction
from trytond.transaction import Transaction
class CustomsTestCase(CompanyTestMixin, ModuleTestCase):
'Test Customs module'
module = 'customs'
@with_transaction()
def test_tariff_code_match_date(self):
"Test tariff code match date"
pool = Pool()
Tariff = pool.get('customs.tariff.code')
Template = pool.get('product.template')
Product_TariffCode = pool.get(
'product-customs.tariff.code')
Month = pool.get('ir.calendar.month')
june, = Month.search([('index', '=', 6)])
august, = Month.search([('index', '=', 8)])
# Test start <= end
tariff1 = Tariff(code='170390')
tariff2 = Tariff(code='17039099',
start_month=june, start_day=20,
end_month=august, end_day=20)
Tariff.save([tariff1, tariff2])
template = Template(tariff_codes=[
Product_TariffCode(tariff_code=tariff2),
Product_TariffCode(tariff_code=tariff1),
], tariff_codes_category=False)
for pattern, result in [
({'date': date(2015, 1, 1)}, tariff1),
({'date': date(2015, 7, 1)}, tariff2),
({'date': date(2016, 9, 1)}, tariff1),
]:
self.assertEqual(template.get_tariff_code(pattern), result)
# Test start > end
tariff2.start_month = august
tariff2.end_month = june
tariff2.save()
for pattern, result in [
({'date': date(2015, 1, 1)}, tariff2),
({'date': date(2015, 7, 1)}, tariff1),
({'date': date(2016, 9, 1)}, tariff2),
]:
self.assertEqual(template.get_tariff_code(pattern), result)
@with_transaction()
def test_tariff_code_match_country(self):
"Test tariff code match country"
pool = Pool()
Tariff = pool.get('customs.tariff.code')
Country = pool.get('country.country')
country1 = Country(name="Country 1")
country1.save()
country2 = Country(name="Country 2")
country2.save()
tariff1 = Tariff(code='170390')
tariff1.save()
tariff2 = Tariff(code='17039099', country=country1)
tariff2.save()
self.assertTrue(tariff1.match({}))
self.assertTrue(tariff1.match({'country': None}))
self.assertTrue(tariff1.match({'country': country1.id}))
self.assertTrue(tariff2.match({}))
self.assertTrue(tariff2.match({'country': None}))
self.assertTrue(tariff2.match({'country': country1.id}))
self.assertFalse(tariff2.match({'country': country2.id}))
@with_transaction()
def test_tariff_code_match_country_organization(self):
"Test Tariff code match country with organization"
pool = Pool()
Tariff = pool.get('customs.tariff.code')
Country = pool.get('country.country')
Organization = pool.get('country.organization')
country1 = Country(name="Country 1")
country1.save()
country2 = Country(name="Country 2")
country2.save()
organization = Organization(
name="Organization", members=[{'country': country1.id}])
organization.save()
tariff1 = Tariff(code='170390')
tariff1.save()
tariff2 = Tariff(code='17039099', organization=organization)
tariff2.save()
self.assertTrue(tariff1.match({}))
self.assertTrue(tariff1.match({'country': None}))
self.assertTrue(tariff1.match({'country': country1.id}))
self.assertTrue(tariff2.match({}))
self.assertTrue(tariff2.match({'country': None}))
self.assertTrue(tariff2.match({'country': country1.id}))
self.assertFalse(tariff2.match({'country': country2.id}))
@with_transaction()
def test_get_tariff_code(self):
'Test get_tariff_code'
pool = Pool()
Tariff = pool.get('customs.tariff.code')
Template = pool.get('product.template')
Category = pool.get('product.category')
Product_TariffCode = pool.get(
'product-customs.tariff.code')
tariff1, tariff2, tariff3 = Tariff.create([
{'code': '170390'},
{'code': '17039099'},
{'code': '1703909999'},
])
category1 = Category(tariff_codes=[
Product_TariffCode(tariff_code=tariff1),
], tariff_codes_parent=False, customs=True)
category2 = Category(tariff_codes=[
Product_TariffCode(tariff_code=tariff2),
], parent=category1, tariff_codes_parent=False, customs=True)
template = Template(tariff_codes=[
Product_TariffCode(tariff_code=tariff3),
], customs_category=category2, tariff_codes_category=False)
self.assertEqual(template.get_tariff_code({}), tariff3)
template.tariff_codes_category = True
self.assertEqual(template.get_tariff_code({}), tariff2)
category2.tariff_codes_parent = True
self.assertEqual(template.get_tariff_code({}), tariff1)
@with_transaction()
def test_duty_rate_match(self):
'Test duty rate match'
pool = Pool()
Tariff = pool.get('customs.tariff.code')
Rate = pool.get('customs.duty.rate')
Currency = pool.get('currency.currency')
CurrencyRate = pool.get('currency.currency.rate')
currency = Currency(name='cur', symbol='cur', code='XXX',
rates=[CurrencyRate(rate=Decimal(1))])
currency.save()
tariff = Tariff(code='170390')
tariff.save()
rate1 = Rate(tariff_code=tariff,
computation_type='amount',
end_date=date(2015, 6, 30),
amount=Decimal(10), currency=currency)
rate2 = Rate(tariff_code=tariff,
start_date=date(2015, 7, 1),
end_date=date(2015, 12, 31),
computation_type='amount',
amount=Decimal(10), currency=currency)
rate3 = Rate(tariff_code=tariff,
start_date=date(2015, 12, 31),
computation_type='amount',
amount=Decimal(10), currency=currency)
Rate.save([rate1, rate2, rate3])
for pattern, result in [
({'date': date(2015, 1, 1)}, rate1),
({'date': date(2015, 8, 1)}, rate2),
({'date': date(2016, 9, 1)}, rate3),
]:
self.assertEqual(tariff.get_duty_rate(pattern), result)
@with_transaction()
def test_duty_rate_compute(self):
'Test duty rate compute'
pool = Pool()
Rate = pool.get('customs.duty.rate')
Currency = pool.get('currency.currency')
CurrencyRate = pool.get('currency.currency.rate')
Uom = pool.get('product.uom')
kg, g = Uom.search([('name', 'in', ['Kilogram', 'Gram'])],
order=[('name', 'DESC')])
currency1 = Currency(name='cur1', symbol='cur1', code='XX1',
rates=[CurrencyRate(rate=Decimal(1))])
currency2 = Currency(name='cur2', symbol='cur1', code='XX2',
rates=[CurrencyRate(rate=Decimal('.5'))])
Currency.save([currency1, currency2])
rate = Rate(computation_type='amount',
amount=Decimal(10), currency=currency1)
self.assertEqual(rate.compute(currency2, 1, kg), Decimal(5))
rate = Rate(computation_type='quantity',
amount=Decimal(10), currency=currency1, uom=kg)
self.assertEqual(rate.compute(currency2, 100, g), Decimal('0.5'))
@with_transaction()
def test_delete_category(self):
'Test delete category'
pool = Pool()
Tariff = pool.get('customs.tariff.code')
Category = pool.get('product.category')
Product_TariffCode = pool.get(
'product-customs.tariff.code')
tariff = Tariff(code='170390')
tariff.save()
category = Category(name='Test', customs=True,
tariff_codes=[
Product_TariffCode(tariff_code=tariff),
])
category.save()
product_tariff_code, = category.tariff_codes
Category.delete([category])
self.assertEqual(
Product_TariffCode.search([
('id', '=', product_tariff_code.id),
]), [])
@with_transaction()
def test_delete_template(self):
'Test delete template'
pool = Pool()
Tariff = pool.get('customs.tariff.code')
Template = pool.get('product.template')
Uom = pool.get('product.uom')
Product_TariffCode = pool.get(
'product-customs.tariff.code')
unit, = Uom.search([('name', '=', 'Unit')])
tariff = Tariff(code='170390')
tariff.save()
template = Template(name='Test',
default_uom=unit,
tariff_codes=[
Product_TariffCode(tariff_code=tariff),
])
template.save()
product_tariff_code, = template.tariff_codes
Template.delete([template])
self.assertEqual(
Product_TariffCode.search([
('id', '=', product_tariff_code.id),
]), [])
@with_transaction()
def test_agent_selection(self):
"Test agent selection"
pool = Pool()
Party = pool.get('party.party')
Identifier = pool.get('party.identifier')
Agent = pool.get('customs.agent')
Country = pool.get('country.country')
Selection = pool.get('customs.agent.selection')
party = Party(name="Agent", addresses=[{}])
party.save()
address, = party.addresses
tax_identifier = Identifier(
party=party, type='be_vat', code="BE403019261")
tax_identifier.save()
agent1 = Agent(
party=party,
address=address,
tax_identifier=tax_identifier)
agent1.save()
agent2 = Agent(
party=party,
address=address,
tax_identifier=tax_identifier)
agent2.save()
country1 = Country(name="Country 1")
country1.save()
country2 = Country(name="Country 2")
country2.save()
company = create_company()
with Transaction().set_context(company=company.id):
Selection.create([{
'to_country': country1,
'agent': agent1,
}, {
'agent': agent2,
}])
self.assertEqual(Selection.get_agent(company, {
'to_country': country1.id,
}), agent1)
self.assertEqual(Selection.get_agent(company, {
'to_country': country2.id,
}), agent2)
del ModuleTestCase