Revisa los cálculos con Google Sheets

Esta página cubre la revisión en hoja de cálculo del cálculo de un modelo: exportarlo a Google Sheets, comprobar cómo se llega a cada total con fórmulas en vivo y traer de vuelta sus ediciones revisadas como entradas de presentación tipadas. La descarga devuelve esas ediciones sin persistirlas. Este flujo sirve para revisar los valores calculados una vez que tu perfil y tus movimientos están listos. No es una herramienta de importación de extractos bancarios ni de edición masiva.

Google Sheets es la superficie de revisión. El código también contiene un serializador .xlsx sin conexión, pero la superficie de comandos de operador actual no lo expone. Usa Google Sheets cuando quieras revisar y ajustar.

Los comandos de configuración local de esta página (estado, vinculación de carpeta, cierre de sesión) y las comprobaciones de preparación del ledger se ejecutan en vivo en el momento de la compilación. Los comandos que acceden a Google Drive y Sheets se ejecutan contra tu propia cuenta autorizada en lugar del entorno de pruebas de la documentación, por lo que se muestran como marcos ilustrativos.

Antes de empezar

Necesita:

Cadrumo crea su carpeta cadrumo-vault/ dentro de esa carpeta de Drive. No usa una carpeta aeat-vault/ más antigua; exporta un libro nuevo antes de traer ediciones a Cadrumo.

Configura el acceso a Google

Registra el cliente OAuth de escritorio para el perfil activo y ejecuta el flujo de consentimiento. Ambos acceden a Google, así que aquí son ilustrativos:

1Register the Desktop OAuth client for the active profile.
aeat config google register --client-json ./client_secret.json
aeat config google register --client-json ./client_secret.json
2Run the Google consent flow.
aeat config google login
aeat config google login

Comprueba el estado de Google y establece la carpeta de Drive donde Cadrumo creará las hojas de cálculo. Estos son comandos de configuración local, así que aquí se ejecutan. En un perfil sin configurar, el estado muestra «no conectado», y la carpeta que establece se lee de vuelta literalmente:

1Check the Google connection status for the active profile.
aeat --format json config google status
aeat --format json config google status
{
  "active_profile": "docs-sequence-sandbox",
  "command": "config.google.status",
  "notices": [],
  "result": {
    "account_email": null,
    "client_id": null,
    "client_registered": false,
    "granted_scopes": [],
    "issued_at": null,
    "last_refresh_at": null,
    "operation": "config.google.status",
    "profile": "<profile-id>",
    "reauth_required": null,
    "session_present": false
  },
  "schema_version": "2",
  "status": "success"
}
2Set the Drive folder where Cadrumo will create spreadsheets.
aeat config google folder set docs-folder-123
aeat config google folder set docs-folder-123
operation	config.google.folder.set
profile	<profile-id>
root_folder_id	docs-folder-123
3Confirm the folder binding.
aeat --format json config google folder view
aeat --format json config google folder view
{
  "active_profile": "docs-sequence-sandbox",
  "command": "config.google.folder.view",
  "notices": [],
  "result": {
    "configured": true,
    "operation": "config.google.folder.view",
    "profile": "<profile-id>",
    "root_folder_id": "docs-folder-123"
  },
  "schema_version": "2",
  "status": "success"
}

Confirm the Drive folder binding reads back the value you set.

Prueba la conexión una vez registrado el cliente OAuth. La prueba accede a Google, así que aquí es ilustrativa:

1Probe the Google connection.
aeat config google probe
aeat config google probe

La integración con Google está delimitada por el perfil. Si cambia de perfil, comprueba de nuevo el estado de Google y la vinculación de la carpeta.

Exporta un libro de cálculo

Exporta la superficie de cálculo del registro para un modelo, un año y un periodo. La exportación crea un libro de Google Sheets dentro del área cadrumo-vault/ configurada en Drive:

