diff --git a/beancount_import/source/amazon_invoice.py b/beancount_import/source/amazon_invoice.py index cace341c..e830ae92 100644 --- a/beancount_import/source/amazon_invoice.py +++ b/beancount_import/source/amazon_invoice.py @@ -386,18 +386,24 @@ def parse_regular_order_invoice(path: str) -> Order: output_fields = dict() output_fields['pretax_adjustments'] = get_adjustments_in_table( payment_table, pretax_adjustment_fields_pattern) - amount = reduce_amounts( - a.amount for a in output_fields['pretax_adjustments']) payment_adjustments = collections.OrderedDict() # type: Dict[str, Amount] + + # older invoices put pre-tax amounts on a per-shipment basis + # new invoices only put pre-tax amounts on the overall payments section + # detect which this is + pretax_amount = reduce_amounts( + a.amount for a in output_fields['pretax_adjustments']) + shipments_pretax_amount = None + if any(s.pretax_adjustments for s in shipments): - expected_amount = reduce_amounts( - a.amount + shipments_pretax_amount = reduce_amounts(a.amount for shipment in shipments - for a in shipment.pretax_adjustments) - if expected_amount != amount: + for a in shipment.pretax_adjustments) + + if shipments_pretax_amount != pretax_amount: errors.append( 'expected total pretax adjustment to be %s, but parsed total is %s' - % (expected_amount, amount)) + % (expected_amount, pretax_amount)) payments_total_adjustments = [] shipments_total_adjustments = [] @@ -455,6 +461,12 @@ def resolve_posttax_adjustments(): expected_total = add_amount(shipments_total_adjustment, reduce_amounts(x.total for x in shipments)) + + # if no shipments pre-tax section, then the expected total isn't accounting + # for the pre-tax adjustments yet since they are only in the grand total section + if shipments_pretax_amount is None: + expected_total = add_amount(expected_total, pretax_amount) + adjusted_grand_total = add_amount(payments_total_adjustment, grand_total) if expected_total != adjusted_grand_total: errors.append('expected grand total is %s, but parsed value is %s' % diff --git a/testdata/source/amazon/111-1120740-1860260.html b/testdata/source/amazon/111-1120740-1860260.html new file mode 100644 index 00000000..6a83eea6 --- /dev/null +++ b/testdata/source/amazon/111-1120740-1860260.html @@ -0,0 +1,618 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Amazon.com - Order 111-1120740-1860260 + + + + + + +
+ +
+
+ Details for Order #111-1120740-1860260 +
+ +

+ + + + + +
+ + + + + + + + + + + + + + + + + + + + +
+ + Order Placed: + + October 24, 2020 +
+ Amazon.com order number: + 111-1120740-1860260 +
+ Order Total: + $0.00 +
+
+ + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + +
+ + + + +
+
+ Shipping now +
+
+
+ + + + +
+ + + + +
+   +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Items Ordered + + Price +
+ + 1 + + of: + + Magnetic USB C Adapter 20Pins Type C Connector, Support USB PD 100W Quick Charge, 10Gb/s Data Transfer and 4K@60 Hz Video Output Compatible with MacBook Pro/Air and More Type C Devices (Grey)
+ + + + Sold by: YDM-US (seller profile) + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + Condition: New
+ + +
+ +
+ + $24.99
+ +
+
+
+
+ + + + + +
+ + + +Shipping Address: + + + + +
+ + + + +
+Shipping Speed: + + + + +
+One-Day Shipping +
+ + + + + + + + + +
+ +
+ +
+
+
+ +
+ + + + + + + + +
+ + + + + + + +
+ + + + +
+
Payment information
+
+
+ + + + +
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Item(s) Subtotal: $24.99
Shipping & Handling:$0.00
Your Coupon Savings:-$3.00
 -----
Total before tax:$21.99
Estimated tax to be collected:$1.32
Gift Card Amount:-$23.31
 -----
Grand Total:$0.00
+ +
+ + + + + + +Payment Method: + + +
+ + + Amazon.com Visa Signature + | Last digits: 1234 +
+ + + + + + Gift Card
+ + + + + + + + + + +
+Billing address + + + +
+
+
+ + + +
+ +
+ +

To view the status of your order, return to Order Summary.

