El subtotal de cada línea se calcula automáticamente. Los totales aparecen abajo.
Este es el código de Apps Script que ya está desplegado para esta app. Se incluye solo como referencia por si necesitas redespliegar.
const FOLDER_ID = '12omvUXeSenU2lZntAZ3kt9R61Sc37SeM';
function doPost(e) {
try {
const data = JSON.parse(e.postData.contents);
const folder = DriveApp.getFolderById(FOLDER_ID);
const blob = Utilities.newBlob(
Utilities.base64Decode(data.pdfBase64),
'application/pdf',
data.filename
);
folder.createFile(blob);
const props = PropertiesService.getScriptProperties();
let counter = parseInt(props.getProperty('counter') || '2499') + 1;
props.setProperty('counter', String(counter));
return ContentService.createTextOutput(
JSON.stringify({ok: true, number: counter, savedAs: data.filename})
).setMimeType(ContentService.MimeType.JSON);
} catch (err) {
return ContentService.createTextOutput(
JSON.stringify({ok: false, error: err.toString()})
).setMimeType(ContentService.MimeType.JSON);
}
}
function doGet(e) {
const props = PropertiesService.getScriptProperties();
const counter = parseInt(props.getProperty('counter') || '2499') + 1;
return ContentService.createTextOutput(
JSON.stringify({nextNumber: counter})
).setMimeType(ContentService.MimeType.JSON);
}
function setInitialCounter() {
PropertiesService.getScriptProperties().setProperty('counter', '2499');
Logger.log('Contador establecido en 2499 (próxima cotización: CTGM-2500)');
}