subtotaltitle/ajax/mass_delete.php

80 lines
No EOL
2.4 KiB
PHP
Executable file

<?php
define('NOTOKENRENEWAL', 1);
require '../../../main.inc.php';
require_once __DIR__.'/../lib/subtotaltitle.lib.php';
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
$line_ids_json = GETPOST('line_ids', 'alpha');
$facture_id = GETPOST('facture_id', 'int');
$line_ids = json_decode($line_ids_json, true);
if (!is_array($line_ids) || count($line_ids) == 0 || !$facture_id) {
echo json_encode(['success' => false, 'error' => 'Missing parameters']);
exit;
}
// Prüfe Rechnungsstatus
$facture = new Facture($db);
$facture->fetch($facture_id);
if ($facture->statut != Facture::STATUS_DRAFT) {
echo json_encode(['success' => false, 'error' => 'Rechnung ist nicht im Entwurf']);
exit;
}
subtotaltitle_debug_log('🗑️ Massenlöschung: ' . count($line_ids) . ' Zeilen');
$db->begin();
$deleted = 0;
foreach ($line_ids as $line_id) {
$line_id = (int)$line_id;
// Aus facturedet löschen
$sql = "DELETE FROM ".MAIN_DB_PREFIX."facturedet WHERE rowid = ".$line_id;
if ($db->query($sql)) {
$deleted++;
subtotaltitle_debug_log('✅ Zeile gelöscht: ' . $line_id);
}
// Aus Manager-Tabelle löschen
$sql_manager = "DELETE FROM ".MAIN_DB_PREFIX."facture_lines_manager WHERE fk_facturedet = ".$line_id;
$db->query($sql_manager);
}
// Summen neu berechnen
$facture->update_price(1);
// line_order neu durchnummerieren
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."facture_lines_manager";
$sql .= " WHERE fk_facture = ".(int)$facture_id;
$sql .= " ORDER BY line_order";
$resql = $db->query($sql);
$new_order = 1;
while ($obj = $db->fetch_object($resql)) {
$sql_upd = "UPDATE ".MAIN_DB_PREFIX."facture_lines_manager SET line_order = ".$new_order." WHERE rowid = ".(int)$obj->rowid;
$db->query($sql_upd);
$new_order++;
}
// rang synchronisieren
$sql = "SELECT fk_facturedet FROM ".MAIN_DB_PREFIX."facture_lines_manager";
$sql .= " WHERE fk_facture = ".(int)$facture_id;
$sql .= " AND line_type = 'product'";
$sql .= " ORDER BY line_order";
$resql = $db->query($sql);
$rang = 1;
while ($obj = $db->fetch_object($resql)) {
$sql_upd = "UPDATE ".MAIN_DB_PREFIX."facturedet SET rang = ".$rang." WHERE rowid = ".(int)$obj->fk_facturedet;
$db->query($sql_upd);
$rang++;
}
$db->commit();
subtotaltitle_debug_log('🗑️ Massenlöschung abgeschlossen: ' . $deleted . ' von ' . count($line_ids));
echo json_encode(['success' => true, 'deleted' => $deleted]);