import { showError } from "@nextcloud/dialogs"; import { generateUrl } from "@nextcloud/router"; import { baseUrl, LoadDT, showDone } from "../modules/mainFunction.mjs"; import { Devis } from "./devis.mjs"; import { FactureTypeSingle } from "../constants/invoiceConstant.js"; export class Facture { /** * Facture object * @param myresp instantiate Facture object */ constructor(myresp) { this.id = myresp.id; this.user_id = myresp.user_id; this.date = ((myresp.date == null || myresp.date.length === 0) ? '-' : myresp.date); this.num = ((myresp.num == null || myresp.num.length === 0) ? '-' : myresp.num); this.version = ((myresp.version == null || myresp.version.length === 0) ? '-' : myresp.version); this.date_paiement = ((myresp.date_paiement == null || myresp.date_paiement.length === 0) ? '-' : myresp.date_paiement); this.type_paiement = ((myresp.facture_payment_type_label != null && myresp.facture_payment_type_label.length > 0)) ? myresp.facture_payment_type_label : '-'; this.dnum = ((myresp.dnum == null || myresp.dnum.length === 0) ? '-' : myresp.dnum); this.nom_defunt = ((myresp.nom_defunt == null || myresp.nom_defunt.length == 0) ? '-' : myresp.nom_defunt); this.nom = ((myresp.nom == null || myresp.nom.length === 0) ? '-' : myresp.nom); this.lieu = ((myresp.lieu == null || myresp.lieu.length === 0) ? '-' : myresp.lieu); this.prenom = ((myresp.prenom == null || myresp.prenom.length === 0) ? '-' : myresp.prenom); this.status_paiement = ((myresp.facture_status_label == null || myresp.facture_status_label.length === 0) ? '-' : myresp.facture_status_label); this.id_devis = ((myresp.id_devis == null || myresp.id_devis.length === 0) ? '-' : myresp.id_devis); this.baseUrl = generateUrl(`/apps/gestion/facture/${this.id}/show`); this.factureProduits = Devis.getDevisProduitsString(myresp); let paymentDate = "-"; if(myresp.payment_date != null && myresp.payment_date.length > 0){ paymentDate = new Date(myresp.payment_date); paymentDate = paymentDate.toLocaleDateString("fr-FR"); } this.payment_date = paymentDate; this.factureType = myresp.facture_type; if(this.factureType == FactureTypeSingle){ this.baseUrl = generateUrl(`/apps/gestion/facture/${this.id}/show`); } else{ this.baseUrl = generateUrl(`/apps/gestion/facture/${this.id}/groupDetails`); } } /** * Get datatable row for a devis */ getDTRow() { let myrow = [ '', '
' + this.user_id + '
', '
' + this.num + '
', '', '', '
' + this.type_paiement + '
', '
' + this.nom_defunt + ' | ' + this.prenom + ' ' + this.nom + '
', '
' + this.nom + '
', '
' + this.factureProduits + '
', '
' + this.status_paiement + '
', '
' + this.payment_date + '
', '
', ]; return myrow; } static loadFactureDT(factureDT) { var oReq = new XMLHttpRequest(); oReq.open('PROPFIND', baseUrl + '/getFacturesWithProduits', true); oReq.setRequestHeader("Content-Type", "application/json"); oReq.onload = function(e){ if (this.status == 200) { LoadDT(factureDT, JSON.parse(this.response), Facture); // Devis.loadDevisList(); // configuration(checkAutoIncrement); }else{ showError(this.response); } }; oReq.send(); } /** * * @param {*} dt */ static newFacture(dt) { var oReq = new XMLHttpRequest(); oReq.open('POST', baseUrl + '/facture/insert', true); oReq.onload = function(e){ if (this.status == 200) { showDone() Facture.loadFactureDT(dt); }else{ showError(this.response); } }; oReq.send(); } }