1Export the calculation surface for one modelo, year, and period.
aeat app modelo spreadsheet push --modelo 303 --year 2026 --period 1T
aeat app modelo spreadsheet push --modelo 303 --year 2026 --period 1T

Es una superficie de revisión de cálculos, no una exportación de extractos bancarios. Usa aeat app ledger export cuando necesites una instantánea en CSV, JSONL o XLSX de las filas del ledger.

Usa --prefill-relations solo cuando quieras que la hoja de cálculo incluya valores arrastrados de presentaciones relacionadas, como resúmenes anuales o arrastres del trimestre anterior.

Trae de vuelta sus ediciones

Después de revisar o editar el libro, trae de vuelta las ediciones tipadas desde la hoja. Añade --assemble-observations cuando quieras que la salida del comando incluya los datos editados a nivel de fila ensamblados como observaciones estructuradas. El comando no persiste esas observaciones:

1Pull typed edits back from the reviewed spreadsheet.
aeat app modelo spreadsheet pull --modelo 303 --year 2026 --period 1T --spreadsheet-id \
  <spreadsheet-id>
aeat app modelo spreadsheet pull --modelo 303 --year 2026 --period 1T --spreadsheet-id `
  <spreadsheet-id>

El comando de descarga comprueba que la hoja de cálculo pertenece al perfil actual y coincide con el periodo de presentación esperado. Si se niega, vuelve a exportar y reintente desde la nueva hoja de cálculo.

Calcula los valores de las casillas desde la hoja

Ejecuta compute cuando quieras que Cadrumo calcule los valores de las casillas a partir de las ediciones de la hoja. Toma las celdas editadas por el operador, ejecuta el motor de cálculo sobre ellas y muestra el resultado. No persiste nada:

1Compute casilla values from the operator-edited cells.
aeat app modelo spreadsheet calculate --modelo 303 --year 2026 --period 1T \
  --spreadsheet-id <spreadsheet-id>
aeat app modelo spreadsheet calculate --modelo 303 --year 2026 --period 1T `
  --spreadsheet-id <spreadsheet-id>

El comando compute comprueba que la hoja de cálculo coincide con el periodo de presentación esperado. Si se niega, vuelve a exportar y reintente desde la nueva hoja de cálculo.

Comprueba el cálculo de la hoja de cálculo

Ejecuta el comando de verificación de las calc-sheets para el mismo modelo, año y periodo. Si tiene un JSON de escenario con entradas del operador y salidas esperadas de la Agencia Estatal de Administración Tributaria (AEAT), pásalo explícitamente con --scenario:

1Verify the spreadsheet calculation for the modelo, year, and period.
aeat app modelo spreadsheet verify --modelo 303 --year 2026 --period 1T
aeat app modelo spreadsheet verify --modelo 303 --year 2026 --period 1T
2Verify against an explicit scenario JSON of inputs and expected outputs.
aeat app modelo spreadsheet verify --modelo 303 --year 2026 --period 1T --scenario \
  ./scenario.json
