Skip to content
Snippets Groups Projects
  1. Jun 04, 2023
  2. Jun 03, 2023
  3. Jun 02, 2023
  4. Jun 01, 2023
  5. May 30, 2023
    • shall0pass's avatar
      Goals: Schedule include spent value in calculation (#1049) · bb1a4747
      shall0pass authored
      
      This adds back the functionality, which was inadvertantly removed, that
      includes the already spent column in the calculation when the template
      is run.
      
      Some transactions may be posted to the account prior to running the
      templates and would result incorrect budgeted amounts.
      
      ---------
      
      Co-authored-by: default avatarJed Fox <git@jedfox.com>
      Unverified
      bb1a4747
    • shall0pass's avatar
      End of month cleanup script (#1016) · d6408599
      shall0pass authored
      ~This is really just a proof of concept. I have no delusions that this
      might get included. I'm sure others might have a much cleaner
      implementation.~
      I'm now delusional.
      
      Resolves https://github.com/actualbudget/actual/issues/508
      
      Taking @youngcw 's advice, I changed the keyword to #cleanup for the end
      of month script to keep it separated.
      
      This screen video shows two categories that are sources of funds. At the
      end of the month, any excess in these funds can be redistributed to your
      highest priorities. Three categories are set as sinks, or recipients, of
      excess funds.
      
      #cleanup source   -> Move 'extra' funds to To Budget
      #cleanup sink -> Fund category with To Budget funds, default weight = 1
      #cleanup sink 2       -> Fund category with To Budget funds, weight = 2
      
      Steps of the script:
      1. Return funds from any category marked 'source'
      2. Fund overspent categories fully if negative carryover is not allowed.
      3. Fund each 'sink' category by the desired weight.
      
      I run through the script twice. Once to show that if there is a debt
      category that has a rolling negative balance, it will skip funding that
      category first and once to show how if a rolling negative balance isn't
      allowed, it will fund it before applying the weighted remainder. The
      example shown uses weights of 60, 20, and 20; therefore, the Debt
      category will receive 60% of the To Budget funds while General and Bills
      receive 20% each. The weights could have been changed to 6, 2, and 2 or
      3 for the Debt category with no additional value for General and Bills
      to achieve the same result.
      
      
      ![cleanup_button](https://github.com/actualbudget/actual/assets/20625555/56ae2b29-9be6-4e85-b532-1b05cff7c4c7)
      Unverified
      d6408599
  6. May 27, 2023
  7. May 25, 2023
  8. May 24, 2023
  9. May 17, 2023
  10. May 15, 2023
    • SudoCerb's avatar
      Add “Show unused payees” button (#1011) · 1305335f
      SudoCerb authored
      # Add ability to filter the Manage Payees screen to show orphaned payees
      only.
      
      I aimed to modify as little code as possible - we now have a button on
      the Manage Payees screen that will filter the table to show orphaned
      payees only.
      Unverified
      1305335f
  11. May 13, 2023
    • youngcw's avatar
      Fix infinite loop in repeat goal (#1019) · 54f9b712
      youngcw authored
      I believe I found the infinite loop problem in the repeat goal.  
      
      This doesn't mess things up if you are budgeting the same month that the
      goal starts, that's probably why we didn't see it before.
      
      Side note: The logic always starts at the start date in the template,
      then increments until falling in the right month window. If this
      template gets used for, say, a few years, it will start to bog down the
      processing. If someone has a good quick fix I can add that.
      Unverified
      54f9b712
    • shall0pass's avatar
  12. May 09, 2023
    • Jed Fox's avatar
      Enable 'curly' rule (#1015) · 54fa4bcc
      Jed Fox authored
      Multi-line `if`/`for` statements in JS can be confusing since there
      aren’t braces to indicate which code is enclosed in the statement. I set
      the configuration to `multi-line` to enforce usage of braces for
      multi-line statement bodies, but still allow things like `if (foo)
      return;`. I additionally added the `consistent` option to require braces
      for all elements of an if/else chain if one element has it. As you can
      see, this set of options pretty closely matches the existing code style.
      
      I was going to comment in #1008 about this stylistic change but realized
      that it’s (IMO) a little impolite to ask for code style changes unless
      they can be automatically enforced.
      
      Note that `if (foo) { \n return; \n }` is still valid and won’t be
      collapsed. I tried to automatically collapse all such cases but it was a
      lot of files and I didn’t want to pick out the useful from the useless
      differences.
      Unverified
      54fa4bcc
  13. May 07, 2023
  14. May 02, 2023
    • Jed Fox's avatar
      Add support for credit card OFX files (#987) · d2185909
      Jed Fox authored
      Unverified
      d2185909
    • Jed Fox's avatar
      Remove unused payee rules feature (#985) · 646d0d90
      Jed Fox authored
      Fixes #615. I would appreciate double-checking that I didn’t
      accidentally delete anything that is important.
      
      Since I’m removing the related API methods, this is technically a
      breaking change (even if people would have no reason to remove this
      stuff), so we should probably do a major release of the API package.
      Unverified
      646d0d90
    • shall0pass's avatar
      Priorities for goals (#961) · 66f7336b
      shall0pass authored
      This attempts to add priorities for goal templates and addresses most of
      https://github.com/actualbudget/actual/issues/959
      
      .
      
      I couldn't find a good way to preserve both "Apply" and "Overwrite"
      operations, so this PR does away with the current "Apply" action
      behavior. Every box with a budgeted value will be overwritten if a
      template goal is present.
      
      The added syntax to define priorities is as follows:
      #template    -- priority 0, highest priority
      #template-1  --priority 1, 2nd highest priority
      #template-2 --priority 2, 3rd highest priority
      #template-N --priority N, as many as you'd like.
      
      ~~Leaving as a draft as this may not be the preferred implementation but
      I wanted others to be able to try it with netlify.~~
      
      ---------
      
      Co-authored-by: default avatarCaleb Young <cwy@rincon.com>
      Unverified
      66f7336b
  15. May 01, 2023
  16. Apr 30, 2023
  17. Apr 29, 2023
  18. Apr 23, 2023
  19. Apr 22, 2023
    • Davis Silverman's avatar
      Add experimental new OFX importer (#921) · a1d321d6
      Davis Silverman authored
      Hi there, 
      
      I try to tackle #798 here. It was suggested to throw this behind a
      feature flag, so here it is!
      
      this does its best to import the problem file in #767. 
      
      I am working on this because it would make my work on #918 easier :)
      
      Feel free to set the feature flag to true and try the new importer. The
      date parser is not as sophisticated as the one in `node-libofx`, but I
      tried 3 different OFX files, one from my bank, one from the mocks, and
      one from #767. They all seem to work well enough on that front, but this
      is definitely the weak point of the new implementation.
      
      Let me know what you think!
      Unverified
      a1d321d6
    • shall0pass's avatar
      [Feature] Initial concept for adding percentage based goals (#858) · 3ceb2d92
      shall0pass authored
      This is an initial concept for adding percent based goal targets.
      
      This version works by using a string in the form of: 
      #template 10% of Income <- Income is an income category name. Only
      income category names will work here currently.
      or
      #template 10% of all income<- 'all income' is a keyword in this context
      and will base the calculation on the total income for the month.
      
      Some of the nicer touches like Jed's polite notification that the syntax
      isn't correct is not implemented here yet.
      Unverified
      3ceb2d92
    • shall0pass's avatar
      Change method of calculating 'by' matches to use averaging (#879) · 0bcf6ea6
      shall0pass authored
      I've changed the method of calculating the budgeted amount. There may be
      a more efficient way of writing the loop, so I'm looking forward to the
      review.
      
      This change implements the mathematics of
      (Target1+Target2+TargetN-Last_months_category_balance) / (MonthsRemaing1
      + MonthsRemaining2 + MonthsRemaingN) * N. This is an averaged approach
      for multiple templates in the same category. It will appear to
      overbudget or underbudget some months compared to multiple single
      targets in different categories, yet there should always be enough saved
      in the category to satisfy the target due.
      
      Setting a target, it's assumed that money will be spent in the
      appropriate month, When a target reaches maturity, the money in the
      category associated with that target should be spent or moved so the
      remaining targets continue to be funded. I don't see an easy way of
      fixing that, but I hope this change will be of some help.
      
      Current method:
      Notice how the Bills (flexible) category reduces each month, resulting
      in larger budgeted amounts later in the goal cycle.
      
      
      ![Templates-now](https://user-images.githubusercontent.com/20625555/230964939-d20ca72b-1055-471a-9044-7cd640f19875.gif)
      
      Proposed method:
      **Note: The fact that the initial fill in this example equals the
      expected fill is a coincidence based on the template values I chose. The
      initial fills can be different from expected fill.
      
      
      ![Templates-proposed](https://user-images.githubusercontent.com/20625555/230965265-669f996c-3112-437b-ab83-9715ea5dfc7f.gif)
      Unverified
      0bcf6ea6
  20. Apr 16, 2023
  21. Apr 13, 2023
  22. Apr 12, 2023
  23. Apr 10, 2023
    • Alberto Gasparin's avatar
      Convert commonjs to esm (#877) · cd00da76
      Alberto Gasparin authored
      This PR converts everything (aside from electron) from CommonJS to ESM.
      It is needed to reduce the changes that will happen during the migration
      to Typescript (as TS does not play nice with CJS).
      
      Basically:
      - rewrite `require()` to `import`
      - rewrite `module.exports` to `exports`
      - introduce `ts-node` to run importers so we can convert them to TS too
      
      Lastly, sorry for this larg-ish PR, not my preference but when I tried
      to reduce its scope, I would end up with mixed commons/esm that was even
      more tricky to handle.
      Unverified
      cd00da76
  24. Apr 07, 2023
    • Jakub Kuczys's avatar
      Use Unicode-aware implementations of LOWER() and UPPER() in SQL queries (#865) · 835c1a54
      Jakub Kuczys authored
      Fixes #840 by creating application-defined SQL functions
      (https://www.sqlite.org/appfunc.html) for Unicode-aware implementations
      of `LOWER()` and `UPPER()`. This uses
      `String.prototype.toLower/UpperCase()` JS method.
      
      I initially wanted to just redefine `LOWER()` and `UPPER()` but due to
      [sql.js not supporting the definition of deterministic
      functions](https://github.com/sql-js/sql.js/issues/551), I had to just
      define them as separate functions and use that in the appropriate
      places. It's probably better like that anyway...
      Unverified
      835c1a54
    • shall0pass's avatar
      Allow goal template 'by' matches to compound (#860) · adf205db
      shall0pass authored
      I believe this change allows for having multiple 'by' rules in the same
      category. It seems to be working well for my purposes, but I would
      appreciate further testing to assure there aren't regressions.
      
      Example:
      
      #template 300 by 2023-06
      #template 3000 by 2023-08
      
      Before this PR, having these two lines in the notes would only budget
      funds for the earliest of the two strings and ignore the 3000 funding
      target. With this PR, the sum of the two funding targets will be
      respected.
      Unverified
      adf205db
  25. Apr 06, 2023
  26. Apr 03, 2023
    • Alberto Gasparin's avatar
      Convert loot-core to TS p1 (#841) · 79ad04dd
      Alberto Gasparin authored
      Part 1 of the conversion. Mostly renaming js to ts and making sure
      things make still sense. Added also handy TS ESLint rules.
      
      In order to support the various .web/.electron/... I ended up adopting
      `index.d.ts` as pattern to share type definition. Let me know if that
      makes sense for you too. Right now the function type definition is
      duplicated, but the solution will be importing from `index.d.ts` and
      using `const fn: FnDef = () => ...` that way we can keep all variants in
      sync from a single type file.
      
      Such rewrite however is better done in another PR otherwise we risk
      confusing git and loosing history (rename + too many changes). Another
      thing that might do in the next PR is convert all files to ESModules, as
      things get confusing between CJS exports, ESM default/named and TS adds
      extra complains.
      Unverified
      79ad04dd
Loading