{"id":19572350,"url":"https://github.com/linjunpop/riif","last_synced_at":"2025-11-11T18:29:01.239Z","repository":{"id":5707394,"uuid":"6918197","full_name":"linjunpop/riif","owner":"linjunpop","description":"🏦 A DSL to generate QuickBooks IIF file.","archived":false,"fork":false,"pushed_at":"2020-11-17T13:13:46.000Z","size":136,"stargazers_count":47,"open_issues_count":3,"forks_count":30,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-02T08:42:12.195Z","etag":null,"topics":["dsl","iif","quickbooks","rails","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/linjunpop.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"github":["linjunpop"],"patreon":"linjunpop"}},"created_at":"2012-11-29T09:18:28.000Z","updated_at":"2024-10-31T21:01:16.000Z","dependencies_parsed_at":"2022-07-15T23:17:50.789Z","dependency_job_id":null,"html_url":"https://github.com/linjunpop/riif","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linjunpop%2Friif","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linjunpop%2Friif/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linjunpop%2Friif/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linjunpop%2Friif/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linjunpop","download_url":"https://codeload.github.com/linjunpop/riif/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248054194,"owners_count":21039952,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dsl","iif","quickbooks","rails","ruby"],"created_at":"2024-11-11T06:26:01.055Z","updated_at":"2025-11-11T18:28:56.182Z","avatar_url":"https://github.com/linjunpop.png","language":"Ruby","readme":"# Riif\n\nA simple DSL to generate IIF file.\n\n[![Build Status](https://travis-ci.org/linjunpop/riif.svg?branch=master)](https://travis-ci.org/linjunpop/riif)\n[![Gem Version](https://badge.fury.io/rb/riif.svg)](http://badge.fury.io/rb/riif)\n[![Code Climate](https://codeclimate.com/github/linjunpop/riif.svg)](https://codeclimate.com/github/linjunpop/riif)\n[![Coverage Status](https://coveralls.io/repos/linjunpop/riif/badge.svg?branch=master)](https://coveralls.io/r/linjunpop/riif)\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n    gem 'riif'\n\nAnd then execute:\n\n    $ bundle\n\nOr install it yourself as:\n\n    $ gem install riif\n\n\n## Limitation\n\nYou have to use `klass` for `class` and `_1099` for `1099`\n\n## Usage\n\n### With Rails\n\nWith a custom template handler, it works with Rails.\n\n```ruby\n# invoices_controller.rb\n\nclass InvoicesController \u003c ApplicationController\n  def show\n    respond_to do |format|\n      format.iif { render iif: render_to_string, filename: 'batman'}\n      format.html\n    end\n  end\nend\n```\n\n```ruby\n# show.iif.riif\n\niif.trns do\n  row do\n    trnsid 123\n    trnstype 'INVOICE'\n    date '8/31/1988'\n    accnt 'Accounts Receivable'\n    name 'Customer'\n    amount 20\n    docnum invoice.id\n    clear 'N'\n    toprint 'N'\n    addr1 'Baker'\n    addr2 'Customer'\n  end\n\n  spl do\n    row do\n      splid '777'\n      trnstype 'INVOICE'\n      date '8/31/1988'\n      accnt 'Income Account'\n      amount '-20'\n      clear 'N'\n      qnty '-2'\n      price 10\n      invitem 'Sales Item'\n      taxable 'N'\n    end\n  end\n\n  spl do\n    row do\n      splid '888'\n    end\n  end\nend\n```\n\n### Without Rails\n\n```ruby\nRiif::IIF.new do\n  trns do\n    row do\n      trnsid 123\n      trnstype 'INVOICE'\n      date '8/31/1988'\n      accnt 'Accounts Receivable'\n      name 'Customer'\n      amount 20\n      docnum 1\n      clear 'N'\n      toprint 'N'\n      addr1 'Baker'\n      addr2 'Customer'\n    end\n\n    spl do\n      row do\n        splid '777'\n        trnstype 'INVOICE'\n        date '8/31/1988'\n        accnt 'Income Account'\n        amount '-20'\n        clear 'N'\n        qnty '-2'\n        price 10\n        invitem 'Sales Item'\n        taxable 'N'\n      end\n    end\n\n    spl do\n      row do\n        splid '888'\n      end\n    end\n  end\nend\n```\n\nResult:\n\n```\n!TRNS\tTRNSID\tTRNSTYPE\tDATE\tACCNT\tNAME\tCLASS\tAMOUNT\tDOCNUM\tMEMO\tCLEAR\tTOPRINT\tADDR1\tADDR2\tADDR3\tADDR4\tADDR5\tDUEDATE\tTERMS\tPAID\tSHIPDATE\n!SPL\tSPLID\tTRNSTYPE\tDATE\tACCNT\tNAME\tCLASS\tAMOUNT\tDOCNUM\tMEMO\tCLEAR\tQNTY\tPRICE\tINVITEM\tPAYMETH\tTAXABLE\tREIMBEXP\tEXTRA\n!ENDTRNS\nTRNS\t123\tINVOICE\t8/31/1988\tAccounts Receivable\tCustomer\t\t20\t1\t\tN\tN\tBaker\tCustomer\nSPL\t777\tINVOICE\t8/31/1988\tIncome Account\t\t\t-20\t\t\tN\t-2\t10\tSales Item\t\tN\nSPL\t888\nENDTRNS\n```\n\nIf you prefer, you can pass an argument along with your block:\n\n```ruby\nRiif::IIF.new do |riif|\n  riif.trns do |trns|\n    trns.row do |row|\n      row.trnsid 123\n      row.trnstype 'INVOICE'\n      row.date '8/31/1988'\n      row.accnt 'Accounts Receivable'\n      row.name 'Customer'\n    end\n  end\nend\n```\n\n## Editors\n\n### Vim\n\n```VimL\nau BufWinEnter,BufRead,BufNewFile *.riif set filetype=ruby\n```\n\n## Resources\n\n[Export or import Intuit Interchange Format (.IIF) files](https://quickbooks.intuit.com/community/Reports-and-accounting/Export-or-import-Intuit-Interchange-Format-IIF-files/m-p/203229)\n\n## Contributing\n\n1. Fork it\n2. Create your feature branch (`git checkout -b my-new-feature`)\n3. Commit your changes (`git commit -am 'Add some feature'`)\n4. Push to the branch (`git push origin my-new-feature`)\n5. Create new Pull Request\n\n## Contributors\n\n:beers:\n\nhttps://github.com/linjunpop/riif/graphs/contributors\n\n## Changes\n\nSee [CHANGELOG.md](CHANGELOG.md)\n","funding_links":["https://github.com/sponsors/linjunpop","https://patreon.com/linjunpop"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinjunpop%2Friif","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinjunpop%2Friif","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinjunpop%2Friif/lists"}