aeat app modelo spreadsheet verify --modelo 303 --year 2026 --period 1T --scenario `
  ./scenario.json

La verificación compara las superficies de cálculo implementadas por la aplicación. No presenta ninguna declaración ante la AEAT.

Respalda tus registros cifrados en Drive

Conserva una copia fuera de la máquina de tus registros cifrados replicándolos en la carpeta de Drive configurada. Previsualiza primero con --dry-run; informa de qué se subiría por cada área de almacenamiento sin cambiar nada. Acota un envío grande con --namespace o --limit:

1Preview the encrypted backup to Drive without uploading.
aeat config profile archive push --dry-run
aeat config profile archive push --dry-run
2Mirror the encrypted records to the Drive folder.
aeat config profile archive push
aeat config profile archive push

Solo se sube el texto cifrado. Tus registros salen de la máquina exactamente como están cifrados en disco, y la clave maestra nunca sale de su ordenador, así que la copia de Drive es ilegible sin ella. La réplica es unidireccional: Cadrumo escribe la copia y nunca lee Drive de vuelta como fuente de verdad para tus registros.

Cierra la sesión de Google

Borra la sesión de Google del perfil activo. El cierre de sesión es un comando local, así que aquí se ejecuta. Elimina el token de sesión guardado y sus metadatos. El cliente OAuth registrado se conserva a propósito, de modo que un aeat config google login posterior pueda iniciar sesión de nuevo sin volver a importar el JSON de la Consola de Cloud:

1Clear the Google session for the active profile.
aeat --format json config google logout
aeat --format json config google logout
{
  "active_profile": "docs-sequence-sandbox",
  "command": "config.google.logout",
  "notices": [],
  "result": {
    "client_preserved": true,
    "metadata_removed": false,
    "operation": "config.google.logout",
    "profile": "<profile-id>",
    "token_removed": false
  },
  "schema_version": "2",
  "status": "success"
}

Confirm the Google session clears for the active profile.

Dónde encaja esto

Usa esto después de la revisión y la clasificación de los movimientos. Confirma que el periodo está listo antes de fiarse del libro de cálculo:

1Run the period preflight.
aeat app ledger preflight --year 2026 --period 1T
aeat app ledger preflight --year 2026 --period 1T
bucket	<profile-id>
period	2026 1T
checked	2
issues	2
ready	false
issue	71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518	missing_business_classification	business classification 'NOT_YET_PROCESSED' is not ready for modelo calculation
issue	e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d	missing_business_classification	business classification 'NOT_YET_PROCESSED' is not ready for modelo calculation
2Read the overall ledger state for the period.
aeat --format json app ledger status --year 2026 --period 1T
aeat --format json app ledger status --year 2026 --period 1T
{
  "active_profile": "docs-sequence-sandbox",
  "command": "ledger.status",
  "notices": [],
  "result": {
    "active_count": 2,
    "archived_count": 0,
    "bucket_id": "<bucket-id>",
    "business_expense_total": "0",
    "business_income_total": "0",
    "business_net_total": "0",
    "checked_transaction_count": 2,
    "pending_review_count": 2,
    "period": {
      "code": "1T",
      "filing_year": 2026
    },
    "readiness_issue_count": 2,
    "readiness_issues": [
      {
        "business_classification": "NOT_YET_PROCESSED",
        "category_id": null,
        "detail": "business classification 'NOT_YET_PROCESSED' is not ready for modelo calculation",
        "iva_amount": null,
        "iva_rate": null,
        "reason": "missing_business_classification",
        "taxable_base": null,
        "transaction_id": "71a5db2bb891df295bee72544c40497d24d5c8cfc7edab745ce7339dcf8d6518",
        "transaction_present": true
      },
      {
        "business_classification": "NOT_YET_PROCESSED",
        "category_id": null,
        "detail": "business classification 'NOT_YET_PROCESSED' is not ready for modelo calculation",
        "iva_amount": null,
        "iva_rate": null,
        "reason": "missing_business_classification",
        "taxable_base": null,
        "transaction_id": "e3eeac5e306efe4e82a72896e92e7c236245ec85348834b2c10b120c67fe087d",
        "transaction_present": true
      }
    ],
    "ready": false,
    "reviewed_count": 0,
    "skipped_count": 0,
    "split_count": 0,
    "stale_filings": [],
    "stashed_count": 0,
    "total_count": 2,
    "unconverted_currency_count": 0
  },
  "schema_version": "2",
  "status": "success"
}

Confirm the period's readiness before relying on the workbook.

Si al ledger aún le faltan categorías, campos de IVA, moneda o referencias de proporcionalidad, termina esos en Clasifica los movimientos antes de fiarse del libro de cálculo.

Para las entradas manuales a nivel de casilla, los bindings, las compensaciones y las revisiones, usa Revisa y aporta las entradas de cálculo.

Pasos siguientes