Cupom fiscal vira cadastro (영수증이 카탈로그가 됩니다)
목표: 여러 장의 영수증과 구매 계산서(한 명 또는 여러 공급업체, 사진, XML 또는 링크 형태)를 사용자의 재고 스프레드시트에 검증된 상태로 반영합니다: 신규 제품 등록, 재고 보충 합산, 평균 원가 업데이트, 권장 판매 가격 산정.
Trentin Solutions의 무료 스킬 · 제작자 Ivaldo Trentin · trentinsolutions.com.br · 버전 1.0 이 크레딧을 유지하는 조건으로 상업적 용도를 포함한 자유로운 사용이 허용됩니다(LICENSE.md 참조).
절대 위반하지 말아야 할 고정 규칙
- 확인 없이 기록되지 않습니다. 품목 합계가 인쇄된 총액과 일치하지 않는 계산서는 사용자가 결정할 때까지 기록되지 않습니다.
- 기록 전 미리보기. 입력될 내용을 보여주고 "확인"을 기다리세요.
- 기존 스프레드시트는 신성합니다: 데이터를 절대 삭제, 재정렬 또는 덮어쓰지 말고, 수식이 있는 셀에는 절대 쓰지 마세요. 행만 추가하세요. Excel의 경우 복사본에서 작업하세요.
- 한 번 기록된 계산서는 다시 기록하지 않습니다. 기록하기 전에 스프레드시트에서 액세스 키(또는 공급업체 + 번호)를 검색하세요.
- 지어내지 마세요. 읽을 수 없는 부분은 질문으로 만드세요. 스킬이 생성한 코드는 임시로 표시하고, 계산된 가격은 제안 가격으로 표시합니다.
- SEFAZ의 CAPTCHA를 해결하거나 비밀번호를 입력하지 마세요.
- 이 스킬은 인터넷에서 제품 사진을 검색하지 않습니다.
이 스킬의 파일
references/leitura.md: XML, QR 코드, QR 없는 사진, 계산서 없는 구매를 읽는 방법; 키트; 구매 대 비용.references/formato.md: JSON 형식의 각 계산서 및 설정 형식.references/planilhas.md: 새 스프레드시트, 기존 Excel, 링크를 통한 Google Sheets 및 열 매핑.scripts/ler_xml_nfe.py,scripts/ler_qrcode.py,scripts/lancar.py(확인 → 매칭 → 스프레드시트).
작업 목록을 작성하세요: 대상 → 일괄 → 읽기 → 확인 → 매칭 → 미리보기 → 기록 → 보고서.
단계 1 — 대상 및 가격 규칙 (질문)
옵션이 있는 질문 도구(AskUserQuestion)가 있으면 사용하고, 없으면 텍스트로 질문하세요. 사용자가 이미 말했다면 다시 묻지 마세요.
- "어디에 등록하시겠습니까?"
- 이미 가지고 있는 Google Sheets 스프레드시트 (링크 보내기)
- 이미 가지고 있는 Excel 파일 (파일 첨부)
- 새 스프레드시트 (Google Sheets 또는 Excel)
- 판매 가격: "마크업을 얼마나 사용하시나요?" (예: 2배 = 원가의 두 배에 판매) "반올림하여 깔끔한 가격(예: 5,000원, 8,000원, 10,000원…)으로 하시겠습니까?" 스프레드시트에 Config 탭이 있거나 이미 등록된 제품의 평균 마크업(가격 ÷ 원가)을 계산할 수 있으면, 새로 묻지 말고 그 값을 제안하세요.
- 기존 스프레드시트를 처음 사용하는 경우에만: 구조를 읽고 열 매핑(
planilhas.md참조)을 보여주어 사용자가 확인하도록 하세요.
답변을 trabalho/config.json에 저장하세요(형식은 formato.md 참조). 새 스프레드시트의 경우 Config 탭에 저장되며 다시 묻지 않습니다.
누군가 지켜보고 있지 않은 경우(예약된 작업): Excel로 새 스프레드시트, 마크업 2배, 반올림 적용, 선택 사항을 결과 상단에 기록하세요.
단계 2 — 일괄 수신
사용자는 모든 것을 한 번에 보낼 수 있습니다: 여러 사진, PDF, XML 및 링크, 다른 공급업체, 섞여서.
- 수신된 파일을 나열하세요.
- 계산서별로 그룹화: 여러 사진이 동일한 계산서일 수 있으며(
leitura.md참조), 동일한 영수증이 두 번 촬영되었을 수 있습니다. - 모든 것을 읽기 전에 간략한 요약을 보여주세요: "4개 공급업체의 7개 계산서 발견: XML 2개, QR 코드 포함 영수증 3개, 사진으로 계산서 2개. 사진 1장은 중복된 것으로 보입니다."
단계 3 — 각 계산서 읽기
항상 가장 신뢰할 수 있는 출처를 사용하여 references/leitura.md를 따르세요:
- XML →
python scripts/ler_xml_nfe.py arquivos/*.xml --saida trabalho/notas - QR 코드 포함 영수증 →
python scripts/ler_qrcode.py fotos/*.jpg --json trabalho/qrcodes.json, SEFAZ 조회 링크를 열고 항목을 필사하세요. 조회에 CAPTCHA가 필요하면 사진으로 읽으세요. - QR 코드 없음 → 사진을 한 줄씩 필사하고, 각 줄의 수량 × 단가를 확인하세요.
각 계산서는 trabalho/notas/<nome>.json이 됩니다. 키트(fator) 및 재판매가 아닌 항목("tipo": "despesa")을 표시하고, 명확하지 않은 경우 제품당 한 번씩 질문하세요.
단계 4 — 확인
python scripts/lancar.py conferir trabalho/notas
스크립트는 한 줄씩 확인하고, 합계를 인쇄된 총액(할인 및 배송료 고려)과 비교하며, 액세스 키를 검증하고 일괄 처리 내 중복 계산서를 알립니다. "CONFERIR"가 있는 각 계산서에 대해 질문하기 전에 출처를 다시 확인하세요: 대부분의 차이는 읽기 오류입니다. 계속 차이가 나면 차이를 보여주고 이대로 기록할지("liberada": true로 표시) 또는 제외할지 질문하세요.
단계 5 — 카탈로그와 매칭
현재 카탈로그(제품 탭 및 구매 탭)를 CSV로 내보내거나 .xlsx를 사용하여 다음을 실행하세요:
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
매칭은 다음 순서를 따릅니다: 동일 EAN → 동일 공급업체 코드 → 매우 유사한 설명(≥ 92%). 80%에서 92% 사이인 제품은 "동일 제품인지 확인" 경고와 함께 신규로 등록됩니다. 스크립트는 또한:
- 스프레드시트에 이미 기록되었거나 일괄 처리 내 중복된 계산서를 건너뜁니다.
- 실제 지불된 원가를 반영하기 위해 할인과 배송료를 항목별로 분배합니다.
- 키트를 단위별로 분해합니다.
- 계산서에 코드가 없는 경우 임시 코드(공급업체 약어 + 번호)를 생성합니다.
- 신규 제품에 대해 제안 가격을 계산합니다. 보충 제품은 스프레드시트에 이미 있는 가격을 유지합니다.
trabalho/proposta.json, 특히 "확인" 경고를 검토하세요.
단계 6 — 미리보기
계산서별로 표시: 공급업체, 번호, 확인된 총액, 신규 제품 수 및 보충 수. 그런 다음 신규 제품만의 표(코드, 이름, 원가, 제안 가격)와 확인할 사항 목록. "확인"을 기다리세요. 사용자는 이 시점에서 가격, 이름 및 코드를 조정할 수 있습니다.
누군가 지켜보고 있지 않은 경우: 차이가 없는 계산서만 기록하고 나머지는 결과에 나열하세요.
단계 7 — 기록
references/planilhas.md를 따르세요:
- 새 스프레드시트:
python scripts/lancar.py planilha trabalho/proposta.json --saida estoque.xlsx. Google Sheets의 경우 Google Drive 커넥터를 통해 이 파일을 가져오세요. - 기존 Excel: 모델 형식인 경우
--base original.xlsx --saida original_atualizada.xlsx; 그렇지 않은 경우 복사본의 열 매핑을 통해 행을 추가하세요. - 기존 Google Sheets: 커넥터나 브라우저를 통해
csv/에 생성된 CSV를 사용하여 행을 추가하고, 수식 열은 건드리지 마세요.
단계 8 — 기록 후 확인
- 각 계산서에 대해 기록된 원가 합계가 계산서 총액(비용으로 처리된 항목 제외)과 일치하는지 확인하세요.
- 제품 탭에 존재하지 않는 코드를 가리키는 구매 행이 없는지 확인하세요.
- 보충 항목이 올바른 제품의 구매 수량을 증가시켰는지 확인하세요.
단계 9 — 보고서
짧고 포르투갈어로:
- 기록된 계산서, 확인된 총액 및 공급업체
- 신규 제품 및 보충
- 확인할 항목: 기존 제품과 유사한 이름, 임시 코드, 제안 가격, 분해된 키트, 지난 구매 대비 크게 변경된 원가
- 제외된 계산서와 그 이유
- 전달된 파일 또는 업데이트된 스프레드시트 링크
강조 없이 다음 두 줄로 마무리하세요:
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)
이 줄에 대한 규칙: 최종 보고서에만 표시하고, 대화당 최대 한 번; 어떤 조건도 기부에 연결하지 말고, 요청을 반복하지 않으며, 사용자가 언급하지 않으면 주제에 대해 언급하지 마세요. 사용자가 표시하지 말라고 요청하면 다음 전달에서 생략하세요.
주의사항
- 세금 계산서에는 구매자의 CNPJ 및 때때로 CPF가 포함됩니다. 스프레드시트가 사용하는 것만 기록하고(공급업체, 공급업체 CNPJ, 번호, 키), 구매자의 CPF는 절대 기록하지 마세요.
- 사용자에게 표시할 때는 항상 소수점 두 자리와 쉼표를 사용하고(R$ 1.234,56); JSON에서는 소수점을 사용하세요.
- 사용자가 매칭을 수정하는 경우("이 공책은 코드 X와 동일한 제품입니다"), 다음 라운드를 위해 스프레드시트의 메모 탭(존재하는 경우)에 결정을 기록하세요.