{"id":19299861,"url":"https://github.com/mleone10/artspeople","last_synced_at":"2026-05-16T02:47:19.394Z","repository":{"id":57562916,"uuid":"330245703","full_name":"mleone10/artspeople","owner":"mleone10","description":"Arts People Line Item Reconciliation Report parser library","archived":false,"fork":false,"pushed_at":"2021-01-22T04:54:30.000Z","size":27,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-24T01:26:01.298Z","etag":null,"topics":["arts-people","csv","line-item-reconciliation-report","parser","theater"],"latest_commit_sha":null,"homepage":"","language":"Go","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/mleone10.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-01-16T20:00:40.000Z","updated_at":"2021-01-22T04:54:32.000Z","dependencies_parsed_at":"2022-09-17T14:12:03.025Z","dependency_job_id":null,"html_url":"https://github.com/mleone10/artspeople","commit_stats":null,"previous_names":["mleone10/arts-people-reconciler"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mleone10/artspeople","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mleone10%2Fartspeople","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mleone10%2Fartspeople/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mleone10%2Fartspeople/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mleone10%2Fartspeople/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mleone10","download_url":"https://codeload.github.com/mleone10/artspeople/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mleone10%2Fartspeople/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284672648,"owners_count":27044736,"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","status":"online","status_checked_at":"2025-11-16T02:00:05.974Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["arts-people","csv","line-item-reconciliation-report","parser","theater"],"created_at":"2024-11-09T23:13:00.194Z","updated_at":"2025-11-16T07:01:41.757Z","avatar_url":"https://github.com/mleone10.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Arts People Line Item Reconciliation Report Parser\n\nThis package provides a parser for the [Arts People](https://www.arts-people.com/) Line Item Reconciliation report.\n\n```\npackage artspeople // import \"github.com/mleone10/artspeople\"\n\nPackage artspeople provides a parser for the Arts People Line Item\nReconciliation Report. To create an instantiated LineItemReconReport struct,\nprovide the text of the report's CSV representation into the\nNewLineItemReconReport() function.\n\nTYPES\n\ntype Currency int64\n    A Currency is a representation of money within Arts People. Since we're\n    parsing these from strings, we have some flexibility around how we represent\n    these values.\n\nfunc NewCurrencyFromString(s string) (Currency, error)\n    NewCurrencyFromString converts a string into a cents-only representation of\n    a USD monetary amount. This is apparently \"Martin Fowler's method\".\n\ntype LineItem struct {\n\tOrderID       int\n\tDateTime      time.Time\n\tItemName      string\n\tCustomer      string\n\tPrice         Currency\n\tFees          Currency\n\tPurchaseTotal Currency\n\tPaymentMethod string\n\tGCUsed        string // Maybe not used?\n\tUsername      string\n\t// Has unexported fields.\n}\n    A LineItem represents a single piece of an order, such as a ticket,\n    membership, donation, or payment.\n\nfunc NewLineItem(rawLine []string) (*LineItem, error)\n    NewLineItem accepts an array of strings read in from the original CSV and\n    returns an initiatlized LineItem.\n\nfunc (li *LineItem) IsPayment() bool\n    IsPayment returns true if the given LineItem pertains to a payment.\n\ntype LineItemReconReport struct {\n\tOrders map[int]*Order\n\t// Has unexported fields.\n}\n    A LineItemReconReport is a parsed and type-normalized version of the Line\n    Item Reconciliation Report downloaded from Arts People.\n\nfunc NewLineItemReconReport(reportCsv io.Reader) (*LineItemReconReport, error)\n    NewLineItemReconReport accepts an Arts People Line Item Reconciliation\n    Report as an io.Reader and returns a fully parsed and type-normalized\n    LineItemReconReport.\n\nfunc (l *LineItemReconReport) GetCustomers() []string\n    GetCustomers returns a slice of all unique customers who have an order in\n    the report.\n\nfunc (l *LineItemReconReport) GetItems() []string\n    GetItems returns a slice of all item names mentioned in the report.\n\ntype Order struct {\n\tLineItems []*LineItem\n}\n    An Order represents all details of a single interaction with a customer,\n    including all items purchased and the payment method. TODO: Consider\n    converting from a struct to a type alias ([]*LineItem)\n\nfunc NewOrder() *Order\n    NewOrder returns an instantiated Order.\n\nfunc (o *Order) AddLineItem(li *LineItem)\n    AddLineItem appends a LineItem to the given Order.\n\nfunc (o *Order) GetCustomer() string\n    GetCustomer returns the customer whose name is attached to the items in this\n    order. Sample data suggests that, while each LineItem has its own customer\n    field, they are all identical.\n\nfunc (o *Order) GetItems() []string\n    GetItems returns a slice of all items contained within the order, excluding\n    payments.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmleone10%2Fartspeople","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmleone10%2Fartspeople","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmleone10%2Fartspeople/lists"}