import { jsPDF } from "jspdf";
import html2canvas from "html2canvas";
import { showMessage } from "@nextcloud/dialogs";
import { baseUrl } from "./modules/mainFunction.mjs";
import { saveNextcloud, saveOnePdfInNextcloud } from "./modules/ajaxRequest.mjs";
export function sendMail(myData) {
$.ajax({
url: baseUrl + "/sendPDF",
type: "POST",
contentType: "application/json",
data: JSON.stringify(myData)
}).done(function () {
showMessage(t("gestion", "Email sent"));
}).fail(function () {
showMessage(t("gestion", "Is your global mail server configured in Nextcloud?"));
});
}
export async function captureDevisFacture(afterCapturefunction, date_context, defunt, lieusoin, etp) {
$(".bootstrap-iso").css("height", "2280px");
$(".bootstrap-iso").css("margin-bottom", "100px");
$(".bootstrap-iso").css("padding", "64px");
var data = await gen_customPDF(date_context, defunt, lieusoin, etp);
afterCapturefunction(data);
$(".bootstrap-iso").css("height", "");
$(".bootstrap-iso").css("margin-bottom", "0px");
$(".bootstrap-iso").css("padding", "0px");
}
export async function captureAllFactures() {
showMessage(t("gestion", "Generation in progress …"));
$(".bootstrap-iso").css("width", "1200px");
$(".bootstrap-iso").css("padding-right", "20px");
$(".bootstrap-iso").css("padding-left", "20px");
var data = [];
await Array.from($(".bootstrap-iso")).forEach((b, i) => {
html2canvas(b, {
scrollY: -window.scrollY,
dpi: 300,
}).then((canvas) => {
var data_temp = gen_customAllPDF(canvas.toDataURL("image/jpg"), canvas, i);
data.push(data_temp);
});
});
$(".bootstrap-iso").css("width", "");
$(".bootstrap-iso").css("padding-right", "");
$(".bootstrap-iso").css("padding-left", "");
// return saveAllNextcloud(data);
}
export function capture(afterCapturefunction) {
showMessage(t("gestion", "Creation in progress …"));
$(".bootstrap-iso").css("height", "2280px");
$(".bootstrap-iso").css("margin-bottom", "100px");
$(".bootstrap-iso").css("padding", "64px");
html2canvas($(".bootstrap-iso")[0], {
scrollY: -window.scrollY,
dpi: 300,
}).then((canvas) => {
var data = genPDF(canvas.toDataURL("image/jpg"), canvas);
afterCapturefunction(data);
});
$(".bootstrap-iso").css("height", "");
$(".bootstrap-iso").css("margin-bottom", "0px");
$(".bootstrap-iso").css("padding", "0px");
}
function genPDF(imgData, canvas) {
var doc = new jsPDF("p", "mm");
var imgWidth = 210;
var pageHeight = 295;
var imgHeight = canvas.height * imgWidth / canvas.width;
var heightLeft = imgHeight;
var position = 0;
doc.addImage(imgData, "JPG", 0, position, imgWidth, imgHeight);
heightLeft -= pageHeight;
while (heightLeft >= 0) {
position += heightLeft - imgHeight;
doc.addPage();
doc.addImage(imgData, "JPG", 0, position, imgWidth, imgHeight);
heightLeft -= pageHeight;
}
var pdf = btoa(doc.output());
var n = "";
var to = $("#to").val().split(";");
var Cc = $("#Cc").val().split(";");
var subject = $("#subject").val();
var body = $("#body").val();
if ($("#factureid").length) {
n = t("gestion", "INVOICE") + "-" + defunt.toUpperCase() + '_' + lieusoin.toUpperCase();
} else {
n = t("gestion", "QUOTE") + "-" + defunt.toUpperCase() + '_' + lieusoin.toUpperCase();
}
var myData = { name: n, subject: subject, body: body, to: JSON.stringify(to), Cc : JSON.stringify(Cc), content: pdf, folder: $("#theFolder").val() + "/" + $("#pdf").data("folder") + "/" };
return myData;
//doc.save('devis.pdf');
}
async function gen_customPDF(date_devis, defunt, lieusoin, etp) {
showMessage(t("gestion", "Creation in progress …"));
var doc = new jsPDF("p", "pt" , "a4");
let pages = $(".bootstrap-iso");
await html2canvas(pages[0], {
scrollY: -window.scrollY,
dpi: 300,
}).then((canvas) => {
var imgData = canvas.toDataURL("image/jpeg");
doc.addImage(imgData, "JPG", 0, 0, 595, 842);
});
var pdf = await btoa(doc.output());
var n = "";
var to = $("#to").val().split(";");
var Cc = $("#Cc").val().split(";");
var subject = $("#subject").val();
var body = $("#body").val();
var datesplit = date_devis.split('-');
var folders = [];
var foldername1 = '';
var foldername2 = '';
if ($("#factureid").length) {
var numFacture = document.getElementById("factureid").innerText.replaceAll("/", "-");
// let name_temp = ($("#pdf").data("name")).replaceAll("/", "-");
// n = t("gestion", "INVOICE") + "_" + name_temp;
n = t("gestion", "INVOICE") + "_" + numFacture.toUpperCase() + "_"+ defunt.toUpperCase() + '_' + lieusoin.toUpperCase();
foldername1 = ''+$("#theFolder").val()+'/CLIENTS/'+etp.toUpperCase()+'/'+datesplit[0];
foldername1+='/'+datesplit[1]+' '+getMonth(parseInt(datesplit[1])).toUpperCase()+'/FACTURES/';
foldername2 = ''+$("#theFolder").val()+'/CLIENTS/'+etp.toUpperCase()+'/DEFUNTS/'+defunt.toUpperCase()+'/FACTURES/';
folders = [foldername1, foldername2];
} else {
n = t("gestion", "QUOTE") + "-" + defunt.toUpperCase() + '_' + lieusoin.toUpperCase();
foldername1 = ''+$("#theFolder").val()+'/CLIENTS/'+etp.toUpperCase()+'/'+datesplit[0];
foldername1+='/'+datesplit[1]+' '+getMonth(parseInt(datesplit[1])).toUpperCase()+'/DEVIS/';
foldername2 = ''+$("#theFolder").val()+'/CLIENTS/'+etp.toUpperCase()+'/DEFUNTS/'+defunt.toUpperCase()+'/DEVIS/';
folders = [foldername1, foldername2];
}
var myData = { name: n, subject: subject, body: body, to: JSON.stringify(to), Cc : JSON.stringify(Cc), content: pdf, folders};
return myData;
//doc.save('devis.pdf');
}
function getMonth(month) {
switch (month) {
case 1:
return 'Janvier';
case 2:
return 'Fevrier';
case 3:
return 'Mars'
case 4:
return 'Avril';
case 5:
return 'Mai';
case 6:
return 'Juin';
case 7:
return 'Juillet'
case 8:
return 'Aout';
case 9:
return 'Septembre';
case 10:
return 'Octobre';
case 11:
return 'Novembre';
case 12:
return 'Decembre';
}
}
export async function getPDF(type){
showMessage(t("gestion", "Creation in progress …"));
$(".bootstrap-iso").css("height", "2280px");
$(".bootstrap-iso").css("margin-bottom", "100px");
$(".bootstrap-iso").css("padding", "64px");
var doc = new jsPDF("p", "pt" , "a4");
let pages = $(".bootstrap-iso");
for (let i = 0; i < pages.length; i++) {
await html2canvas(pages[i], {
scrollY: -window.scrollY,
dpi: 300,
}).then((canvas) => {
var imgData = canvas.toDataURL("image/jpeg");
if(i>0)doc.addPage();
doc.addImage(imgData, "JPG", 0, 0, 595, 842);
});
}
var pdf = await btoa(doc.output());
// doc.save("HTML-Document.pdf");
const client_temp = document.getElementById('clientselector').selectedOptions[0].value;
const year_temp = parseInt(document.getElementById('yearselector').selectedOptions[0].value);
const month_temp = parseInt(document.getElementById('monthselector').selectedOptions[0].value);
let n = t("gestion", (type == 'devis')?"QUOTE":"INVOICE");
n+="_";
n+=client_temp.toUpperCase();
n+=(year_temp == -1)?'':('_'+year_temp);
n+=(month_temp == 0)?'':('_'+getMonth(month_temp).toUpperCase());
let foldername = ''+$("#theFolder").val()+'/';
var myData = { name: n, content: pdf, folder: foldername };
saveOnePdfInNextcloud(myData);
$(".bootstrap-iso").css("height", "");
$(".bootstrap-iso").css("margin-bottom", "0px");
$(".bootstrap-iso").css("padding", "0px");
};