finish command provider features

This commit is contained in:
Tiavina 2025-02-13 17:26:33 +03:00
parent 7f61f9bdbf
commit 5ccd469bc8
33 changed files with 194 additions and 64 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -40,7 +40,7 @@ class Bdd {
"fk_defunt_id","fk_lieu_id","fk_client_id","fk_thanato_id",
"fk_product_id","ht_price",
"fk_client_group_id","fk_produit_id","ht_amount","client_group_name",
"provider_name","provider_last_name","provider_company_name","provider_siret_number","provider_phone","provider_email","provider_address","provider_city");
"provider_name","provider_last_name","provider_company_name","provider_siret_number","provider_phone","provider_email","provider_address","provider_city","fk_provider_id");
$this->whiteTable = array("client", "lieu", "trajet", "devis", "produit_devis", "facture", "produit",
"configuration", "ligne_trajet", "thanato", "article", "defunt", "article_devis",
"bibliotheque", "bijou_defunt", "obs_defunt", "hypo_defunt",

View File

@ -207,6 +207,7 @@ class OrderBdd {
orders.fk_client_id,
orders.fk_thanato_id,
orders.fk_order_status_key,
orders.fk_provider_id,
thanato.id as thanato_id,
thanato.nom as thanato_nom,
thanato.prenom as thanato_prenom,
@ -219,13 +220,17 @@ class OrderBdd {
lieu.id as lieu_id,
lieu.adresse as lieu_adresse,
lieu.nom as lieu_nom,
order_status.status_label as order_status_label
order_status.status_label as order_status_label,
provider.provider_name as provider_name,
provider.provider_last_name as provider_last_name,
provider.provider_company_name as provider_company_name
FROM "
.$this->orderTablePrefix."orders as orders
LEFT JOIN ".$this->orderTablePrefix."thanato as thanato on orders.fk_thanato_id = thanato.id
LEFT JOIN ".$this->orderTablePrefix."client as client on orders.fk_client_id = client.id
LEFT JOIN ".$this->orderTablePrefix."defunt as defunt on orders.fk_defunt_id = defunt.id
LEFT JOIN ".$this->orderTablePrefix."lieu as lieu on orders.fk_lieu_id = lieu.id
LEFT JOIN ".$this->orderTablePrefix."provider as provider on orders.fk_provider_id = provider.id
LEFT JOIN ".$this->orderTablePrefix."order_status as order_status on orders.fk_order_status_key = order_status.status_key
ORDER BY orders.id DESC;
"

View File

@ -4,6 +4,10 @@ import { hideLoader, showLoader,baseUrl } from "../modules/mainFunction.mjs";
import { showError, showSuccess } from "@nextcloud/dialogs";
document.body.addEventListener('click', e => {
if(e.target.className.includes("selectProviders")){
Provider.loadProvidersIntoSelect(e);
return;
}
if("createDefaultProvider"=== e.target.id){
Provider.createDefaultProvider(new DataTable('.tabledt'));
return;

View File

@ -24,6 +24,8 @@ export class Order {
this.statusKey = ((myresp.fk_order_status_key == null || myresp.fk_order_status_key.length === 0) ? '-' : myresp.fk_order_status_key);
this.productReferences = ((myresp.product_references == null || myresp.product_references.length === 0) ? '-' : myresp.product_references);
this.orderDetailsUrl = generateUrl(`/apps/gestion/order/${this.id}/details`);
this.fkProviderId = myresp.fk_provider_id;
this.providerName = ((myresp.provider_name == null || myresp.provider_name.length === 0) ? '-' : myresp.provider_name);
}
static getClientFullname(myresp){
@ -90,6 +92,7 @@ export class Order {
'<div class="getThanatosSubcontractor" data-table="orders" data-column="fk_thanato_id" data-id="' + this.id + '" data-current="' + this.thanatoId + '">'+ this.thanatoFullName + '</div>',
'<div class="loadSelect_listlieu" data-table="orders" data-column="fk_lieu_id" data-id="' + this.id + '" data-current="' + this.locationId + '">'+ this.locationName + '</div>',
'<div>' + this.productReferences + '</div>',
'<div class="selectProviders" data-table="orders" data-column="fk_provider_id" data-id="' + this.id + '" data-current="' + this.fkProviderId + '">'+ this.providerName + '</div>',
'<div style="'+ Order.getComandStatusCssSytle(this.statusKey) +'">' + this.statusLabel + '</div>',
'<div style="display:inline-block;margin-right:0px;width:80%;"><a href="' + this.orderDetailsUrl + '"><button>' + t('gestion', 'Open') + '</button></a>'+'<div data-modifier="orders" data-id=' + this.id + ' data-table="orders" style="display:inline-block;margin-right:0px;" class="deleteItem icon-delete"></div>'
];
@ -137,4 +140,5 @@ export class Order {
};
oReq.send();
}
}

View File

@ -1,23 +1,42 @@
import { showError } from "@nextcloud/dialogs";
import { updateDB } from "../modules/ajaxRequest.mjs";
import { baseUrl, checkSelectPurJs, hideLoader, LoadDT, removeOptions, showDone, showLoader } from "../modules/mainFunction.mjs";
import {
baseUrl,
checkSelectPurJs,
hideLoader,
LoadDT,
removeOptions,
showDone,
showLoader,
} from "../modules/mainFunction.mjs";
export class Provider {
/**
*
*
* @param myresp instantiate client object
*/
constructor(myresp) {
this.id = myresp.id;
this.providerName = ((myresp.provider_name.length === 0) ? '-' : myresp.provider_name);
this.providerLastName = ((myresp.provider_last_name.length === 0) ? '-' : myresp.provider_last_name);
this.providerCompanyName = ((myresp.provider_company_name.length === 0) ? '-' : myresp.provider_company_name);
this.providerSiretNumber = ((myresp.provider_siret_number.length === 0) ? '-' : myresp.provider_siret_number);
this.providerPhone = ((myresp.provider_phone.length === 0) ? '-' : myresp.provider_phone);
this.providerEmail = ((myresp.provider_email.length === 0) ? '-' : myresp.provider_email);
this.providerAddress = ((myresp.provider_address.length === 0) ? '-' : myresp.provider_address);
this.providerCity = ((myresp.provider_city.length === 0) ? '-' : myresp.provider_city);
this.providerName =
myresp.provider_name.length === 0 ? "-" : myresp.provider_name;
this.providerLastName =
myresp.provider_last_name.length === 0 ? "-" : myresp.provider_last_name;
this.providerCompanyName =
myresp.provider_company_name.length === 0
? "-"
: myresp.provider_company_name;
this.providerSiretNumber =
myresp.provider_siret_number.length === 0
? "-"
: myresp.provider_siret_number;
this.providerPhone =
myresp.provider_phone.length === 0 ? "-" : myresp.provider_phone;
this.providerEmail =
myresp.provider_email.length === 0 ? "-" : myresp.provider_email;
this.providerAddress =
myresp.provider_address.length === 0 ? "-" : myresp.provider_address;
this.providerCity =
myresp.provider_city.length === 0 ? "-" : myresp.provider_city;
}
/**
@ -25,32 +44,66 @@ export class Provider {
*/
getDTRow() {
let myrow = [
'<div>' + this.id + '</div>',
'<div class="editable" data-table="provider" data-column="provider_name" data-id="' + this.id + '">' + this.providerName + '</div>',
'<div class="editable" data-table="provider" data-column="provider_last_name" data-id="' + this.id + '">' + this.providerLastName + '</div>',
'<div class="editable" data-table="provider" data-column="provider_company_name" data-id="' + this.id + '">' + this.providerCompanyName + '</div>',
'<div class="editable" data-table="provider" data-column="provider_siret_number" data-id="' + this.id + '">' + this.providerSiretNumber + '</div>',
'<div class="editable" data-table="provider" data-column="provider_phone" data-id="' + this.id + '">' + this.providerPhone + '</div>',
'<div class="editable" data-table="provider" data-column="provider_email" data-id="' + this.id + '">' + this.providerEmail + '</div>',
'<div class="editable" data-table="provider" data-column="provider_address" data-id="' + this.id + '">' + this.providerAddress + '</div>',
'<div class="editable" data-table="provider" data-column="provider_city" data-id="' + this.id + '">' + this.providerCity + '</div>',
'<center><div data-modifier="provider" data-id=' + this.id + ' data-table="provider" style="display:inline-block;margin-right:0px;" class="deleteItem icon-delete"></div></center>'
"<div>" + this.id + "</div>",
'<div class="editable" data-table="provider" data-column="provider_name" data-id="' +
this.id +
'">' +
this.providerName +
"</div>",
'<div class="editable" data-table="provider" data-column="provider_last_name" data-id="' +
this.id +
'">' +
this.providerLastName +
"</div>",
'<div class="editable" data-table="provider" data-column="provider_company_name" data-id="' +
this.id +
'">' +
this.providerCompanyName +
"</div>",
'<div class="editable" data-table="provider" data-column="provider_siret_number" data-id="' +
this.id +
'">' +
this.providerSiretNumber +
"</div>",
'<div class="editable" data-table="provider" data-column="provider_phone" data-id="' +
this.id +
'">' +
this.providerPhone +
"</div>",
'<div class="editable" data-table="provider" data-column="provider_email" data-id="' +
this.id +
'">' +
this.providerEmail +
"</div>",
'<div class="editable" data-table="provider" data-column="provider_address" data-id="' +
this.id +
'">' +
this.providerAddress +
"</div>",
'<div class="editable" data-table="provider" data-column="provider_city" data-id="' +
this.id +
'">' +
this.providerCity +
"</div>",
'<center><div data-modifier="provider" data-id=' +
this.id +
' data-table="provider" style="display:inline-block;margin-right:0px;" class="deleteItem icon-delete"></div></center>',
];
return myrow;
}
/**
*
* @param {*} providerDatatable
*
* @param {*} providerDatatable
*/
static loadProviderDatatable(providerDatatable) {
var oReq = new XMLHttpRequest();
oReq.open('PROPFIND', baseUrl + '/provider/list', true);
oReq.open("PROPFIND", baseUrl + "/provider/list", true);
oReq.setRequestHeader("Content-Type", "application/json");
oReq.onload = function(e){
oReq.onload = function (e) {
if (this.status == 200) {
LoadDT(providerDatatable, JSON.parse(this.response), Provider);
}else{
} else {
showError(this.response);
}
};
@ -58,23 +111,22 @@ export class Provider {
}
/**
*
* @param {*} dt
*
* @param {*} dt
*/
static createDefaultProvider(dt) {
var oReq = new XMLHttpRequest();
showLoader();
oReq.open('POST', baseUrl + '/provider/createDefaultProvider', true);
oReq.onload = function(e){
oReq.open("POST", baseUrl + "/provider/createDefaultProvider", true);
oReq.onload = function (e) {
if (this.status == 200) {
if(this.response != null){
showDone()
if (this.response != null) {
showDone();
Provider.loadProviderDatatable(dt);
}
else{
} else {
showError("Erreur dans la création d'un fournisseur");
}
}else{
} else {
showError("Erreur dans la création d'un fournisseur");
}
hideLoader();
@ -82,5 +134,68 @@ export class Provider {
oReq.send();
}
static getProviders(callback) {
var oReq = new XMLHttpRequest();
oReq.open("PROPFIND", baseUrl + "/provider/list", 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 {*} e
*/
static loadProvidersIntoSelect(e) {
Provider.getProviders((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
);
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.provider_name;
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);
});
}
}

View File

@ -6,6 +6,7 @@ import DataTable from "datatables.net";
import { globalConfiguration, optionDatatable } from "./modules/mainFunction.mjs";
import "./listener/main_listener";
import "./listener/orderListener";
import "./listener/providerListener";
import { Order } from "./objects/order.mjs";
window.addEventListener("DOMContentLoaded", function () {
globalConfiguration();

View File

@ -23,6 +23,7 @@
<th><?php p($l->t('Thanatopracteur'));?></th>
<th><?php p($l->t('Lieu'));?></th>
<th><?php p($l->t('Type de soins'));?></th>
<th><?php p($l->t('Fournisseur'));?></th>
<th><?php p($l->t('Etat'));?></th>
<th><?php p($l->t('Actions'));?></th>
</tr>