From c252d648b80aea5ba132ed442054823fc813d505 Mon Sep 17 00:00:00 2001 From: jfgiraud Date: Sun, 5 Jul 2026 18:21:13 +0000 Subject: [PATCH] formulaire ok pour tout sauf btn modifier --- js/ordreGF.js | 27 ++++++ php/api_enregistrer_detail.php | 22 +++++ php/ordreGF.php | 147 +++++++++++++++++++++++++++------ 3 files changed, 173 insertions(+), 23 deletions(-) create mode 100644 php/api_enregistrer_detail.php diff --git a/js/ordreGF.js b/js/ordreGF.js index d3b1b35..0e0a9f2 100644 --- a/js/ordreGF.js +++ b/js/ordreGF.js @@ -45,3 +45,30 @@ document.addEventListener("DOMContentLoaded", () => { } }); }); + +// Dans js/ordreGF.js +window.ouvrirModalCreation = function (masterId) { + // Optionnel : stocker l'ID dans un champ caché de votre formulaire + let inputHidden = document.getElementById("Id_entete_hidden"); + if (inputHidden) inputHidden.value = masterId; + + document.getElementById("modalCreerOrdre").showModal(); +}; + +document + .getElementById("formCreerDetail") + .addEventListener("submit", async (e) => { + e.preventDefault(); + const formData = new FormData(e.target); + + const response = await fetch("/php/api_enregistrer_detail.php", { + method: "POST", + body: formData, + }); + + if ((await response.json()).success) { + location.reload(); + } else { + alert("Erreur lors de l'enregistrement du détail"); + } + }); diff --git a/php/api_enregistrer_detail.php b/php/api_enregistrer_detail.php new file mode 100644 index 0000000..7ede1ec --- /dev/null +++ b/php/api_enregistrer_detail.php @@ -0,0 +1,22 @@ +getConnection(); + +$stmt = $db->prepare("INSERT INTO ordreGF_pied + (Id_entete, Date_op, Quantite, Prix_brut, Frais_brocker, Frais_etat, Frais_autre, Ordre, Type, Etat) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); + +$success = $stmt->execute([ + $_POST['Id_entete'], + $_POST['Date_op'], + $_POST['Quantite'], + $_POST['Prix_brut'], + $_POST['Frais_brocker'], + $_POST['Frais_etat'], + $_POST['Frais_autre'], + $_POST['Ordre'], + $_POST['Type'], + $_POST['Etat'] +]); + +echo json_encode(['success' => $success]); diff --git a/php/ordreGF.php b/php/ordreGF.php index d2a48eb..33c42db 100644 --- a/php/ordreGF.php +++ b/php/ordreGF.php @@ -9,6 +9,11 @@ if (empty($_SESSION['user_id'])) { exit; } +ini_set('display_errors', 1); +ini_set('display_startup_errors', 1); +error_reporting(E_ALL); + + $pageStylesheets = ['/css/ordreGF.css']; $bodyClass = 'ordregf-page'; @@ -55,18 +60,14 @@ require_once __DIR__ . '/header.php'; - - @@ -76,12 +77,18 @@ require_once __DIR__ . '/header.php'; - - + + - + @@ -95,7 +102,7 @@ require_once __DIR__ . '/header.php'; $qte = (int)($detail['Quantite'] ?? 0); $prix = (float)($detail['Prix_brut'] ?? 0); $frais = (float)($detail['Frais_brocker'] ?? 0) + (float)($detail['Frais_etat'] ?? 0) + (float)($detail['Frais_autre'] ?? 0); - $prixNet = $prix + ($qte != 0 ? ($frais / $qte) : 0); + $prixNet = $prix + $frais; $date = !empty($detail['Date_op']) ? date('d/m/Y', strtotime($detail['Date_op'])) : '--/--/----'; $ordre_type = strtolower($detail['Ordre'] ?? ''); @@ -107,21 +114,21 @@ require_once __DIR__ . '/header.php'; if ($ordre_type === 'achat') { $totalQ += $qte; $engaBrut += $qte * $prix; - $engaNet += ($qte * $prix) + $frais; + $engaNet += $qte * $prixNet; } elseif ($ordre_type === 'vente') { $totalQ -= $qte; $engaBrut -= $qte * $prix; - $engaNet -= ($qte * $prix) + $frais; + $engaNet -= $qte * $prixNet; } } elseif ($type_op === 'short') { if ($ordre_type === 'achat') { $totalQ -= $qte; $engaBrut -= $qte * $prix; - $engaNet -= ($qte * $prix) + $frais; + $engaNet -= $qte * $prixNet; } elseif ($ordre_type === 'vente') { $totalQ += $qte; $engaBrut += $qte * $prix; - $engaNet += ($qte * $prix) + $frais; + $engaNet += $qte * $prixNet; } } } @@ -132,8 +139,8 @@ require_once __DIR__ . '/header.php'; - - + + @@ -143,14 +150,57 @@ require_once __DIR__ . '/header.php'; - - - - - - - - + 0); + $plusvalue = 0.0000; + if ($isSold) { + foreach ($details as $detail) { + $qte = (int)$detail['Quantite']; + $prixNet = (float)$detail['Prix_brut'] + (float)$detail['Frais_brocker'] + (float)$detail['Frais_etat'] + (float)$detail['Frais_autre']; + $eNet = round($qte * $prixNet, 4); + $oType = strtolower($detail['Ordre']); + $tOp = strtolower($detail['Type']); + + // Logique plus claire + $signe = 0; + if ($tOp === 'long') { + $signe = ($oType === 'vente') ? 1 : -1; + } else { // short + $signe = ($oType === 'achat') ? 1 : -1; + } + + $plusvalue += ($eNet * $signe); + } + + // On arrondit le résultat final avant comparaison et insertion + $plusvalue = round($plusvalue, 4); + + if (abs((float)$ordre['PlusValue'] - $plusvalue) > 0.0001) { + $connection->prepare("UPDATE ordreGF SET PlusValue = ? WHERE ID = ?")->execute([$plusvalue, $ordre['ID']]); + $connection->prepare("UPDATE ordreGF_pied SET Etat = 'soldé' WHERE Id_entete = ? AND Etat != 'soldé'")->execute([$ordre['ID']]); + } + } + ?> + + + + + + + + + + + + + + + + +
Prix Brut Frais Prix NetEng. BrutEng. NetEngagement BrutEngagement Net Ordre Type EtatActions + +
TOTAL :
Plus value : + +
TOTAL :
@@ -162,6 +212,7 @@ require_once __DIR__ . '/header.php'; +

Créer un nouvel ordre

@@ -189,6 +240,56 @@ require_once __DIR__ . '/header.php';
+ +
+ +

Ajouter un mouvement

+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ + + +
+
+ + +
+
+ + +
+
+ + +
+ +
+
+ \ No newline at end of file