# Generate Invoice

### Input parameters

* TaskID

### How to call from app

HTTP request to: /generate-invoice/TASKID

### Logic (Plan)

1. Get all the user data for the assigned person and the task owner.&#x20;
2. ~~use the following api to generate a pdf:~~\
   [~~https://invoice-generator.com/developers#create-invoice-pdf~~](https://invoice-generator.com/developers#create-invoice-pdf)\
   ~~Example request:~~ [~~https://app.gitbook.com/o/Rxgn45SRgGRWbR4O7VXE/s/CfpEDb4ZyyJ4bmPlsblL/step-4-taskflow/generate-invoice~~](/api-documentation/step-4-taskflow/generate-invoice.md)
3. Save the pdf file in the to the storage (Under: "invoices/TaskId")
4. Get the URL from the the storage and add it to the task document (InvoiceUrl="")

### Implemented Logic

1. get task, developer & owner data
2. add invoiceSend: true to the task data
3. create invoice with this details (using invoice-generator.com format so it will be easier if decided to use their service later)

   ```typescript
   const invoice = {
       from: `${developerData.firstName} ${developerData.lastName}
       \n${developerStreetAddress}${developerLocation} 
       ${developerPostalCode}`,
       to: `${ownerData.firstName} ${ownerData.lastName}`,
       currency: "eur",
       number: `${taskId}`,
       items: [
         {
           name: `Task #${taskId}`,
           quantity: 1,
           unit_cost: updatedTaskData.price,
         },
       ],
       fields: {
         tax: "%",
       },
       tax: 0,
       projectId: projectDoc.id,
       projectName: projectData.projectName,
       taskId: taskId,
       taskName: updatedTaskData.taskName,
       status: "open",
       updatedAt: updatedTaskData.updatedAt,
       developerEmail: updatedTaskData.assignToEmail,
       taskCreator: updatedTaskData.taskCreator,
     };
   ```
4. save invoice to "invoices/TaskId"


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.tasksource.io/api-documentation/step-4-taskflow/generate-invoice.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
