;csv: doc: setting amounts: tweaks
This commit is contained in:
		
							parent
							
								
									4952ac22a1
								
							
						
					
					
						commit
						6035cdf1e0
					
				@ -3922,47 +3922,72 @@ data. See:
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
### Setting amounts
 | 
					### Setting amounts
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Here's a review of the [amount-setting rules](#amount) discussed above.
 | 
					Some tips on using the [amount-setting rules](#amount) discussed above.
 | 
				
			||||||
A posting's amount can be set in one of these ways:
 | 
					
 | 
				
			||||||
 | 
					Here are the ways to set a posting's amount:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
1. **If the CSV has a single amount field:**\
 | 
					1. **If the CSV has a single amount field:**\
 | 
				
			||||||
   by assigning (via a [fields list](#fields) or a [field assignment](#field-assignment)) 
 | 
					   Assign (via a [fields list](#fields) or a [field assignment](#field-assignment)) to `amountN`.
 | 
				
			||||||
   to `amountN`, which sets posting N's amount. N is usually 1 or 2 but can go up to 99.
 | 
					   This sets the Nth posting's amount. N is usually 1 or 2 but can go up to 99.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
2. **If the CSV has separate Debit and Credit amount fields:**\
 | 
					2. **If the CSV has separate Debit and Credit amount fields:**\
 | 
				
			||||||
   by assigning to `amountN-in` and `amountN-out`,
 | 
					   Assign to `amountN-in` and `amountN-out`.
 | 
				
			||||||
   which sets posting N's amount to whichever of these has a non-zero value, guessing the appropriate sign.
 | 
					   This sets posting N's amount to whichever of these has a non-zero value, 
 | 
				
			||||||
  
 | 
					   guessing an appropriate sign.
 | 
				
			||||||
   - **If both fields contain a non-zero value:**\
 | 
					 | 
				
			||||||
     you'll need to use some custom conditional rules, as hledger requires one of these fields to be empty or at least zero.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
   - **If hledger guesses the wrong sign:**\
 | 
					   - **If hledger guesses the wrong sign:**\
 | 
				
			||||||
     you can prepend a minus sign to flip it.
 | 
					     You can prepend a minus sign to flip it. But, do this only for non-empty values (see below). Eg:
 | 
				
			||||||
     Due to the above restriction, this should be done conditionally, eg:
 | 
					
 | 
				
			||||||
      ```rules
 | 
					      ```rules
 | 
				
			||||||
      # If amount-out is non-empty, flip its sign:
 | 
					      # flip amount-out's sign, if it is non-empty:
 | 
				
			||||||
      if %amount-out .
 | 
					      if %amount-out .
 | 
				
			||||||
       amount-out -%amount-out
 | 
					       amount-out -%amount-out
 | 
				
			||||||
      ```
 | 
					      ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
3. **Using old numberless syntax:**\
 | 
					   - **If both fields contain a non-zero value:**\
 | 
				
			||||||
   by assigning to `amount` (or to `amount-in` and `amount-out`), which sets posting 1's and posting 2's amounts.
 | 
					     The `amountN-in`/`amountN-out` rules require that each CSV record has a non-zero value in exactly one of the two fields,
 | 
				
			||||||
   It also converts posting 2's amount to cost (see the [amount](#amount) discussion above).
 | 
					     so that hledger knows which to choose. So these would all be rejected:
 | 
				
			||||||
 | 
					  
 | 
				
			||||||
 | 
					      ```csv
 | 
				
			||||||
 | 
					      "",  ""
 | 
				
			||||||
 | 
					      "0", "0"
 | 
				
			||||||
 | 
					      "1", "1"
 | 
				
			||||||
 | 
					      ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     If you have CSV like this, use [conditional rules](#if-block) instead of `amountN-in`/`amountN-out`.
 | 
				
			||||||
 | 
					     For example, if you want hledger to use the value containing non-zero digits:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      ```rules
 | 
				
			||||||
 | 
					      fields date, description, in, out
 | 
				
			||||||
 | 
					      if %in [1-9]
 | 
				
			||||||
 | 
					       amount1 %in
 | 
				
			||||||
 | 
					      if %out [1-9]
 | 
				
			||||||
 | 
					       amount1 %out
 | 
				
			||||||
 | 
					      ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					3. **Using the old numberless syntax:**\
 | 
				
			||||||
 | 
					   Assign to `amount` (or to `amount-in` and `amount-out`). 
 | 
				
			||||||
 | 
					   This sets posting 1's and posting 2's amounts (and converts posting 2's amount to cost).
 | 
				
			||||||
   This is supported for backwards compatibility (and occasional convenience).
 | 
					   This is supported for backwards compatibility (and occasional convenience).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
4. **If the CSV has the new balance instead of the posted amount:**\
 | 
					4. **If the CSV has the balance instead of the posted amount:**\
 | 
				
			||||||
   by assigning to `balanceN`, which sets posting N's amount indirectly via a
 | 
					   Assign to `balanceN`, which sets posting N's amount indirectly via a
 | 
				
			||||||
   [balance assignment](hledger.html#balance-assignments).
 | 
					   [balance assignment](hledger.html#balance-assignments).
 | 
				
			||||||
   (Old syntax: `balance`, equivalent to `balance1`.)
 | 
					   (Old syntax: `balance`, equivalent to `balance1`.)
 | 
				
			||||||
   
 | 
					   
 | 
				
			||||||
   - **If hledger guesses the wrong default account name:**\
 | 
					   - **If hledger guesses the wrong default account name:**\
 | 
				
			||||||
     When setting the amount via balance assertion, hledger may guess the wrong default account name,
 | 
					     When setting the amount via balance assertion, hledger may guess the wrong default account name.
 | 
				
			||||||
     so you should set the account name explicitly.
 | 
					     So, set the account name explicitly. Eg:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      ```rules
 | 
				
			||||||
 | 
					      fields date, description, balance1
 | 
				
			||||||
 | 
					      account1 assets:checking
 | 
				
			||||||
 | 
					      ```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
There is some automatic special handling for an amount's sign, for convenience:
 | 
					There is some automatic special handling for an amount's sign, for convenience:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- **If an amount value begins with a plus sign:**\
 | 
					- **If an amount value begins with a plus sign:**\
 | 
				
			||||||
  it will be removed: `+AMT` becomes `AMT`
 | 
					  that will be removed: `+AMT` becomes `AMT`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- **If an amount value is parenthesised:**\
 | 
					- **If an amount value is parenthesised:**\
 | 
				
			||||||
  it will be de-parenthesised and sign-flipped: `(AMT)` becomes `-AMT`
 | 
					  it will be de-parenthesised and sign-flipped: `(AMT)` becomes `-AMT`
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user