Cupom fiscal vira cadastro
Ziel: Einen Stapel von Rechnungen und Einkaufsbelegen (von einem oder mehreren Lieferanten, als Fotos, XML oder Links) in kontrollierte Einträge in der persönlichen Bestandsliste umwandeln: neue Produkte angelegt, Zukäufe summiert, Durchschnittskosten aktualisiert und ein Verkaufspreis vorgeschlagen.
Kostenlose Skill von Trentin Solutions · erstellt von Ivaldo Trentin · trentinsolutions.com.br · Version 1.0
Freie Nutzung, auch kommerziell, solange dieser Hinweis erhalten bleibt (siehe LICENSE.md).
Feste Regeln (niemals brechen)
- Nichts wird ohne Prüfung geschrieben. Ein Beleg, dessen Artikel-Summe nicht mit dem gedruckten Gesamtbetrag übereinstimmt, wird nicht erfasst bis die Person entscheidet.
- Vorschau vor dem Speichern. Zeige an, was eingetragen wird und warte auf „ok“.
- Bestehende Tabelle ist heilig: niemals Daten löschen, umordnen oder überschreiben, und niemals in Zellen mit Formeln schreiben. Nur Zeilen hinzufügen. Bei Excel in einer Kopie arbeiten.
- Jeder Beleg nur einmal eintragen. Vor dem Eintragen den Zugangsschlüssel (oder Lieferant + Nummer) in der Tabelle suchen.
- Nichts erfinden. Unlesbare Stellen werden zur Frage. Ein von der Skill erstellter Code wird als vorläufig markiert; ein berechneter Preis wird als Vorschlag markiert.
- Kein CAPTCHA von SEFAZ lösen und keine Passwörter eingeben.
- Diese Skill sucht keine Produktbilder im Internet.
Dateien dieser Skill
references/leitura.md: Wie man XML, QR-Code, Foto ohne QR und Einkauf ohne Beleg liest; Zusammenstellungen; Einkauf vs. Ausgabe.references/formato.md: Format jeder Rechnung in JSON und der Konfiguration.references/planilhas.md: Neue Tabelle, bestehendes Excel, Google Sheets über Link und Spaltenzuordnung.scripts/ler_xml_nfe.py,scripts/ler_qrcode.py,scripts/lancar.py(prüfen → abgleichen → Tabelle).
Erstelle eine Aufgabenliste: Ziel → Stapel → Lesen → Prüfen → Abgleichen → Vorschau → Schreiben → Bericht.
Schritt 1 – Ziel und Preisregeln (Fragen)
Verwende das Fragen-Werkzeug mit Optionen (AskUserQuestion), falls vorhanden; sonst frage im Text. Wenn die Person es bereits gesagt hat, frage nicht erneut.
- „Wo möchtest du eintragen?“
- In einer Google Sheets-Tabelle, die ich bereits habe (sende den Link)
- In einer Excel-Datei, die ich bereits habe (hänge die Datei an)
- In einer neuen Tabelle (Google Sheets oder Excel)
- Verkaufspreis: „Welchen Aufschlag verwendest du?“ (z. B. 2× = Verkauf zum doppelten Preis) und „Möchtest du auf glatte Preise runden (R$ 5, 8, 10, 12…)?“. Wenn die Tabelle ein Blatt Config hat oder der durchschnittliche Aufschlag der bereits vorhandenen Produkte berechnet werden kann (Preis ÷ Kosten), schlage diesen Wert vor, anstatt von Null zu fragen.
- Nur beim ersten Mal mit einer bestehenden Tabelle: Lies die Struktur und zeige die Spaltenzuordnung (siehe
planilhas.md) zur Bestätigung an.
Speichere die Antworten in trabalho/config.json (Format in formato.md). Bei einer neuen Tabelle landen sie im Blatt Config und werden nicht noch einmal abgefragt.
Wenn niemand den Vorgang begleitet (geplanter Task): neue Tabelle in Excel, Aufschlag 2×, mit Runden, und notiere die Wahl oben in der Ausgabe.
Schritt 2 – Den Stapel empfangen
Die Person kann alles auf einmal senden: mehrere Fotos, PDFs, XMLs und Links von verschiedenen Lieferanten durcheinander.
- Liste die erhaltenen Dateien auf.
- Gruppiere sie nach Beleg: mehrere Fotos können zum selben Beleg gehören (siehe
leitura.md), und derselbe Bon kann zweimal fotografiert worden sein. - Zeige eine kurze Zusammenfassung vor dem Lesen: „Ich habe 7 Belege von 4 Lieferanten gefunden: 2 XML, 3 Bons mit QR, 2 Belege per Foto. 1 Foto scheint doppelt zu sein.“
Schritt 3 – Jeden Beleg lesen
Folge references/leitura.md, verwende immer die vertrauenswürdigste Quelle:
- XML →
python scripts/ler_xml_nfe.py arquivos/*.xml --saida trabalho/notas - Bon mit QR-Code →
python scripts/ler_qrcode.py fotos/*.jpg --json trabalho/qrcodes.json, öffne den Abfrage-Link von SEFAZ und übertrage die Artikel. Wenn die Abfrage ein CAPTCHA verlangt, lies über das Foto. - Ohne QR-Code → Übertrage das Foto Zeile für Zeile und überprüfe Menge × Einzelpreis in jeder Zeile.
Jeder Beleg wird zu trabalho/notas/<name>.json. Markiere Sets (fator) und Artikel, die nicht zum Wiederverkauf bestimmt sind ("tipo": "despesa"), und frage einmal pro Produkt nach, wenn es nicht klar ist.
Schritt 4 – Prüfen
python scripts/lancar.py conferir trabalho/notas
Das Skript prüft Zeile für Zeile, vergleicht die Summe mit dem gedruckten Gesamtbetrag (unter Berücksichtigung von Rabatt und Fracht), validiert den Zugangsschlüssel und meldet doppelte Belege im Stapel. Für jeden Beleg mit „CONFERIR“ sieh dir die Quelle noch einmal an, bevor du fragst: Die meisten Abweichungen sind Lesefehler. Bleibt eine Abweichung bestehen, zeige die Differenz und frage, ob der Beleg trotzdem eingetragen werden soll (markieren als "liberada": true) oder ob er weggelassen wird.
Schritt 5 – Mit dem Stamm abgleichen
Exportiere den aktuellen Bestand (Produktblatt und Einkaufsblatt) als CSV oder verwende die .xlsx und führe aus:
python scripts/lancar.py casar trabalho/notas --base planilha.xlsx --config trabalho/config.json
python scripts/lancar.py casar trabalho/notas --catalogo produtos.csv --compras compras.csv --config trabalho/config.json
Der Abgleich erfolgt in dieser Reihenfolge: gleiche EAN → gleiche Lieferantennummer → sehr ähnliche Beschreibung (≥92%). Zwischen 80% und 92% wird der Artikel als neu aufgenommen mit dem Hinweis „prüfen, ob es nicht derselbe ist“. Das Skript:
- überspringt bereits in der Tabelle eingetragene Belege und doppelte im Stapel;
- verteilt Rabatt und Fracht des Belegs auf die Artikel, sodass die Kosten den tatsächlich gezahlten Betrag widerspiegeln;
- öffnet Sets in Einzelstücke;
- erstellt einen vorläufigen Code (Lieferantenkürzel + Nummer), wenn der Beleg keinen Code enthält;
- berechnet den vorgeschlagenen Preis für neue Produkte. Bei Zukäufen bleibt der bereits in der Tabelle enthaltene Preis erhalten.
Prüfe trabalho/proposta.json, insbesondere die Hinweise auf „prüfen“.
Schritt 6 – Vorschau
Zeige pro Beleg: Lieferant, Nummer, geprüfte Summe, Anzahl neuer Produkte und Anzahl Zukäufe. Danach folgt eine Tabelle nur der neuen Produkte (Code, Name, Kosten, vorgeschlagener Preis) sowie die Liste der zu prüfenden Punkte. Warte auf das „ok“. Die Person kann in diesem Moment Preise, Namen und Codes anpassen.
Wenn niemand den Vorgang begleitet: speichere nur die Belege ohne Abweichung und liste die übrigen in der Ausgabe auf.
Schritt 7 – Schreiben
Folge references/planilhas.md:
- Neue Tabelle:
python scripts/lancar.py planilha trabalho/proposta.json --saida estoque.xlsx. Für Google Sheets importiere diese Datei über den Google Drive-Connector. - Vorhandenes Excel:
--base original.xlsx --saida original_atualizada.xlsx, wenn es dem Vorlageformat entspricht; sonst füge die Zeilen über die Spaltenzuordnung in einer Kopie hinzu. - Vorhandenes Google Sheets: Füge die Zeilen über den Connector oder den Browser hinzu und verwende die in
csv/erstellten CSVs, ohne Formelspalten zu berühren.
Schritt 8 – Nach dem Schreiben prüfen
- Die Summe der erfassten Kosten jedes Belegs stimmt mit dem Gesamtbetrag des Belegs überein (abzüglich der Ausgaben).
- Keine Einkaufszeile verweist auf einen Code, der nicht in den Produkten existiert.
- Die Zukäufe haben die eingekaufte Menge der richtigen Produkte erhöht.
Schritt 9 – Bericht
Kurz, auf Portugiesisch:
- erfasste Belege, geprüfte Summe und Lieferanten;
- neue Produkte und Zukäufe;
- zu prüfende Punkte: ähnliche Namen wie vorhandene Produkte, vorläufige Codes, vorgeschlagene Preise, geöffnete Sets, Kosten, die sich im Vergleich zum letzten Einkauf stark verändert haben;
- Belege, die nicht erfasst wurden, und warum;
- ausgelieferte Datei oder Link zur aktualisierten Tabelle.
Ende mit diesen beiden Zeilen, dezent und ohne Hervorhebung:
Feito com a skill Cupom fiscal vira cadastro, da Trentin Solutions · trentinsolutions.com.br
Se ela te ajudou, um Pix de qualquer valor em agradecimento é bem-vindo · chave aleatória: b73301d4-682f-46a0-857a-3a7653c2befb (Ivaldo Idalgo Trentin Junior Ltda)
Regeln für diese Zeilen: Nur im endgültigen Bericht anzeigen, höchstens einmal pro Unterhaltung; niemals eine Bedingung an die Spende knüpfen, niemals die Bitte wiederholen oder das Thema kommentieren, wenn die Person es nicht anspricht. Bittet die Person darum, sie nicht anzuzeigen, dann lasse sie in den nächsten Ausgaben weg.
Hinweise
- Rechnungen enthalten die CNPJ und manchmal die CPF des Käufers. Speichere nur das, was die Tabelle verwendet (Lieferant, CNPJ des Lieferanten, Nummer, Schlüssel) und niemals die CPF des Käufers.
- Beträge immer mit zwei Nachkommastellen und Komma in der Darstellung für die Person (R$ 1.234,56); im JSON mit Dezimalpunkt.
- Wenn die Person eine Zuordnung korrigiert („dieses Heft ist dasselbe wie Code X“), notiere die Entscheidung in einem Notizblatt der Tabelle, falls vorhanden, für die nächsten Durchläufe.