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  }