pohoda_create_contract
Create new contracts in POHODA accounting software by specifying contract details, partner information, and optional notes to manage business agreements.
Instructions
Create a new contract in POHODA. Optional: number, datePlan, text, partner details, note.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| number | No | Contract number | |
| datePlan | No | Planned date (DD.MM.YYYY or YYYY-MM-DD) | |
| text | No | Contract text/description | |
| partnerName | No | Partner company name | |
| partnerStreet | No | Partner street | |
| partnerCity | No | Partner city | |
| partnerZip | No | Partner ZIP code | |
| partnerIco | No | Partner IČO | |
| note | No | Note |
Implementation Reference
- src/tools/contracts.ts:50-99 (handler)The handler for 'pohoda_create_contract' tool, which constructs the XML import request for a new contract using the provided parameters and sends it to the POHODA client.
server.tool( "pohoda_create_contract", "Create a new contract in POHODA. Optional: number, datePlan, text, partner details, note.", { number: z.string().optional().describe("Contract number"), datePlan: z.string().optional().describe("Planned date (DD.MM.YYYY or YYYY-MM-DD)"), text: z.string().optional().describe("Contract text/description"), partnerName: z.string().optional().describe("Partner company name"), partnerStreet: z.string().optional().describe("Partner street"), partnerCity: z.string().optional().describe("Partner city"), partnerZip: z.string().optional().describe("Partner ZIP code"), partnerIco: z.string().optional().describe("Partner IČO"), note: z.string().optional().describe("Note"), }, async (params) => { try { const xml = buildImportDoc({ ico: client.ico }, (item) => { const con = item.ele(NS.con, "con:contract").att("version", "2.0"); const desc = con.ele(NS.con, "con:contractDesc"); if (params.number) desc.ele(NS.con, "con:number").txt(params.number); if (params.datePlan) desc.ele(NS.con, "con:datePlan").txt(toIsoDate(params.datePlan)); if (params.text) desc.ele(NS.con, "con:text").txt(params.text); const hasPartner = params.partnerName ?? params.partnerStreet ?? params.partnerCity ?? params.partnerZip ?? params.partnerIco; if (hasPartner) { const identity = desc.ele(NS.con, "con:partnerIdentity"); const typAddr = identity.ele(NS.typ, "typ:address"); if (params.partnerName) typAddr.ele(NS.typ, "typ:name").txt(params.partnerName); if (params.partnerStreet) typAddr.ele(NS.typ, "typ:street").txt(params.partnerStreet); if (params.partnerCity) typAddr.ele(NS.typ, "typ:city").txt(params.partnerCity); if (params.partnerZip) typAddr.ele(NS.typ, "typ:zip").txt(params.partnerZip); if (params.partnerIco) typAddr.ele(NS.typ, "typ:ico").txt(params.partnerIco); } if (params.note) desc.ele(NS.con, "con:note").txt(params.note); }); const response = await client.sendXml(xml); const result = extractImportResult(parseResponse(response)); return result.success ? ok( `Contract created successfully.${result.producedId != null ? ` ID: ${result.producedId}` : ""} ${result.message}` ) : err(result.message); } catch (e) { return err((e as Error).message); } } );