github.com/schmorrison/Zoho@v1.1.4/expense/expense_reports.go (about) 1 package expense 2 3 import ( 4 "fmt" 5 6 zoho "github.com/schmorrison/Zoho" 7 ) 8 9 // GetExpenseReports will return a list of all submitted expense reports as specified by 10 // https://www.zoho.com/expense/api/v1/#Expense_Reports_List_of_all_expense_reports 11 func (c *API) GetExpenseReports( 12 request interface{}, 13 organizationId string, 14 params map[string]zoho.Parameter, 15 ) (data ExpenseReportResponse, err error) { 16 endpoint := zoho.Endpoint{ 17 Name: ExpenseReportModule, 18 URL: fmt.Sprintf(ExpenseAPIEndpoint+"%s", ExpenseReportModule), 19 Method: zoho.HTTPGet, 20 ResponseData: &ExpenseReportResponse{}, 21 URLParameters: map[string]zoho.Parameter{ 22 "filter_by": "", 23 }, 24 Headers: map[string]string{ 25 ExpenseAPIEndpointHeader: organizationId, 26 }, 27 } 28 29 for k, v := range params { 30 endpoint.URLParameters[k] = v 31 } 32 33 err = c.Zoho.HTTPRequest(&endpoint) 34 if err != nil { 35 return ExpenseReportResponse{}, fmt.Errorf("Failed to retrieve expense reports: %s", err) 36 } 37 38 if v, ok := endpoint.ResponseData.(*ExpenseReportResponse); ok { 39 return *v, nil 40 } 41 return ExpenseReportResponse{}, fmt.Errorf("Data retrieved was not 'ExpenseReportResponse'") 42 } 43 44 // ExpenseReportResponse is the data returned by GetExpenseReports 45 type ExpenseReportResponse struct { 46 Code int `json:"code"` 47 ExpenseReports []struct { 48 ApprovedDate string `json:"approved_date"` 49 ApproverEmail string `json:"approver_email"` 50 ApproverID string `json:"approver_id"` 51 ApproverName string `json:"approver_name"` 52 CommentsCount int `json:"comments_count"` 53 CreatedByID string `json:"created_by_id"` 54 CreatedByName string `json:"created_by_name"` 55 CreatedTime string `json:"created_time"` 56 CurrencyCode string `json:"currency_code"` 57 CurrencyID string `json:"currency_id"` 58 CustomFields []struct { 59 CustomfieldID string `json:"customfield_id"` 60 Label string `json:"label"` 61 Value string `json:"value"` 62 } `json:"custom_fields"` 63 CustomerID string `json:"customer_id"` 64 CustomerName string `json:"customer_name"` 65 Description string `json:"description"` 66 DueDate string `json:"due_date"` 67 DueDays string `json:"due_days"` 68 EndDate string `json:"end_date"` 69 IsArchived bool `json:"is_archived"` 70 LastModifiedTime string `json:"last_modified_time"` 71 LastSubmittedDate string `json:"last_submitted_date"` 72 NonReimbursableTotal float64 `json:"non_reimbursable_total"` 73 PolicyID string `json:"policy_id"` 74 PolicyName string `json:"policy_name"` 75 PolicyViolated bool `json:"policy_violated"` 76 ProjectID string `json:"project_id"` 77 ProjectName string `json:"project_name"` 78 ReimbursableTotal float64 `json:"reimbursable_total"` 79 ReimbursementDate string `json:"reimbursement_date"` 80 ReportID string `json:"report_id"` 81 ReportName string `json:"report_name"` 82 ReportNumber string `json:"report_number"` 83 StartDate string `json:"start_date"` 84 Status string `json:"status"` 85 SubmittedBy string `json:"submitted_by"` 86 SubmittedDate string `json:"submitted_date"` 87 SubmittedToEmail string `json:"submitted_to_email"` 88 SubmittedToID string `json:"submitted_to_id"` 89 SubmittedToName string `json:"submitted_to_name"` 90 SubmitterEmail string `json:"submitter_email"` 91 SubmitterName string `json:"submitter_name"` 92 Total float64 `json:"total"` 93 UncategorizedExpenseCount float64 `json:"uncategorized_expense_count"` 94 } `json:"expense_reports"` 95 Message string `json:"message"` 96 }