Hacer una factura es uno de los elementos básicos de un negocio. Si tenemos un negocio pequeño donde toda nuestra información está en Google Drive es lógico que queramos hacer nuestra propia factura web con Google Apps Scripts.
Cada negocio tiene sus necesidades en cuanto a hacer una factura, así que yo no podré hacer mucho más que dejaros un código de Google Apps Script de base con un ejemplo para poder realiza tu factura web, via PDF.
La información de la factura se introducirá en un spreadsheet, no es algo definitivo, pero espero que os pueda servir de base para implementar vuestro propio sistema web para poder enviar o imprimir tu factura. Si queréis una referencia aquí tenéis el link para que le echéis un ojo: https://docs.google.com/spreadsheets/d/1Nzzac6lZBBiaTQvZ_AgpVo-9pCW41lgE4Fe3GhsWgiU/edit?usp=sharing
Si realmente queréis algo más complejo (o con un acabado más profesional) y no os aclaráis con el código, si queréis podéis contactar conmigo a nivel profesional via Fiverr . ( no soy caro :) )
Sin más os dejo con el código básico para hacer tu propia factura web via Google Apps Script:
function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('Factura') .addItem('Exportar Factura a PDF', 'Factura') .addToUi(); } function Ahora() { var now = new Date(); var year = now.getFullYear(); var month = now.getMonth() + 1; var day = now.getUTCDate(); var hora = now.getHours(); var minutos = now.getMinutes(); var string = day + "/" + month + "/" + year + "-" + hora + ":" + minutos + "\n"; return string; } function Factura() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var name = sheet.getName(); var data = sheet.getDataRange().getValues(); var precios = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Precios").getDataRange().getValues(); var file = SpreadsheetApp.create(name); var id = file.getId(); var out = file.getActiveSheet(); out.setName("Factura"); out.getRange(1, 1).setValue("Factura para empresa ficticia S.L"); out.getRange(2, 1).setValue(Ahora()); out.getRange(6, 1).setValue("Elemento"); out.getRange(6, 2).setValue("Cantidad"); out.getRange(6, 3).setValue("Precio"); out.getRange(6, 4).setValue("Impuestos(%)"); out.getRange(6, 5).setValue("Precio base"); out.getRange(6, 6).setValue("Precio Final"); var total_sin = 0; var total_con = 0; for(var i = 1 ; i < data.length; ++i ) { var row = data[i]; var precio = 0; var impuestos = 0; for(var j = 1; j < precios.length ; ++j) { if(precios[j][0] == row[0]) { precio = precios[j][1]; impuestos = precios[j][2]; break; } } var coste_antes = row[1] * precio; var coste_despues = coste_antes + (coste_antes*impuestos/100); total_sin += coste_antes; total_con += coste_despues; out.getRange(i+1+5, 1).setValue(row[0]); //Ponemos el elemento out.getRange(i+1+5, 2).setValue(row[1]); //Ponemos la cantidad out.getRange(i+1+5, 3).setValue(precio); //Ponemos el precio out.getRange(i+1+5, 4).setValue(impuestos); //Ponemos el coste de los impuestos out.getRange(i+1+5, 5).setValue(coste_antes); //Ponemos el precio antes de impuestos out.getRange(i+1+5, 6).setValue(coste_despues); //Ponemos el precio despues de impuestos } out.getRange(i+1+5, 5).setValue(total_sin); //Ponemos el precio total antes de impuestos out.getRange(i+1+5, 6).setValue(total_con); //Ponemos el precio total despues de impuestos SpreadsheetApp.flush(); //Esto se usa para forzar que todos los cambios se aplican ya. Sino, el pdf de la factura saldría vació dado que la escritura es diferida. DriveApp.createFile(file.getAs('application/pdf')); // Aquí es donde se crea el PDF de la factura }
Espero que os haya servido, nos vemos!
Donde puedo contactarte para solicitar aún acompañamiento remunerado para un proyecto?
ResponderEliminarhttps://www.fiverr.com/franciscobordas?public_mode=true
EliminarNos vemos!
Creo que falto información de cómo trabaja esta factura sencilla.
ResponderEliminarDime que no entiendes y te lo intentaré explicar mejor
EliminarNos vemos