Kodas

mail@pastecode.io avatar
unknown
plain_text
6 months ago
4.2 kB
1
Indexable
Never
function createFolder() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var year = sheet.getRange("B1").getValue();
  var month = sheet.getRange("B2").getValue();
  var parentFolder = DriveApp.getRootFolder();
  var folderName = year + " " + month + " Mokiniu Saskaitos";
  var existingFolder = parentFolder.getFoldersByName(folderName);

  if (existingFolder.hasNext()) {
    return existingFolder.next();
  } else {
    return parentFolder.createFolder(folderName);
  }
}

function generateInvoices() {
  // Create the folder based on year and month
  var folder = createFolder();

  var sheet = SpreadsheetApp.getActiveSheet();
  var year = sheet.getRange("B1").getValue();
  var month = sheet.getRange("B2").getValue();
  var data = sheet.getRange("B3:G" + sheet.getLastRow()).getValues();
  
  for (var i = 0; i < data.length; i++) {
    var row = data[i];
    var name = row[1];         // Column B3 (Vaiko Vardas) corresponds to index 1
    var email = row[2];        // Column C3 (Emailas) corresponds to index 2
    var amount = row[3];       // Column D3 (Likutis) corresponds to index 3
    var received = row[4];     // Column E3 (Gauta) corresponds to index 4
    var spent = row[5];        // Column F3 (Sunaudota) corresponds to index 5
    var compensation = row[6]; // Column G3 (Kompensacija) corresponds to index 6

    // Skip rows with empty email addresses
    if (!email) continue;

    // Create a Google Document as the invoice
    var doc = DocumentApp.create("Invoice for " + name + " - " + month);
    var body = doc.getBody();
    
    // Add static information to the invoice
    body.appendParagraph("SĄSKAITA");
    body.appendTable([
      ["UAB AMBER CATERING", "Rekvizitai mokantiems pavedimu:"],
      ["Dūmų 3, Vilnius", "Įmonės kodas .. 120857076"],
      ["Tel.868545888", "PVM kodas ...... LT208570716"],
      ["El. paštas: ac.ritulia@gmail.com", "sąskaita LT147300010155984049"],
      ["", "„Swedbank“, AB"],
      ["", "banko kodas 73000"],
      ["", "Paskirtyje nurodykite:"],
      ["", "mokinio vardą, pavardę, klasę"]
    ]);

    // Add dynamic information to the invoice
    body.appendParagraph("Už " + year + " m. " + month + " mėnesio maitinimą\nmokinys(ė): " + name);
    body.appendParagraph(""); // One row gap

    // Add the table
    var table = [];
    table.push(["Paslaugos pavadinimas", "Suma Eur"]);
    table.push(["Gauta suma – apmokėta už suteiktas paslaugas", received]);
    table.push(["Sunaudota - suvalgyta per ataskaitinį laikotarpį", spent]);
    table.push(["Likutis*", amount]);
    table.push(["", "* Suma su minuso ženklu reiškia trūkumą lėšų „vaiko sąskaitoj“"]);
    body.appendTable(table);

    // Add spacing
    body.appendParagraph("");
    body.appendParagraph("PAPILDOMA INFORMACIJA:");
    body.appendParagraph("Savivaldybės kompensacija yra įtraukta į mokėtiną sumą.");
    body.appendParagraph("Mokėjimo grafoje „Likutis“  su minuso ženklu reiškia trūkumą lėšų vaiko sąskaitoje");
    body.appendParagraph("Už vaikų maitinimą mokama į priekį. Už einamąjį mėnesį mokama per pirmą einamojo mėnesio savaitę. Reikia susiskaičiuoti patiems kiek planuojate valgyti. Jei per einamąjį mėnesį neišnaudojote įmokėtų pinigėlių, permoka perkeliama į sekantį mėnesį.");
    body.appendParagraph("Pietų kaina...................................... 5,40");
    body.appendParagraph("Pavakarių kaina............................. 2,30");
    body.appendParagraph("Bendra dienos(pietūs-pavakariai) maitinimo kaina..... 7,70");
    body.appendParagraph("Jei pastebėjote klaidą mokėjimo pranešime, informuokite.");

    // Save and close the invoice document
    doc.saveAndClose();

    // Get the Word file as a blob
    var blob = DriveApp.getFileById(doc.getId()).getBlob();
    
    // Move the Word file to the specified folder
    var wordFile = folder.createFile(blob);

    // Correctly set the content type to Word
    wordFile.setName(wordFile.getName() + ".docx"); // Rename with .docx extension
  }
}

function onOpen() {
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Custom Menu')
    .addItem('Generate Invoices', 'generateInvoices')
    .addToUi();
}