Skip to content

Commit

Permalink
AUD currency support (#64)
Browse files Browse the repository at this point in the history
  • Loading branch information
KonishchevDmitry committed Apr 10, 2022
1 parent 834a98c commit 083fcb4
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 15 deletions.
13 changes: 7 additions & 6 deletions src/currency/cash.rs
Original file line number Diff line number Diff line change
Expand Up @@ -175,21 +175,22 @@ impl fmt::Display for Cash {
}

fn format_currency(currency: &str, mut amount: &str) -> String {
let mut buffer = String::with_capacity(amount.len() + 1);

let prefix = match currency {
"EUR" => Some('€'),
"GBP" => Some('£'),
"USD" => Some('$'),
"AUD" => Some("AU$"),
"EUR" => Some("€"),
"GBP" => Some("£"),
"USD" => Some("$"),
_ => None,
};

let mut buffer = String::with_capacity(amount.len() + prefix.map(str::len).unwrap_or(1));

if let Some(prefix) = prefix {
if amount.starts_with('-') || amount.starts_with('+') {
buffer.push_str(&amount[..1]);
amount = &amount[1..];
}
buffer.push(prefix);
buffer.push_str(prefix);
}

buffer.push_str(amount);
Expand Down
15 changes: 8 additions & 7 deletions src/tax_statement/statement/foreign_income.rs
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ tax_statement_array_record!(CurrencyIncome {

tax_statement_inner_record!(CurrencyInfo {
automatic_convertion: bool,
code: Integer,
code: String,

income_date_rate: Decimal,
income_date_units: Integer,
Expand All @@ -89,18 +89,19 @@ tax_statement_inner_record!(CurrencyInfo {
impl CurrencyInfo {
pub fn new(currency: &str, precise_currency_rate: Decimal) -> GenericResult<CurrencyInfo> {
let (currency_code, currency_name, currency_rate_units) = match currency {
"EUR" => (978, "Евро", 100),
"GBP" => (826, "Фунт стерлингов", 100),
"HKD" => (344, "Гонконгский доллар", 1000),
"RUB" => (643, "Российский рубль", 1000),
"USD" => (840, "Доллар США", 100),
"AUD" => ("036", "Австралийский доллар", 100),
"EUR" => ("978", "Евро", 100),
"GBP" => ("826", "Фунт стерлингов", 100),
"HKD" => ("344", "Гонконгский доллар", 1000),
"RUB" => ("643", "Российский рубль", 1000),
"USD" => ("840", "Доллар США", 100),
_ => return Err!("{} currency is not supported yet", currency),
};
let currency_rate = currency::round(precise_currency_rate * Decimal::from(currency_rate_units));

Ok(CurrencyInfo {
automatic_convertion: true,
code: currency_code,
code: currency_code.to_owned(),

income_date_rate: currency_rate,
income_date_units: currency_rate_units,
Expand Down
3 changes: 3 additions & 0 deletions src/tax_statement/statement/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,9 @@ mod tests {
}, CurrencyTestCase {
name: "HKD", // 344 - Гонконгский доллар
rate: dec!(9.53013),
}, CurrencyTestCase {
name: "AUD", // 036 - Австралийский доллар
rate: dec!(56.9065),
}] {
let local_amount = crate::currency::round(amount * currency.rate);

Expand Down
2 changes: 1 addition & 1 deletion src/tax_statement/statement/testdata/filled.dc1
Original file line number Diff line number Diff line change
@@ -1 +1 @@
DLSG Decl20210103FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0009@DeclInfo00000000000100001000054456000010000150001000013000100001000010000100001000010000100001000010000100001000000001000000000000100011@PersonName00000000000000000000000100015@PersonDocument000100000000000053287400052812600000000000100010@Foreigner00000006������000000036430019@PhoneForeignerHome000000000019@PhoneForeignerWork000000000014@PersonAddress000100000000100000000000000000000000000000000000000010@HomePhone000000000010@WorkPhone000000000012@DeclInquiry0001000010000100001000010000100012@DeclForeign000160019@CurrencyIncome000000010000410100009���������0008��������0003840000364300054419700054419700011000384000077387.57000310000077387.5700031000010������ ���000310000077387.570002100006738.7600010000100001000010000100000000100019@CurrencyIncome000100010000415300055(01)������ �� ���������� �� (�����-�� �� ���. ����� ��)0005�����0003840000384000054419700054419700011000384000077387.57000310000077387.5700031000010������ ���000310000077387.57000100001000032010002100001000010000100000000100019@CurrencyIncome000200010000460130179������ � ���� ���������, ���������� �� ���������� �� ��������� ���������� ���������, � ��������� ������� ����������� ��������� ������, ��������������� ������� 1 ������ 224 �������0012�������� EUR0003840000384000054419700054419700011000397800079079.32000310000079079.3200031000004����000310000079079.32000100001000010000100001000010000100000000100019@CurrencyIncome000300010000460130179������ � ���� ���������, ���������� �� ���������� �� ��������� ���������� ���������, � ��������� ������� ����������� ��������� ������, ��������������� ������� 1 ������ 224 �������0012�������� RUB00038400003840000544197000544197000110003643000410000004100000041000000410000016���������� �����00031000003100000100001000010000100001000010000100000000100019@CurrencyIncome000400010000460130179������ � ���� ���������, ���������� �� ���������� �� ��������� ���������� ���������, � ��������� ������� ����������� ��������� ������, ��������������� ������� 1 ������ 224 �������0012�������� GBP00038400003840000544197000544197000110003826000810084.770003100000810084.7700031000015���� ����������0003100000810084.77000100001000010000100001000010000100000000100019@CurrencyIncome000500010000460130179������ � ���� ���������, ���������� �� ���������� �� ��������� ���������� ���������, � ��������� ������� ����������� ��������� ������, ��������������� ������� 1 ������ 224 �������0012�������� HKD0003840000384000054419700054419700011000334400079530.130004100000079530.13000410000018����������� ������00031000006953.01000100001000010000100001000010000100000000100015@StandartDeduct000100013@SocialDeduct000100019@ConstructionDeduct000100009@CBDeduct000100010@InvDeduct00010
DLSG Decl20210103FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0009@DeclInfo00000000000100001000054456000010000150001000013000100001000010000100001000010000100001000010000100001000000001000000000000100011@PersonName00000000000000000000000100015@PersonDocument000100000000000053287400052812600000000000100010@Foreigner00000006������000000036430019@PhoneForeignerHome000000000019@PhoneForeignerWork000000000014@PersonAddress000100000000100000000000000000000000000000000000000010@HomePhone000000000010@WorkPhone000000000012@DeclInquiry0001000010000100001000010000100012@DeclForeign000170019@CurrencyIncome000000010000410100009���������0008��������0003840000364300054419700054419700011000384000077387.57000310000077387.5700031000010������ ���000310000077387.570002100006738.7600010000100001000010000100000000100019@CurrencyIncome000100010000415300055(01)������ �� ���������� �� (�����-�� �� ���. ����� ��)0005�����0003840000384000054419700054419700011000384000077387.57000310000077387.5700031000010������ ���000310000077387.57000100001000032010002100001000010000100000000100019@CurrencyIncome000200010000460130179������ � ���� ���������, ���������� �� ���������� �� ��������� ���������� ���������, � ��������� ������� ����������� ��������� ������, ��������������� ������� 1 ������ 224 �������0012�������� EUR0003840000384000054419700054419700011000397800079079.32000310000079079.3200031000004����000310000079079.32000100001000010000100001000010000100000000100019@CurrencyIncome000300010000460130179������ � ���� ���������, ���������� �� ���������� �� ��������� ���������� ���������, � ��������� ������� ����������� ��������� ������, ��������������� ������� 1 ������ 224 �������0012�������� RUB00038400003840000544197000544197000110003643000410000004100000041000000410000016���������� �����00031000003100000100001000010000100001000010000100000000100019@CurrencyIncome000400010000460130179������ � ���� ���������, ���������� �� ���������� �� ��������� ���������� ���������, � ��������� ������� ����������� ��������� ������, ��������������� ������� 1 ������ 224 �������0012�������� GBP00038400003840000544197000544197000110003826000810084.770003100000810084.7700031000015���� ����������0003100000810084.77000100001000010000100001000010000100000000100019@CurrencyIncome000500010000460130179������ � ���� ���������, ���������� �� ���������� �� ��������� ���������� ���������, � ��������� ������� ����������� ��������� ������, ��������������� ������� 1 ������ 224 �������0012�������� HKD0003840000384000054419700054419700011000334400079530.130004100000079530.13000410000018����������� ������00031000006953.01000100001000010000100001000010000100000000100019@CurrencyIncome000600010000460130179������ � ���� ���������, ���������� �� ���������� �� ��������� ���������� ���������, � ��������� ������� ����������� ��������� ������, ��������������� ������� 1 ������ 224 �������0012�������� AUD0003840000384000054419700054419700011000303600075690.65000310000075690.6500031000020������������� ������000310000075690.65000100001000010000100001000010000100000000100015@StandartDeduct000100013@SocialDeduct000100019@ConstructionDeduct000100009@CBDeduct000100010@InvDeduct00010
2 changes: 1 addition & 1 deletion testdata
Submodule testdata updated from 5a0d5d to 8320a8

0 comments on commit 083fcb4

Please sign in to comment.