import { generateUrl } from "@nextcloud/router"; import { updateDB } from "../modules/ajaxRequest.mjs"; import { baseUrl, checkSelectPurJs, LoadDT, showDone } from "../modules/mainFunction.mjs"; import { NewDevisMentionConstant,FacturedDevisMentionConstant,DefaultDevisMentionConstant,CanceledDevisMentionConstant, FacturedDevisMentionConstantFormatted } from "../constants/invoiceConstant.js"; export class Devis { /** * Devis object * @param myresp instantiate devis object */ constructor(myresp) { this.id = myresp.id; this.user_id = myresp.user_id; this.id_nextcloud = myresp.id_nextcloud; this.date = ((myresp.date == null || myresp.date.length === 0) ? '-' : myresp.date); this.num = ((myresp.num == null || myresp.num.length === 0) ? '-' : myresp.num); // defunt this.id_defunt = ((myresp.id_defunt == null || myresp.id_defunt.length === 0) ? '-' : myresp.id_defunt); this.nom_defunt = ((myresp.nom_defunt == null || myresp.nom_defunt.length === 0) ? '-' : myresp.nom_defunt); // fin defunt this.cid = ((myresp.cid == null || myresp.cid.length === 0) ? '-' : myresp.cid); this.lid = ((myresp.lid == null || myresp.lid.length === 0) ? '-' : myresp.lid); this.tid = ((myresp.tid == null || myresp.tid.length === 0) ? '-' : myresp.tid); this.nom = ((myresp.nom == null || myresp.nom.length === 0) ? '-' : myresp.nom); this.prenom = ((myresp.prenom == null || myresp.prenom.length === 0) ? '-' : myresp.prenom); this.nomThanato = ((myresp.nom_thanato == null || myresp.prenom_thanato.length === 0) ? '-' : `${myresp.nom_thanato +' '+ myresp.prenom_thanato}`); this.version = ((myresp.version == null || myresp.version.length === 0) ? '-' : myresp.version); this.lieu = ((myresp.lieu == null || myresp.lieu.length === 0) ? '-' : myresp.lieu); this.mentions = Devis.getDevisMentionFromApiResponse(myresp); this.baseUrl = generateUrl(`/apps/gestion/devis/${this.id}/show`); } static getDevisMentionLabelFromMention(mention){ let labelValue = mention; switch (mention) { case FacturedDevisMentionConstant: labelValue = "Facturé" break; case CanceledDevisMentionConstant: labelValue = "Annulé" break; case FacturedDevisMentionConstantFormatted: labelValue = "Facturé" break; default: labelValue = mention } return labelValue; } static getDevisMentionFromApiResponse(myresp){ let mention = "-"; if(myresp.mentions != null && myresp.mentions.length > 0){ mention = myresp.mentions; } return mention; } static getDevisMentionCssStyle(mention){ let style = "display:inline; border-radius: 5px; padding: 8px;"; if(mention === FacturedDevisMentionConstant || mention === FacturedDevisMentionConstantFormatted){ style += " background-color:green !important; color: white"; } else if(mention === CanceledDevisMentionConstant){ style += " background-color:red !important; color: white"; } else{ style += " background-color:yellow !important"; } return style; } /**undefined * Get datatable row for a devis */ getDTRow() { let signe_prop = (this.id_nextcloud.toLowerCase() == 'emmanuelle')?'propdevis-emmanuelle':(this.id_nextcloud.toLowerCase() == 'delphine')?'propdevis-delphine':''; let myrow = [ '', '
' + this.user_id + '
', '', // '
' + this.num + '
', '
'+ this.id_defunt + ' (' + this.nom_defunt + ')
', '
'+ this.cid + ' (' + this.prenom + ' ' + this.nom + ')
', '
'+ this.tid + ' (' + this.nomThanato+ ')
', '
' + this.lieu + '
', '
' +Devis.getDevisMentionLabelFromMention(this.mentions) + '
', '
' ]; return myrow; } /** * * @param {*} dt */ static newDevis(dt) { var oReq = new XMLHttpRequest(); oReq.open('POST', baseUrl + '/devis/insert', true); oReq.onload = function(e){ if (this.status == 200) { showDone() Devis.loadDevisDT(dt); }else{ showError(this.response); } }; oReq.send(); } /** * Load devis ajax * @param devisDT devis datatable */ static loadDevisDT(devisDT) { var oReq = new XMLHttpRequest(); oReq.open('PROPFIND', baseUrl + '/getDevis', true); oReq.setRequestHeader("Content-Type", "application/json"); oReq.onload = function(e){ if (this.status == 200) { // let devis_temp = (JSON.parse(JSON.parse(this.response))).filter((d)=>(d.mentions != "facturé")); // devis_temp = JSON.stringify(JSON.stringify(devis_temp)); LoadDT(devisDT, JSON.parse(this.response), Devis); }else{ showError(this.response); } }; oReq.send(); } static getDevis(callback){ var oReq = new XMLHttpRequest(); oReq.open('PROPFIND', baseUrl + '/getDevis', true); oReq.setRequestHeader("Content-Type", "application/json"); oReq.onload = function(e){ if (this.status == 200) { let devis_temp = (JSON.parse(JSON.parse(this.response))).filter((d)=>( d.mentions != FacturedDevisMentionConstant && d.mentions != FacturedDevisMentionConstantFormatted && d.mentions != CanceledDevisMentionConstant )); devis_temp = JSON.stringify(JSON.stringify(devis_temp)); callback(JSON.parse(devis_temp)); }else{ showError(this.response); } }; oReq.send(); } static getAllDevis(callback){ var oReq = new XMLHttpRequest(); oReq.open('PROPFIND', baseUrl + '/getDevis', true); oReq.setRequestHeader("Content-Type", "application/json"); oReq.onload = function(e){ if (this.status == 200) { let devis_temp = (JSON.parse(JSON.parse(this.response))); devis_temp = JSON.stringify(JSON.stringify(devis_temp)); callback(JSON.parse(devis_temp)); }else{ showError(this.response); } }; oReq.send(); } static getDevisByThanato(idThanato, callback) { var oReq = new XMLHttpRequest(); oReq.open('PROPFIND', baseUrl + '/getDevisByThanato/'+idThanato, true); oReq.setRequestHeader("Content-Type", "application/json"); oReq.onload = function(e){ if (this.status == 200) { let devis_temp = (JSON.parse(JSON.parse(this.response))); devis_temp = JSON.stringify(JSON.stringify(devis_temp)); callback(JSON.parse(devis_temp)); }else{ showError(this.response); } }; oReq.send(); } static getDevisByDateByLieu(e, callback) { var oReq = new XMLHttpRequest(); const id_client = (e.target.dataset.idclient == '-') ? 0 : e.target.dataset.idclient; const id_lieu = (e.target.dataset.idlieu == '-') ? 0 : e.target.dataset.idlieu; oReq.open('PROPFIND', baseUrl + '/devis/'+e.target.dataset.id+'/client/'+id_client+'/date/'+e.target.dataset.date+'/lieu/'+id_lieu, true); oReq.setRequestHeader("Content-Type", "application/json"); oReq.onload = function(e){ if (this.status == 200) { let devis_temp = (JSON.parse(JSON.parse(this.response))); devis_temp = JSON.stringify(JSON.stringify(devis_temp)); callback(JSON.parse(devis_temp)); }else{ showError(this.response); } }; oReq.send(); } static getAllDevisDelphine(e, callback){ var oReq = new XMLHttpRequest(); oReq.open('PROPFIND', baseUrl + '/getDevisDelphine/'+e.target.dataset.id, true); oReq.setRequestHeader("Content-Type", "application/json"); oReq.onload = function(e){ if (this.status == 200) { let devis_temp = (JSON.parse(JSON.parse(this.response))); devis_temp = JSON.stringify(JSON.stringify(devis_temp)); callback(JSON.parse(devis_temp)); }else{ showError(this.response); } }; oReq.send(); } static loadDevisByDateByLieu(e) { Devis.getDevisByDateByLieu(e, response => { var selectElement = document.createElement("select"); selectElement.dataset.current = e.target.dataset.current; selectElement.dataset.id = e.target.dataset.id; selectElement.dataset.old = e.target.innerHTML; selectElement.addEventListener("change", el=>{ if(el.target.value != 0){ updateDB(el.target.parentElement.dataset.table, el.target.parentElement.dataset.column, el.target.value, el.target.parentElement.dataset.id ); location.reload(); var parentElement = el.target.parentElement; parentElement.innerHTML = el.target.options[el.target.selectedIndex].text; parentElement.dataset.current = el.target.value; }else{ var parentElement = el.target.parentElement parentElement.innerHTML = el.target.dataset.old } }); var option = document.createElement("option"); option.value = 0; option.text = t('gestion', 'Cancel'); selectElement.appendChild(option); JSON.parse(response).forEach(myresp => { var nomClient = (myresp.prenom&&myresp.nom) ? ((myresp.prenom?myresp.prenom:'') + ' ' + (myresp.nom?myresp.nom:'')) : '-'; var nomDefunt = myresp.nom_defunt ? myresp.nom_defunt : '-'; var txt = document.createElement("textarea"); txt.innerHTML = nomDefunt + ' (' + nomClient +')'; var option = document.createElement("option"); option.value = myresp.id; option.text = txt.value; selectElement.appendChild(option); }); checkSelectPurJs(selectElement); e.target.innerHTML = '' e.target.appendChild(selectElement); }); } static loadDevisList_dnum(e){ Devis.getDevis( response => { var selectElement = document.createElement("select"); selectElement.dataset.current = e.target.dataset.current; selectElement.dataset.id = e.target.dataset.id; selectElement.dataset.old = e.target.innerHTML; selectElement.addEventListener("change", el=>{ if(el.target.value != 0){ updateDB(el.target.parentElement.dataset.table, el.target.parentElement.dataset.column, el.target.value, el.target.parentElement.dataset.id ); location.reload(); var parentElement = el.target.parentElement; parentElement.innerHTML = el.target.options[el.target.selectedIndex].text; parentElement.dataset.current = el.target.value; }else{ var parentElement = el.target.parentElement parentElement.innerHTML = el.target.dataset.old } }); var option = document.createElement("option"); option.value = 0; option.text = t('gestion', 'Cancel'); selectElement.appendChild(option); JSON.parse(response).forEach(myresp => { var nomClient = (myresp.prenom&&myresp.nom) ? ((myresp.prenom?myresp.prenom:'') + ' ' + (myresp.nom?myresp.nom:'')) : '-'; var nomDefunt = myresp.nom_defunt ? myresp.nom_defunt : '-'; var txt = document.createElement("textarea"); txt.innerHTML = nomDefunt + ' (' + nomClient +')'; var option = document.createElement("option"); option.value = myresp.id; option.text = txt.value; selectElement.appendChild(option); }); checkSelectPurJs(selectElement); e.target.innerHTML = '' e.target.appendChild(selectElement); }); } static loadAllDevisList_dnum(e){ Devis.getAllDevis( response => { var selectElement = document.createElement("select"); selectElement.dataset.current = e.target.dataset.current; selectElement.dataset.id = e.target.dataset.id; selectElement.dataset.old = e.target.innerHTML; selectElement.addEventListener("change", el=>{ if(el.target.value != 0){ updateDB(el.target.parentElement.dataset.table, el.target.parentElement.dataset.column, el.target.value, el.target.parentElement.dataset.id ); location.reload(); var parentElement = el.target.parentElement; parentElement.innerHTML = el.target.options[el.target.selectedIndex].text; parentElement.dataset.current = el.target.value; }else{ var parentElement = el.target.parentElement parentElement.innerHTML = el.target.dataset.old } }); var option = document.createElement("option"); option.value = 0; option.text = t('gestion', 'Cancel'); selectElement.appendChild(option); JSON.parse(response).forEach(myresp => { var nomClient = (myresp.prenom&&myresp.nom) ? ((myresp.prenom?myresp.prenom:'') + ' ' + (myresp.nom?myresp.nom:'')) : '-'; var nomDefunt = myresp.nom_defunt ? myresp.nom_defunt : '-'; var txt = document.createElement("textarea"); txt.innerHTML = nomDefunt + ' (' + nomClient +')'; var option = document.createElement("option"); option.value = myresp.id; option.text = txt.value; selectElement.appendChild(option); }); checkSelectPurJs(selectElement); e.target.innerHTML = '' e.target.appendChild(selectElement); }); } static loadDevisThanatoList_dnum(idThanato) { Devis.getDevisByThanato(idThanato, response => { var selectElement = document.createElement("select"); selectElement.dataset.current = e.target.dataset.current; selectElement.dataset.id = e.target.dataset.id; selectElement.dataset.old = e.target.innerHTML; selectElement.addEventListener("change", el=>{ if(el.target.value != 0){ updateDB(el.target.parentElement.dataset.table, el.target.parentElement.dataset.column, el.target.value, el.target.parentElement.dataset.id ); location.reload(); var parentElement = el.target.parentElement; parentElement.innerHTML = el.target.options[el.target.selectedIndex].text; parentElement.dataset.current = el.target.value; }else{ var parentElement = el.target.parentElement parentElement.innerHTML = el.target.dataset.old } }); var option = document.createElement("option"); option.value = 0; option.text = t('gestion', 'Cancel'); selectElement.appendChild(option); JSON.parse(response).forEach(myresp => { var nomClient = (myresp.prenom&&myresp.nom) ? ((myresp.prenom?myresp.prenom:'') + ' ' + (myresp.nom?myresp.nom:'')) : '-'; var nomDefunt = myresp.nom_defunt ? myresp.nom_defunt : '-'; var txt = document.createElement("textarea"); txt.innerHTML = nomDefunt + ' (' + nomClient +')'; var option = document.createElement("option"); option.value = myresp.id; option.text = txt.value; selectElement.appendChild(option); }); checkSelectPurJs(selectElement); e.target.innerHTML = '' e.target.appendChild(selectElement); }); } static loadDelphineDevisList_dnum(e){ Devis.getAllDevisDelphine( e, response => { var selectElement = document.createElement("select"); selectElement.dataset.current = e.target.dataset.current; selectElement.dataset.id = e.target.dataset.id; selectElement.dataset.old = e.target.innerHTML; selectElement.addEventListener("change", el=>{ if(el.target.value != 0){ updateDB(el.target.parentElement.dataset.table, el.target.parentElement.dataset.column, el.target.value, el.target.parentElement.dataset.id ); location.reload(); var parentElement = el.target.parentElement; parentElement.innerHTML = el.target.options[el.target.selectedIndex].text; parentElement.dataset.current = el.target.value; } else { var parentElement = el.target.parentElement parentElement.innerHTML = el.target.dataset.old } }); var option = document.createElement("option"); option.value = 0; option.text = t('gestion', 'Cancel'); selectElement.appendChild(option); JSON.parse(response).forEach(myresp => { var nomClient = (myresp.prenom&&myresp.nom) ? ((myresp.prenom?myresp.prenom:'') + ' ' + (myresp.nom?myresp.nom:'')) : '-'; var nomDefunt = myresp.nom_defunt ? myresp.nom_defunt : '-'; var txt = document.createElement("textarea"); txt.innerHTML = nomDefunt + ' (' + nomClient +')'; var option = document.createElement("option"); option.value = myresp.id; option.text = txt.value; selectElement.appendChild(option); }); checkSelectPurJs(selectElement); e.target.innerHTML = '' e.target.appendChild(selectElement); }); } }