+ +
+ +
+ + +
+ +Conditions of Use +| +Privacy Notice +© 1996-2020, Amazon.com, Inc. or its affiliates +
+ + + + + diff --git a/testdata/source/amazon/test_basic/import_results.beancount b/testdata/source/amazon/test_basic/import_results.beancount index 25aa6a1a..fa3fec89 100644 --- a/testdata/source/amazon/test_basic/import_results.beancount +++ b/testdata/source/amazon/test_basic/import_results.beancount @@ -541,3 +541,47 @@ Expenses:FIXME -27.05 USD amazon_credit_card_description: "Visa ending in 1234" transaction_date: 2020-09-01 + +;; date: 2020-10-24 +;; info: {"filename": "/111-1120740-1860260.html", "type": "text/html"} + +; features: [ +; { +; "amount": "1.32 USD", +; "date": "2020-10-24", +; "key_value_pairs": { +; "amazon_item_description": [ +; "Magnetic USB C Adapter 20Pins Type C Connector, Support USB PD 100W Quick Charge, 10Gb/s Data Transfer and 4K@60 Hz Video Output Compatible with MacBook Pro/Air and More Type C Devices (Grey)" +; ] +; }, +; "source_account": "" +; }, +; { +; "amount": "0.00 USD", +; "date": "2020-10-24", +; "key_value_pairs": { +; "amazon_credit_card_description": [ +; "Amazon.com Visa Signature ending in 1234" +; ] +; }, +; "source_account": "" +; } +; ] +2020-10-24 * "Amazon.com" "Order" + amazon_account: "name@domain.com" + amazon_order_id: "111-1120740-1860260" + associated_data0: "{\"description\": \"Amazon order invoice\", \"meta\": [\"amazon_order_id\", \"111-1120740-1860260\"], \"path\": \"/111-1120740-1860260.html\", \"type\": \"text/html\"}" + Expenses:FIXME:A 24.99 USD + amazon_item_condition: "New" + amazon_item_description: "Magnetic USB C Adapter 20Pins Type C Connector, Support USB PD 100W Quick Charge, 10Gb/s Data Transfer and 4K@60 Hz Video Output Compatible with MacBook Pro/Air and More Type C Devices (Grey)" + amazon_item_quantity: 1 + amazon_seller: "YDM-US" + Expenses:FIXME:A -3.00 USD + amazon_invoice_description: "Your Coupon Savings" + Expenses:FIXME:A 1.32 USD + amazon_invoice_description: "Sales Tax" + Assets:Gift-Cards:Amazon -23.31 USD + amazon_posttax_adjustment: "Gift Card Amount" + Expenses:FIXME 0.00 USD + amazon_credit_card_description: "Amazon.com Visa Signature ending in 1234" + transaction_date: 2020-10-24 diff --git a/testdata/source/amazon/test_cleared_and_invalid/import_results.beancount b/testdata/source/amazon/test_cleared_and_invalid/import_results.beancount index 11a2a4a2..229069ae 100644 --- a/testdata/source/amazon/test_cleared_and_invalid/import_results.beancount +++ b/testdata/source/amazon/test_cleared_and_invalid/import_results.beancount @@ -222,3 +222,37 @@ Liabilities:Credit-Card -27.05 USD amazon_credit_card_description: "Visa ending in 1234" transaction_date: 2020-09-01 + +;; date: 2020-10-24 +;; info: {"filename": "/111-1120740-1860260.html", "type": "text/html"} + +; features: [ +; { +; "amount": "1.32 USD", +; "date": "2020-10-24", +; "key_value_pairs": { +; "amazon_item_description": [ +; "Magnetic USB C Adapter 20Pins Type C Connector, Support USB PD 100W Quick Charge, 10Gb/s Data Transfer and 4K@60 Hz Video Output Compatible with MacBook Pro/Air and More Type C Devices (Grey)" +; ] +; }, +; "source_account": "" +; } +; ] +2020-10-24 * "Amazon.com" "Order" + amazon_account: "name@domain.com" + amazon_order_id: "111-1120740-1860260" + associated_data0: "{\"description\": \"Amazon order invoice\", \"meta\": [\"amazon_order_id\", \"111-1120740-1860260\"], \"path\": \"/111-1120740-1860260.html\", \"type\": \"text/html\"}" + Expenses:FIXME:A 24.99 USD + amazon_item_condition: "New" + amazon_item_description: "Magnetic USB C Adapter 20Pins Type C Connector, Support USB PD 100W Quick Charge, 10Gb/s Data Transfer and 4K@60 Hz Video Output Compatible with MacBook Pro/Air and More Type C Devices (Grey)" + amazon_item_quantity: 1 + amazon_seller: "YDM-US" + Expenses:FIXME:A -3.00 USD + amazon_invoice_description: "Your Coupon Savings" + Expenses:FIXME:A 1.32 USD + amazon_invoice_description: "Sales Tax" + Assets:Gift-Cards:Amazon -23.31 USD + amazon_posttax_adjustment: "Gift Card Amount" + Liabilities:Credit-Card 0.00 USD + amazon_credit_card_description: "Amazon.com Visa Signature ending in 1234" + transaction_date: 2020-10-24 diff --git a/testdata/source/amazon/test_credit_card_transactions/import_results.beancount b/testdata/source/amazon/test_credit_card_transactions/import_results.beancount index 8a538dba..46b01ec3 100644 --- a/testdata/source/amazon/test_credit_card_transactions/import_results.beancount +++ b/testdata/source/amazon/test_credit_card_transactions/import_results.beancount @@ -411,3 +411,37 @@ Liabilities:Credit-Card -27.05 USD amazon_credit_card_description: "Visa ending in 1234" transaction_date: 2020-09-01 + +;; date: 2020-10-24 +;; info: {"filename": "/111-1120740-1860260.html", "type": "text/html"} + +; features: [ +; { +; "amount": "1.32 USD", +; "date": "2020-10-24", +; "key_value_pairs": { +; "amazon_item_description": [ +; "Magnetic USB C Adapter 20Pins Type C Connector, Support USB PD 100W Quick Charge, 10Gb/s Data Transfer and 4K@60 Hz Video Output Compatible with MacBook Pro/Air and More Type C Devices (Grey)" +; ] +; }, +; "source_account": "" +; } +; ] +2020-10-24 * "Amazon.com" "Order" + amazon_account: "name@domain.com" + amazon_order_id: "111-1120740-1860260" + associated_data0: "{\"description\": \"Amazon order invoice\", \"meta\": [\"amazon_order_id\", \"111-1120740-1860260\"], \"path\": \"/111-1120740-1860260.html\", \"type\": \"text/html\"}" + Expenses:FIXME:A 24.99 USD + amazon_item_condition: "New" + amazon_item_description: "Magnetic USB C Adapter 20Pins Type C Connector, Support USB PD 100W Quick Charge, 10Gb/s Data Transfer and 4K@60 Hz Video Output Compatible with MacBook Pro/Air and More Type C Devices (Grey)" + amazon_item_quantity: 1 + amazon_seller: "YDM-US" + Expenses:FIXME:A -3.00 USD + amazon_invoice_description: "Your Coupon Savings" + Expenses:FIXME:A 1.32 USD + amazon_invoice_description: "Sales Tax" + Assets:Gift-Cards:Amazon -23.31 USD + amazon_posttax_adjustment: "Gift Card Amount" + Liabilities:Credit-Card 0.00 USD + amazon_credit_card_description: "Amazon.com Visa Signature ending in 1234" + transaction_date: 2020-10-24 diff --git a/testdata/source/amazon/test_prediction/import_results.beancount b/testdata/source/amazon/test_prediction/import_results.beancount index 9ed2f2c8..ec42f42f 100644 --- a/testdata/source/amazon/test_prediction/import_results.beancount +++ b/testdata/source/amazon/test_prediction/import_results.beancount @@ -252,3 +252,47 @@ Liabilities:Credit-Card -27.05 USD amazon_credit_card_description: "Visa ending in 1234" transaction_date: 2020-09-01 + +;; date: 2020-10-24 +;; info: {"filename": "/111-1120740-1860260.html", "type": "text/html"} + +; features: [ +; { +; "amount": "1.32 USD", +; "date": "2020-10-24", +; "key_value_pairs": { +; "amazon_item_description": [ +; "Magnetic USB C Adapter 20Pins Type C Connector, Support USB PD 100W Quick Charge, 10Gb/s Data Transfer and 4K@60 Hz Video Output Compatible with MacBook Pro/Air and More Type C Devices (Grey)" +; ] +; }, +; "source_account": "" +; }, +; { +; "amount": "-23.31 USD", +; "date": "2020-10-24", +; "key_value_pairs": { +; "amazon_posttax_adjustment": [ +; "Gift Card Amount" +; ] +; }, +; "source_account": "" +; } +; ] +2020-10-24 * "Amazon.com" "Order" + amazon_account: "name@domain.com" + amazon_order_id: "111-1120740-1860260" + associated_data0: "{\"description\": \"Amazon order invoice\", \"meta\": [\"amazon_order_id\", \"111-1120740-1860260\"], \"path\": \"/111-1120740-1860260.html\", \"type\": \"text/html\"}" + Expenses:FIXME:A 24.99 USD + amazon_item_condition: "New" + amazon_item_description: "Magnetic USB C Adapter 20Pins Type C Connector, Support USB PD 100W Quick Charge, 10Gb/s Data Transfer and 4K@60 Hz Video Output Compatible with MacBook Pro/Air and More Type C Devices (Grey)" + amazon_item_quantity: 1 + amazon_seller: "YDM-US" + Expenses:FIXME:A -3.00 USD + amazon_invoice_description: "Your Coupon Savings" + Expenses:FIXME:A 1.32 USD + amazon_invoice_description: "Sales Tax" + Expenses:FIXME -23.31 USD + amazon_posttax_adjustment: "Gift Card Amount" + Liabilities:Credit-Card 0.00 USD + amazon_credit_card_description: "Amazon.com Visa Signature ending in 1234" + transaction_date: 2020-10-24