197 lines
6.1 KiB
JavaScript
197 lines
6.1 KiB
JavaScript
import { showError } from "@nextcloud/dialogs";
|
|
import { baseUrl, cur, checkSelectPurJs, LoadDT, showDone } from "../modules/mainFunction.mjs";
|
|
import { updateDB, setDefuntCover } from "../modules/ajaxRequest.mjs";
|
|
|
|
export class Produit {
|
|
|
|
/**
|
|
*
|
|
* @param myresp instantiate product object
|
|
*/
|
|
constructor(myresp) {
|
|
this.id = myresp.id;
|
|
this.reference = ((myresp.reference.length === 0) ? '-' : myresp.reference);
|
|
this.description = ((myresp.description.length === 0) ? '-' : myresp.description);
|
|
this.prix_unitaire = ((myresp.prix_unitaire.length === 0) ? '-' : myresp.prix_unitaire);
|
|
}
|
|
|
|
/**
|
|
* Get datatable row for a product
|
|
*/
|
|
getDTRow() {
|
|
let myrow = [
|
|
'<div>' + this.id + '</div>',
|
|
'<div class="editable" data-table="produit" data-column="reference" data-id="' + this.id + '">' + this.reference + '</div>',
|
|
'<div class="editable" data-table="produit" data-column="description" data-id="' + this.id + '">' + this.description + '</div>',
|
|
'<div class="editableNumeric" data-table="produit" data-column="prix_unitaire" data-id="' + this.id + '">' + cur.format(this.prix_unitaire) + '</div>',
|
|
'<div data-modifier="produit" data-id=' + this.id + ' data-table="produit" style="display:inline-block;margin-right:0px;" class="deleteItem icon-delete"></div>'
|
|
];
|
|
return myrow;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param {*} productDT
|
|
*/
|
|
static loadProduitDT(productDT) {
|
|
var oReq = new XMLHttpRequest();
|
|
oReq.open('PROPFIND', baseUrl + '/getProduits', true);
|
|
oReq.setRequestHeader("Content-Type", "application/json");
|
|
oReq.onload = function(e){
|
|
if (this.status == 200) {
|
|
LoadDT(productDT, JSON.parse(this.response), Produit);
|
|
}else{
|
|
showError(this.response);
|
|
}
|
|
};
|
|
oReq.send();
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param {*} dt
|
|
*/
|
|
static newProduct(dt) {
|
|
var oReq = new XMLHttpRequest();
|
|
oReq.open('POST', baseUrl + '/produit/insert', true);
|
|
oReq.onload = function(e){
|
|
if (this.status == 200) {
|
|
showDone()
|
|
Produit.loadProduitDT(dt);
|
|
}else{
|
|
showError(this.response);
|
|
}
|
|
};
|
|
oReq.send();
|
|
}
|
|
|
|
static getProductsList(callback){
|
|
var oReq = new XMLHttpRequest();
|
|
oReq.open('PROPFIND', baseUrl + '/getProduits', true);
|
|
oReq.setRequestHeader("Content-Type", "application/json");
|
|
oReq.onload = function(e){
|
|
if (this.status == 200) {
|
|
callback(JSON.parse(this.response));
|
|
}else{
|
|
showError(this.response);
|
|
}
|
|
};
|
|
oReq.send();
|
|
}
|
|
|
|
static getCoverProductsList(callback){
|
|
var oReq = new XMLHttpRequest();
|
|
oReq.open('PROPFIND', baseUrl + '/getCoverProducts', true);
|
|
oReq.setRequestHeader("Content-Type", "application/json");
|
|
oReq.onload = function(e){
|
|
if (this.status == 200) {
|
|
callback(JSON.parse(this.response));
|
|
}else{
|
|
showError(this.response);
|
|
}
|
|
};
|
|
oReq.send();
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param {*} lid
|
|
*/
|
|
static loadProductListToSelect(e){
|
|
Produit.getProductsList(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 txt = document.createElement("textarea");
|
|
txt.innerHTML = myresp.reference;
|
|
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);
|
|
});
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param {*} lid
|
|
*/
|
|
static loadCoverProductListIntoSelect(e){
|
|
Produit.getCoverProductsList(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){
|
|
let setDefuntCoverPayload = {
|
|
defuntId : el.target.parentElement.dataset.id,
|
|
productId : el.target.value
|
|
}
|
|
setDefuntCover(setDefuntCoverPayload);
|
|
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 txt = document.createElement("textarea");
|
|
txt.innerHTML = myresp.description;
|
|
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);
|
|
});
|
|
}
|
|
}
|