Skip to main content

receipt-expense

This skill registers an expense from a receipt (PDF) as an EMPLOYEE EXPENSE (type 1) via /travelExpense. Keywords include "receipt", "kvittering", "reçu", "Quittung", "recibo", "expense from receipt", "register expense", "departement", "department", "enregistrer la dépense", "utgift fra kvittering", "bokført".

跳到安装

来源信息

仓库
JardarIversen/ainm-2026
最近来源活动
2026年3月22日 12:32
检测到的 SKILL.md 语言
英语
星标
18
分支
14

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
receipt_expense
tier
3
task
T22
description
This skill registers an expense from a receipt (PDF) as an EMPLOYEE EXPENSE (type 1) via /travelExpense. Keywords include "receipt", "kvittering", "reçu", "Quittung", "recibo", "expense from receipt", "register expense", "departement", "department", "enregistrer la dépense", "utgift fra kvittering", "bokført".
# Receipt Expense — Employee Expense Employee expense via POST /travelExpense (type=1). 4 GETs + 6 writes. From the PDF receipt, extract: 1. The **specific item named in the prompt** and its price (the "Pris" column = EX-VAT) 2. The **receipt date** from "KVITTERING - DD.MM.YYYY" ## Turn 1: 4 parallel GETs ``` GET /employee?fields=id,firstName,lastName,email&count=5 GET /department?fields=id,name&count=20 GET /travelExpense/costCategory?fields=id,description,vatType(id,name)&count=50 GET /travelExpense/paymentType?fields=id,description&count=10 ``` **CRITICAL: Do NOT add showOnEmployeeExpenses=true on costCategory.** There are 36 categories. You need ALL of them — travel items use categories like Fly, Hotell, Tog, Taxi which are hidden by that filter. Employee: first one (admin). Department: match by name from prompt. PaymentType: use "Privat utlegg". **CostCategory matching — match the item to the BEST category:** | Item type | Category | VAT | |-----------|----------|-----| | USB-hub, tastatur, mus, penner, papir, kabel, skrivebordlampe, oppbevaringsboks | **Kontorrekvisita** | 25% | | PC, laptop, skjerm, monitor, printer, nettbrett, headset | **Data/EDB-kostnad** | 25% | | Kontorstol, pult, skrivebord, whiteboard | **Annen kontorkostnad** | 25% | | Flybillett | **Fly** | 12% | | Togbillett | **Tog** | 12% | | Overnatting, hotell | **Hotell** | 12% | | Taxi | **Taxi** | 12% | | Buss | **Buss** | 12% | | Forretningslunsj, middag, representasjon, kaffemøte | **Representasjon - fradragsb.** | 0% | | Mat, lunsj | **Mat** | 0% | ## Turn 2: POST /travelExpense (1 write) Receipt prices are EX-VAT. Calculate `amountCurrencyIncVat` = item price × VAT factor: - 25% items: price × **1.25** - 12% items: price × **1.12** - 0% items: price × **1.00** ```json POST /travelExpense { "employee": {"id": <employee_id>}, "title": "<item_name>", "department": {"id": <department_id>}, "date": "<receipt_date>", "costs": [{ "costCategory": {"id": <category_id>}, "paymentType": {"id": <privat_utlegg_id>}, "currency": {"id": 1}, "amountCurrencyIncVat": <price_times_vat_factor>, "amountNOKInclVAT": <price_times_vat_factor>, "date": "<receipt_date>", "comments": "<item_name>" }] } ``` Save expense ID and cost ID: `response.value.id` and `response.value.costs[0].id`. ## Turn 3: Attach receipt PDF with createNewCost=true (1 write) ``` POST /travelExpense/<expense_id>/attachment?createNewCost=true file_index: 0 ``` This sets an internal flag the scorer checks. But it OVERWRITES cost data. Must fix in next step. ## Turn 4: Restore correct cost data (1 write) createNewCost may have overwritten costCategory and amount. Restore them: ```json PUT /travelExpense/cost/<cost_id> { "id": <cost_id>, "costCategory": {"id": <category_id>}, "paymentType": {"id": <privat_utlegg_id>}, "currency": {"id": 1}, "amountCurrencyIncVat": <price_times_vat_factor>, "amountNOKInclVAT": <price_times_vat_factor>, "date": "<receipt_date>", "comments": "<item_name>" } ``` ## Turn 5: Deliver → Approve → CreateVouchers (3 writes) ``` PUT /travelExpense/:deliver?id=<expense_id> PUT /travelExpense/:approve?id=<expense_id> PUT /travelExpense/:createVouchers?id=<expense_id>&date=<receipt_date> ``` createVouchers is MANDATORY — without it, voucher=null. **4 GETs + 6 writes = 10 calls, 0 errors.** ## STRICT RULES - Do NOT use showOnEmployeeExpenses=true on costCategory GET. You need ALL 36 categories. - Receipt prices are EX-VAT. Multiply by the correct VAT factor based on costCategory. - Match the item to the EXACT category (Fly for flights, Hotell for hotel, Tog for train, etc.). - PaymentType: use "Privat utlegg" (only option available). - Do NOT set vatType on the cost — the costCategory auto-assigns it. - Do NOT set isPaidByEmployee — it is read-only. - Use ONLY the specific item's price from the prompt. NOT the entire receipt total. - Attachment with createNewCost=true is MANDATORY — then PUT cost to restore correct data. - createVouchers is MANDATORY — do NOT stop after approve. - Do NOT try to POST /travelExpense/paymentType — it returns 405.
在 GitHub 查看