80 lines
No EOL
2.4 KiB
PHP
Executable file
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]); |