mirror of
				https://github.com/aclindsa/moneygo.git
				synced 2025-10-30 17:33:26 -04:00 
			
		
		
		
	Add monthly cash flow example report
This commit is contained in:
		| @@ -42,6 +42,8 @@ function generate() | |||||||
| end | end | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
|  | More examples can be found in the reports/ directory in the MoneyGo source tree. | ||||||
|  |  | ||||||
| ## Basic Operation | ## Basic Operation | ||||||
|  |  | ||||||
| The lua code behind a report *must* contain a `generate()` function which takes | The lua code behind a report *must* contain a `generate()` function which takes | ||||||
|   | |||||||
							
								
								
									
										26
									
								
								reports/monthly_cash_flow.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								reports/monthly_cash_flow.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,26 @@ | |||||||
|  | function generate() | ||||||
|  | 	year = date.now().year | ||||||
|  |  | ||||||
|  | 	accounts = get_accounts() | ||||||
|  | 	t = tabulation.new(12) | ||||||
|  | 	t:title(year .. " Monthly Cash Flow") | ||||||
|  | 	series = t:series("Income minus expenses") | ||||||
|  |  | ||||||
|  | 	for month=1,12 do | ||||||
|  | 		begin_date = date.new(year, month, 1) | ||||||
|  | 		end_date = date.new(year, month+1, 1) | ||||||
|  |  | ||||||
|  | 		t:label(month, tostring(begin_date)) | ||||||
|  | 		cash_flow = 0 | ||||||
|  |  | ||||||
|  | 		for id, acct in pairs(accounts) do | ||||||
|  | 			if acct.type == account.Expense or acct.type == account.Income then | ||||||
|  | 				balance = acct:balance(begin_date, end_date) | ||||||
|  | 				cash_flow = cash_flow - balance.amount | ||||||
|  | 			end | ||||||
|  | 		end | ||||||
|  | 		series:value(month, cash_flow) | ||||||
|  | 	end | ||||||
|  |  | ||||||
|  | 	return t | ||||||
|  | end | ||||||
		Reference in New Issue
	
	Block a user