Cykliczne kontrakty JDG — automatyczne wystawianie faktur miesięcznych, oznaczanie płatności, import CSV z banku. Użyj gdy user pyta "faktury automatyczne", "kontrakt cykliczny", "auto-fakturowanie", "subskrypcja klienta", "powtarzające się faktury", "oznacz jako zapłacone", "import wyciągu", "CSV bank", "które faktury nie zostały zapłacone".
# Uruchom na dziś (z crona lub ręcznie)
python3 skills/contracts/scripts/run_contracts.py
# Symulacja na konkretny dzień
python3 skills/contracts/scripts/run_contracts.py --date 2026-04-30
python3 skills/contracts/scripts/mark_paid.py "A1/04/2026"
python3 skills/contracts/scripts/mark_paid.py "A1/04/2026" --date 2026-04-25
# Podgląd dopasowań (bez zapisu)
python3 skills/contracts/scripts/import_bank_csv.py wyciag_kwiecien.csv
# Automatyczne oznaczenie zapłaconych po dopasowaniu
python3 skills/contracts/scripts/import_bank_csv.py wyciag_kwiecien.csv --auto-mark
Obsługiwane formaty CSV:
#Data operacji;Opis operacji;...;Kwota;Walutadate/data, amount/kwota, description/opisfrom jdg_ksiegowy.registry.db import ContractRecord, save_contract, init_db
import uuid
init_db()
save_contract(ContractRecord(
id=str(uuid.uuid4()),
buyer_name="Firma XYZ",
buyer_nip="5260250274",
buyer_address="ul. Przykładowa 1, 00-001 Warszawa",
buyer_email="[email protected]",
description="Obsługa IT — miesięczna",
net_amount=2000,
vat_rate=23,
cycle="monthly",
day_of_month=-1, # -1 = ostatni dzień roboczy
))
| Pole | Opis |
|---|---|
cycle | monthly (jedyne obsługiwane) |
day_of_month | -1 = ostatni dzień roboczy, 1-28 = konkretny dzień |
auto_send_ksef | Oznaczenie (wysyłkę KSeF wywołujesz osobno skill ksef) |
auto_send_email | Oznaczenie (email wysyłasz osobno skill invoice-send) |
0 7 * * * cd /opt/jdg && python3 skills/contracts/scripts/run_contracts.py >> logs/contracts.log 2>&1