finish order features table, create order from agenda based on the user type, commandes list, commande create , commande update, commande delete, wip tarif
This commit is contained in:
parent
7b088618d3
commit
8901c0a7cb
@ -146,6 +146,7 @@ return [
|
||||
|
||||
//thanato
|
||||
['name' => 'page#getThanatoTypeList', 'url' => '/thanato/type', 'verb' => 'PROPFIND'],
|
||||
['name' => 'page#getThanatosByType', 'url' => '/thanatos/type/{thanatoType}', 'verb' => 'PROPFIND'],
|
||||
|
||||
//relation of user and thanato
|
||||
['name' => 'page#getUsersNotLinkedToThanato','url' => '/user/getUsersNotLinkedToThanato', 'verb' => 'PROPFIND'],
|
||||
@ -153,5 +154,6 @@ return [
|
||||
//order
|
||||
['name' => 'order#getOrdersWithDetails','url' => '/order/list', 'verb' => 'PROPFIND'],
|
||||
['name' => 'order#createDefaultOrder','url' => '/order/createDefaultOrder', 'verb' => 'POST'],
|
||||
['name' => 'order#updateOrderDate','url' => '/order/{orderId}/updateDate', 'verb' => 'PUT'],
|
||||
]
|
||||
];
|
||||
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
@ -120,4 +120,19 @@ class OrderController extends Controller {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @NoAdminRequired
|
||||
* @NoCSRFRequired
|
||||
*/
|
||||
public function updateOrderDate($orderId,$orderDate) {
|
||||
try{
|
||||
$this->orderService->updateOrderDate($orderId,$orderDate);
|
||||
return true;
|
||||
}
|
||||
catch(Exception $e){
|
||||
var_dump($e->getMessage());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -2804,4 +2804,18 @@ class PageController extends Controller {
|
||||
return json_encode([]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @NoAdminRequired
|
||||
* @NoCSRFRequired
|
||||
*
|
||||
*/
|
||||
public function getThanatosByType($thanatoType){
|
||||
try{
|
||||
return $this->myDb->getThanatosByType($thanatoType);
|
||||
}
|
||||
catch(Exception $e) {
|
||||
return json_encode([]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -3,6 +3,7 @@ namespace OCA\Gestion\Db;
|
||||
|
||||
use OCA\Gestion\Constants\BddConstant;
|
||||
use OCA\Gestion\Constants\DevisMentionConstant;
|
||||
use OCA\Gestion\Constants\ThanatoTypeConstant;
|
||||
use OCA\Gestion\Helpers\DateHelpers;
|
||||
use OCA\Gestion\Helpers\VCalendarHelpers;
|
||||
use OCP\IDBConnection;
|
||||
@ -35,8 +36,12 @@ class Bdd {
|
||||
"drainage", "drainage_qte", "drainage_etat", "ponction", "ponction_qte", "cavite", "cavite_qte", "desinfection", "lavage",
|
||||
"rasage", "presentation_cosmetique", "presentation_sur", "hypodermiques", "hypodermiques_sur", "local", "local_sur", "contenu",
|
||||
"commentaire", "designation", "hypodermiques_text1", "hypodermiques_text2", "qte", "endroit",
|
||||
"fk_thanato_type_key","thanato_email","fk_user_uuid");
|
||||
$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");
|
||||
"fk_thanato_type_key","thanato_email","fk_user_uuid",
|
||||
"fk_defunt_id","fk_lieu_id","fk_client_id","fk_thanato_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",
|
||||
"orders");
|
||||
$this->tableprefix = '*PREFIX*' ."gestion_";
|
||||
$this->pdo = $db;
|
||||
$this->l = $l;
|
||||
@ -478,7 +483,9 @@ class Bdd {
|
||||
.$this->tableprefix."devis.user_id as user_id
|
||||
FROM ".$this->tableprefix."defunt
|
||||
LEFT JOIN ".$this->tableprefix."devis ON ".$this->tableprefix."devis.id_defunt = ".$this->tableprefix."defunt.id
|
||||
WHERE ".$this->tableprefix."devis.id_defunt IS NULL
|
||||
LEFT JOIN ".$this->tableprefix."orders ON ".$this->tableprefix."defunt.id = ".$this->tableprefix."orders.fk_defunt_id
|
||||
WHERE ".$this->tableprefix."devis.id_defunt IS NULL AND "
|
||||
.$this->tableprefix."orders.fk_defunt_id IS NULL
|
||||
ORDER BY ".$this->tableprefix."defunt.id DESC;";
|
||||
return $this->execSQL($sql, array());
|
||||
}
|
||||
@ -973,7 +980,8 @@ class Bdd {
|
||||
} else if(strcmp($table, "ligne_trajet")==0 && (strcmp($column, "id_devis")==0 || strcmp($column, "date")==0 || strcmp($column, "id_lieu")==0 || strcmp($column, "rang")==0)) {
|
||||
$ligne_trajet = json_decode($this->getOneTrajetdetails($id, $idNextcloud))[0];
|
||||
$this->update_lieu_date_devis_rang_ligneTrajet($ligne_trajet, $column, htmlentities(rtrim($data)), $idNextcloud);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
$sql = "UPDATE ".$this->tableprefix.$table." SET $column = ? WHERE `id` = ?";
|
||||
$this->execSQLNoData($sql, array(trim($data), $id));
|
||||
}
|
||||
@ -2806,4 +2814,13 @@ class Bdd {
|
||||
}
|
||||
}
|
||||
|
||||
public function getThanatosByType($thanatoType = ThanatoTypeConstant::THANATO_TYPE_EMPLOYEE){
|
||||
$thanatoType = $thanatoType ?? ThanatoTypeConstant::THANATO_TYPE_EMPLOYEE;
|
||||
$sql = "SELECT * FROM ".$this->tableprefix."thanato as thanato
|
||||
WHERE thanato.fk_thanato_type_key = ?
|
||||
";
|
||||
|
||||
return $this->execSQL($sql,[$thanatoType]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -212,4 +212,31 @@ class OrderBdd {
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
private function updateOrderNumber($orderId,$datetime){
|
||||
$lastOrderNumber = $this->getLastOrderNumber();
|
||||
$currentOrderNumber = $lastOrderNumber + 1;
|
||||
$currentOrderFullNumber = OrderHelpers::GetFullOrderNumberByDateAndOrderNumber($datetime,$currentOrderNumber);
|
||||
$sql = "UPDATE ".$this->orderTablePrefix."orders as orders
|
||||
SET orders.order_number = ?,orders.order_full_number = ?
|
||||
WHERE orders.id = ?
|
||||
";
|
||||
$this->execSQLNoData($sql,[$currentOrderNumber,$currentOrderFullNumber,$orderId]);
|
||||
}
|
||||
|
||||
private function updateOrderDate($orderId,$orderDate){
|
||||
$sql = "UPDATE ".$this->orderTablePrefix."orders as orders
|
||||
SET orders.order_date = ?
|
||||
WHERE orders.id = ?
|
||||
";
|
||||
|
||||
$this->execSQLNoData($sql,[$orderDate,$orderId]);
|
||||
}
|
||||
|
||||
public function updateOrderDateAndSetNewOrderNumber($orderId,$date){
|
||||
$this->updateOrderDate($orderId,$date);
|
||||
$datetime = new Datetime($date);
|
||||
$this->updateOrderNumber($orderId,$datetime);
|
||||
}
|
||||
|
||||
}
|
||||
@ -63,4 +63,8 @@ class OrderService {
|
||||
public function createDefaultOrder($idNextcloud){
|
||||
$this->orderBdd->createDefaultOrder($idNextcloud);
|
||||
}
|
||||
|
||||
public function updateOrderDate($orderId,$date){
|
||||
$this->orderBdd->updateOrderDateAndSetNewOrderNumber($orderId,$date);
|
||||
}
|
||||
}
|
||||
|
||||
2
gestion/src/js/constants/thanatoTypeConstant.js
Normal file
2
gestion/src/js/constants/thanatoTypeConstant.js
Normal file
@ -0,0 +1,2 @@
|
||||
export const ThanatoEmployeeTypeKey = "EMPLOYEE";
|
||||
export const ThanatoSubcontractorTypeKey = "SUBCONTRACTOR";
|
||||
@ -15,6 +15,7 @@ import { Article } from "../objects/article.mjs";
|
||||
import { Defunt } from "../objects/defunt.mjs";
|
||||
import { Bibliotheque } from "../objects/bibliotheque.mjs";
|
||||
import { Order } from "../objects/order.mjs";
|
||||
import { ThanatoEmployeeTypeKey,ThanatoSubcontractorTypeKey } from "../constants/thanatoTypeConstant";
|
||||
|
||||
var choose_folder = t('gestion', 'Choose work folder');
|
||||
|
||||
@ -116,9 +117,6 @@ document.body.addEventListener('click', e => {
|
||||
} else if("genererDefunt" == e.target.id) {
|
||||
genererDefunts();
|
||||
}
|
||||
else if("createDefaultOrder" === e.target.id){
|
||||
Order.createDefaultOrder(new DataTable('.tabledt'));
|
||||
}
|
||||
});
|
||||
|
||||
document.body.addEventListener('keydown', e => {
|
||||
@ -234,6 +232,7 @@ $('body').on('click', '.deleteItem', function () {
|
||||
if (modifier === "article") { Article.loadArticleDT(dt); }
|
||||
if (modifier === "defunt") { Defunt.loadDefuntDT(dt); }
|
||||
if (modifier === "bibliotheque") { Bibliotheque.loadBibliothequeDT(dt); }
|
||||
if (modifier === "orders") { Order.loadOrderDatatable(dt); }
|
||||
});
|
||||
|
||||
$('body').on('change', '.listClient,.listDevis', function () {
|
||||
|
||||
24
gestion/src/js/listener/orderListener.js
Normal file
24
gestion/src/js/listener/orderListener.js
Normal file
@ -0,0 +1,24 @@
|
||||
import DataTable from "datatables.net";
|
||||
import { Order } from "../objects/order.mjs";
|
||||
import { updateOrderDate } from "../modules/order/orderAjaxRequest.mjs";
|
||||
import { Thanatopracteur } from "../objects/thanatopracteur.mjs";
|
||||
import { ThanatoSubcontractorTypeKey } from "../constants/thanatoTypeConstant";
|
||||
|
||||
$('body').on('change', '.orderInputDate', function () {
|
||||
var dt = new DataTable('.tabledt');
|
||||
var id = $(this).data('id');
|
||||
var val = this.value;
|
||||
updateOrderDate(id,val);
|
||||
Order.loadOrderDatatable(dt);
|
||||
})
|
||||
|
||||
document.body.addEventListener('click', e => {
|
||||
if(e.target.className.includes("getThanatosSubcontractor")){
|
||||
Thanatopracteur.loadThanatosListedByTypeIntoSelect(e,ThanatoSubcontractorTypeKey);
|
||||
return;
|
||||
}
|
||||
if("createDefaultOrder"=== e.target.id){
|
||||
Order.createDefaultOrder(new DataTable('.tabledt'));
|
||||
return;
|
||||
}
|
||||
});
|
||||
@ -816,4 +816,5 @@ export function exportCareCertificate(defuntIdPayload) {
|
||||
showMessage(t('gestion', 'There is an error'));
|
||||
error(response);
|
||||
});
|
||||
|
||||
};
|
||||
26
gestion/src/js/modules/order/orderAjaxRequest.mjs
Normal file
26
gestion/src/js/modules/order/orderAjaxRequest.mjs
Normal file
@ -0,0 +1,26 @@
|
||||
import { showSuccess, showError } from "@nextcloud/dialogs";
|
||||
import { translate as t, translatePlural as n } from '@nextcloud/l10n'
|
||||
import { baseUrl } from "../mainFunction.mjs";
|
||||
|
||||
/**
|
||||
* Update order date
|
||||
* @param orderId
|
||||
* @param dateValue
|
||||
*/
|
||||
export function updateOrderDate(orderId,dateValue) {
|
||||
var payload = {
|
||||
orderDate: dateValue
|
||||
};
|
||||
|
||||
$.ajax({
|
||||
url: baseUrl + '/order/'+orderId+'/updateDate',
|
||||
type: 'PUT',
|
||||
async: false,
|
||||
contentType: 'application/json',
|
||||
data: JSON.stringify(payload)
|
||||
}).done(function (response, code) {
|
||||
showSuccess(t('gestion', 'Succès'));
|
||||
}).fail(function (response, code) {
|
||||
showError(t('gestion', 'Erreur dans la mise à jour de la date du commande'));
|
||||
});
|
||||
}
|
||||
@ -1,6 +1,5 @@
|
||||
import { showError } from "@nextcloud/dialogs";
|
||||
import { baseUrl, checkSelectPurJs, LoadDT, showDone } from "../modules/mainFunction.mjs";
|
||||
import { updateDB } from "../modules/ajaxRequest.mjs";
|
||||
import { OrderStatusOrdered,OrderStatusNew,OrderStatusCanceled } from "../constants/orderConstant.js";
|
||||
export class Order {
|
||||
|
||||
@ -13,10 +12,8 @@ export class Order {
|
||||
this.orderDate = ((myresp.order_date == null || myresp.order_date.length === 0) ? '-' : myresp.order_date);
|
||||
this.orderFullNumber = ((myresp.order_full_number == null || myresp.order_full_number.length === 0) ? '-' : myresp.order_full_number);
|
||||
this.defuntName = ((myresp.defunt_nom == null || myresp.defunt_nom.length === 0) ? '-' : myresp.defunt_nom);
|
||||
this.thanatoName = ((myresp.thanato_nom == null || myresp.thanato_nom.length === 0) ? '-' : myresp.thanato_nom);
|
||||
this.thanatoLastName = ((myresp.thanato_prenom == null || myresp.thanato_prenom.length === 0) ? '-' : myresp.thanato_prenom);
|
||||
this.clientName = ((myresp.client_nom == null || myresp.client_nom.length === 0) ? '-' : myresp.client_nom);
|
||||
this.clientLastName = ((myresp.client_prenom == null || myresp.client_prenom.length === 0) ? '-' : myresp.client_prenom);
|
||||
this.thanatoFullName = Order.getThanatoFullname(myresp);
|
||||
this.clientFullName = Order.getClientFullname(myresp);
|
||||
this.locationName = ((myresp.lieu_nom == null || myresp.lieu_nom.length === 0) ? '-' : myresp.lieu_nom);
|
||||
this.statusLabel = ((myresp.order_status_label == null || myresp.order_status_label.length === 0) ? '-' : myresp.order_status_label);
|
||||
this.defuntId = ((myresp.fk_defunt_id == null || myresp.fk_defunt_id.length === 0) ? '-' : myresp.fk_defunt_id);
|
||||
@ -24,6 +21,43 @@ export class Order {
|
||||
this.clientId = ((myresp.fk_client_id == null || myresp.fk_client_id.length === 0) ? '-' : myresp.fk_client_id);
|
||||
this.locationId = ((myresp.fk_lieu_id == null || myresp.fk_lieu_id.length === 0) ? '-' : myresp.fk_lieu_id);
|
||||
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);
|
||||
}
|
||||
|
||||
static getClientFullname(myresp){
|
||||
let clientPrenom = '';
|
||||
let clientNom = '';
|
||||
let clientFullName = '';
|
||||
if(myresp.client_nom != null && myresp.client_nom.length != 0){
|
||||
clientNom = myresp.client_nom;
|
||||
clientFullName += clientNom;
|
||||
}
|
||||
if(myresp.client_prenom != null && myresp.client_prenom.length != 0){
|
||||
clientPrenom = myresp.client_prenom;
|
||||
if(clientNom.length > 0 && clientPrenom.length > 0){
|
||||
clientFullName += ' '
|
||||
}
|
||||
clientFullName += clientPrenom;
|
||||
}
|
||||
return (clientFullName.length === 0) ? '-' : clientFullName;
|
||||
}
|
||||
|
||||
static getThanatoFullname(myresp){
|
||||
let thanatoPrenom = '';
|
||||
let thanatoNom = '';
|
||||
let thanatoFullName = '';
|
||||
if(myresp.thanato_nom != null && myresp.thanato_nom.length != 0){
|
||||
thanatoNom = myresp.thanato_nom;
|
||||
thanatoFullName += thanatoNom;
|
||||
}
|
||||
if(myresp.thanato_prenom != null && myresp.thanato_prenom.length != 0){
|
||||
thanatoPrenom = myresp.thanato_prenom;
|
||||
if(thanatoNom.length > 0 && thanatoPrenom.length > 0){
|
||||
thanatoFullName += ' '
|
||||
}
|
||||
thanatoFullName += thanatoPrenom;
|
||||
}
|
||||
return (thanatoFullName.length === 0) ? '-' : thanatoFullName;
|
||||
}
|
||||
|
||||
static getComandStatusCssSytle(orderStatusKey){
|
||||
@ -47,12 +81,13 @@ export class Order {
|
||||
let orderRow = [
|
||||
'<input class="orderToExport" data-id= '+ this.id + ' type="checkbox" name="orderToExport" value="' + this.id + '"/>',
|
||||
'<div>' + this.id + '</div>',
|
||||
'<input style="margin:0;padding:0;" class="inputDate" type="date" value=' + this.orderDate + ' data-table="orders" data-column="order_date" data-id="' + this.id + '"/>',
|
||||
'<input style="margin:0;padding:0;" class="orderInputDate" type="date" value=' + this.orderDate + ' data-id="' + this.id + '"/>',
|
||||
'<div>' + this.orderFullNumber + '</div>',
|
||||
'<div class="loadSelect_listdefunt" data-table="orders" data-column="fk_defunt_id" data-id="' + this.id + '" data-current="' + this.defuntId + '">'+ this.defuntName + '</div>',
|
||||
'<div class="loadSelect_listclient" data-table="orders" data-column="fk_client_id" data-id="' + this.id + '" data-current="' + this.clientId + '">'+ this.clientLastName + ' ' +this.clientName + '</div>',
|
||||
'<div class="loadSelect_listthanato" data-table="orders" data-column="fk_thanato_id" data-id="' + this.id + '" data-current="' + this.thanatoId + '">'+ this.thanatoLastName + ' ' + this.thanatoName + '</div>',
|
||||
'<div class="loadSelect_listclient" data-table="orders" data-column="fk_client_id" data-id="' + this.id + '" data-current="' + this.clientId + '">'+ this.clientFullName + '</div>',
|
||||
'<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 style="'+ Order.getComandStatusCssSytle(this.statusKey) +'">' + this.statusLabel + '</div>',
|
||||
'<div data-modifier="orders" data-id=' + this.id + ' data-table="orders" style="display:inline-block;margin-right:0px;" class="deleteItem icon-delete"></div>'
|
||||
];
|
||||
|
||||
@ -108,6 +108,20 @@ export class Thanatopracteur {
|
||||
oReq.send();
|
||||
}
|
||||
|
||||
static getThanatoByType(thanatoType,callback){
|
||||
var oReq = new XMLHttpRequest();
|
||||
oReq.open('PROPFIND', baseUrl + '/thanatos/type/'+thanatoType, 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 getUsersNotLinkedToThanato(callback){
|
||||
var oReq = new XMLHttpRequest();
|
||||
oReq.open('PROPFIND', baseUrl + '/user/getUsersNotLinkedToThanato', true);
|
||||
@ -265,4 +279,50 @@ export class Thanatopracteur {
|
||||
e.target.appendChild(selectElement);
|
||||
});
|
||||
}
|
||||
|
||||
static loadThanatosListedByTypeIntoSelect(e,thanatoType){
|
||||
Thanatopracteur.getThanatoByType(thanatoType,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 && el.target.value != null){
|
||||
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 = null;
|
||||
option.text = t('gestion', 'Cancel');
|
||||
selectElement.appendChild(option);
|
||||
|
||||
JSON.parse(response).forEach(myresp => {
|
||||
var txt = document.createElement("textarea");
|
||||
txt.innerHTML = myresp.nom + ' ' + myresp.prenom;
|
||||
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);
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -5,6 +5,7 @@ import "../css/mycss.css";
|
||||
import DataTable from "datatables.net";
|
||||
import { globalConfiguration, optionDatatable } from "./modules/mainFunction.mjs";
|
||||
import "./listener/main_listener";
|
||||
import "./listener/orderListener";
|
||||
import { Order } from "./objects/order.mjs";
|
||||
window.addEventListener("DOMContentLoaded", function () {
|
||||
globalConfiguration();
|
||||
|
||||
@ -20,8 +20,9 @@
|
||||
<th><?php p($l->t('Numéro de commande'));?></th>
|
||||
<th><?php p($l->t('Défunt'));?></th>
|
||||
<th><?php p($l->t('Client'));?></th>
|
||||
<th><?php p($l->t('Type de soins'));?></th>
|
||||
<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('Etat'));?></th>
|
||||
<th><?php p($l->t('Actions'));?></th>
|
||||
</tr>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user