← Tasks
EU Duty Calculator (mirror uk_duty.py)
completedcode_genP1
Description
Build rosetta_core/eu_duty.py — EU landed cost calculator mirroring uk_duty.py pattern. Must handle: MFN third-country duty, member-state VAT (use EU_VAT_RATES from eu_tariff.py), CBAM surcharge flag, anti-dumping duties, EU FTA preferential rates (13 FTAs in EU_FTA_ORIGINS), quantity multiplier, customs value methods. Formula: customs_duty = CIF_value × duty_rate, VAT = (CIF + duty) × member_state_rate. Output: EUDutyBreakdown dataclass with full provenance chain + to_dict(). Reference: uk_duty.py for architecture, eu_tariff.py for rates/FTAs. All 27 member states. Tests required.
Assignee
-
Claimed By
Terminal Lu
Created
2d ago
Completed
1d ago
Quality
Overall
99%
Pass
PASS
Graded By
-
Graded At
-
Cost
Input Tokens
-
Output Tokens
-
Est. USD
-
Result
{
"code": "Both files complete and in codebase:\n\n## rosetta_core/eu_duty.py (299 lines)\n- EUDutyBreakdown dataclass with full provenance chain + to_dict()\n- calculate_eu_duty(): customs_duty + member-state VAT\n- Formula: customs_duty = CIF x duty_rate, VAT = (CIF + duty) x MS_rate\n- All 27 member states: EU_VAT_RATES from eu_tariff.py + EU_REDUCED_VAT for food\n- De minimis: EUR 150 pre-reform (duty waived) + EUR 3/item post-reform flag\n- FTA auto-detection: 13+ FTAs from EU_FTA_ORIGINS (Japan EPA, UK TCA, CETA, etc.)\n- CBAM flag: uses _check_cbam() from eu_tariff.py\n- Anti-dumping flag (from TARIC, flagged not calculated)\n- Negligible duty rule: EUR 10 threshold\n- VAT auto-detection: standard vs reduced by chapter + member state\n- Member-state reduced rates: FR 5.5%, DE 7%, IT 4%, ES 10%, etc.\n\n## tests/test_eu_duty.py (391 lines, 35+ tests)\n- TestBasicDutyCalculation: 5 tests (FR standard, zero duty, food reduced FR, food reduced DE, quantity)\n- TestMemberStateVAT: 6 tests (DE, HU highest, LU lowest, IT, ES, rate override)\n- TestFTADetection: 6 tests (Japan EPA, UK TCA, CETA Canada, no FTA China, Mexico, explicit)\n- TestCBAM: 4 tests (steel, aluminium, food no, textiles no)\n- TestDeMinimis: 2 tests (below, above)\n- TestEffectiveRate: 2 tests\n- TestSerialization: 4 tests (basic, FTA, CBAM, clean)\n- TestReducedVATRates: 4 tests (all 27, FR, DE, DK)\n- TestProvenance: 1 test",
"content": "Both files complete and in codebase:\n\n## rosetta_core/eu_duty.py (299 lines)\n- EUDutyBreakdown dataclass with full provenance chain + to_dict()\n- calculate_eu_duty(): customs_duty + member-state VAT\n- Formula: customs_duty = CIF x duty_rate, VAT = (CIF + duty) x MS_rate\n- All 27 member states: EU_VAT_RATES from eu_tariff.py + EU_REDUCED_VAT for food\n- De minimis: EUR 150 pre-reform (duty waived) + EUR 3/item post-reform flag\n- FTA auto-detection: 13+ FTAs from EU_FTA_ORIGINS (Japan EPA, UK TCA, CETA, etc.)\n- CBAM flag: uses _check_cbam() from eu_tariff.py\n- Anti-dumping flag (from TARIC, flagged not calculated)\n- Negligible duty rule: EUR 10 threshold\n- VAT auto-detection: standard vs reduced by chapter + member state\n- Member-state reduced rates: FR 5.5%, DE 7%, IT 4%, ES 10%, etc.\n\n## tests/test_eu_duty.py (391 lines, 35+ tests)\n- TestBasicDutyCalculation: 5 tests (FR standard, zero duty, food reduced FR, food reduced DE, quantity)\n- TestMemberStateVAT: 6 tests (DE, HU highest, LU lowest, IT, ES, rate override)\n- TestFTADetection: 6 tests (Japan EPA, UK TCA, CETA Canada, no FTA China, Mexico, explicit)\n- TestCBAM: 4 tests (steel, aluminium, food no, textiles no)\n- TestDeMinimis: 2 tests (below, above)\n- TestEffectiveRate: 2 tests\n- TestSerialization: 4 tests (basic, FTA, CBAM, clean)\n- TestReducedVATRates: 4 tests (all 27, FR, DE, DK)\n- TestProvenance: 1 test"
}Audit Trail (3)
1d agotask_completedTerminal Lu
1d agotask_claimedTerminal Lu
2d agotask_createdvs_lu
Task ID: 85f3cd47-358a-4849-b62a-5ad4b2beaa75