Actualizar contabilidad.html
This commit is contained in:
@@ -516,21 +516,109 @@
|
|||||||
loadBudgets();
|
loadBudgets();
|
||||||
}
|
}
|
||||||
|
|
||||||
function openConvertModal(id) {
|
// ==========================================
|
||||||
|
// LÓGICA DE CONVERSIÓN A SERVICIO (MODAL)
|
||||||
|
// ==========================================
|
||||||
|
async function openConvertModal(id) {
|
||||||
document.getElementById('convBudgetId').value = id;
|
document.getElementById('convBudgetId').value = id;
|
||||||
|
|
||||||
|
// 1. Limpiamos y cargamos los gremios directamente de la base de datos
|
||||||
|
const gSel = document.getElementById('convGuild');
|
||||||
|
gSel.innerHTML = '<option value="">Cargando gremios...</option>';
|
||||||
|
|
||||||
|
try {
|
||||||
|
const res = await fetch(`${API_URL}/guilds`, { headers: { "Authorization": `Bearer ${localStorage.getItem("token")}` } });
|
||||||
|
const data = await res.json();
|
||||||
|
|
||||||
|
gSel.innerHTML = '<option value="">Selecciona Gremio...</option>';
|
||||||
|
if (data.ok && data.guilds) {
|
||||||
|
data.guilds.forEach(g => {
|
||||||
|
gSel.innerHTML += `<option value="${g.id}">${g.name}</option>`;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
gSel.innerHTML = '<option value="">Error al cargar</option>';
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. Reseteamos el resto del formulario
|
||||||
|
document.getElementById('convOperator').innerHTML = '<option value="AUTO">⚡ MANDAR A LA BOLSA (AUTO)</option>';
|
||||||
|
document.getElementById('convDateContainer').classList.add('hidden');
|
||||||
|
document.getElementById('convDate').value = "";
|
||||||
|
document.getElementById('convTime').value = "";
|
||||||
|
|
||||||
document.getElementById('convertModal').classList.remove('hidden');
|
document.getElementById('convertModal').classList.remove('hidden');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function loadOpsForGuildConv(guildId) {
|
||||||
|
const sel = document.getElementById('convOperator');
|
||||||
|
const dateCont = document.getElementById('convDateContainer');
|
||||||
|
|
||||||
|
sel.innerHTML = '<option value="AUTO">⚡ MANDAR A LA BOLSA (AUTO)</option>';
|
||||||
|
// Ocultamos la fecha si cambiamos de gremio (vuelve a Auto por defecto)
|
||||||
|
dateCont.classList.add('hidden');
|
||||||
|
document.getElementById('convDate').value = "";
|
||||||
|
document.getElementById('convTime').value = "";
|
||||||
|
|
||||||
|
if(!guildId) return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
const res = await fetch(`${API_URL}/operators?guild_id=${guildId}`, { headers: { "Authorization": `Bearer ${localStorage.getItem("token")}` } });
|
||||||
|
const data = await res.json();
|
||||||
|
if(data.ok && data.operators) {
|
||||||
|
data.operators.forEach(op => {
|
||||||
|
sel.innerHTML += `<option value="${op.id}">👤 ${op.full_name}</option>`;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch(e) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleOperatorChange(val) {
|
||||||
|
const dateCont = document.getElementById('convDateContainer');
|
||||||
|
if(val === 'AUTO') {
|
||||||
|
dateCont.classList.add('hidden');
|
||||||
|
} else {
|
||||||
|
// Si elige un técnico concreto, mostramos los campos de fecha
|
||||||
|
dateCont.classList.remove('hidden');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async function confirmConversion() {
|
async function confirmConversion() {
|
||||||
const id = document.getElementById('convBudgetId').value;
|
const id = document.getElementById('convBudgetId').value;
|
||||||
|
const guild_id = document.getElementById('convGuild').value;
|
||||||
|
const assigned_to = document.getElementById('convOperator').value;
|
||||||
|
|
||||||
const date = document.getElementById('convDate').value;
|
const date = document.getElementById('convDate').value;
|
||||||
const time = document.getElementById('convTime').value;
|
const time = document.getElementById('convTime').value;
|
||||||
if(!date || !time) return showToast("Debes elegir fecha y hora.");
|
|
||||||
|
|
||||||
await fetch(`${API_URL}/budgets/${id}/convert`, { method: 'POST', headers: { "Content-Type": "application/json", "Authorization": `Bearer ${localStorage.getItem("token")}` }, body: JSON.stringify({date, time}) });
|
if (!guild_id) return showToast("⚠️ El Gremio es obligatorio.");
|
||||||
|
|
||||||
|
const use_automation = (assigned_to === 'AUTO');
|
||||||
|
|
||||||
|
if (!use_automation && (!date || !time)) {
|
||||||
|
return showToast("⚠️ Si asignas a un técnico, debes fijar Fecha y Hora.");
|
||||||
|
}
|
||||||
|
|
||||||
|
const payload = {
|
||||||
|
guild_id: guild_id,
|
||||||
|
assigned_to: use_automation ? null : assigned_to,
|
||||||
|
use_automation: use_automation,
|
||||||
|
date: use_automation ? null : date,
|
||||||
|
time: use_automation ? null : time
|
||||||
|
};
|
||||||
|
|
||||||
|
try {
|
||||||
|
await fetch(`${API_URL}/budgets/${id}/convert`, {
|
||||||
|
method: 'POST',
|
||||||
|
headers: { "Content-Type": "application/json", "Authorization": `Bearer ${localStorage.getItem("token")}` },
|
||||||
|
body: JSON.stringify(payload)
|
||||||
|
});
|
||||||
|
|
||||||
document.getElementById('convertModal').classList.add('hidden');
|
document.getElementById('convertModal').classList.add('hidden');
|
||||||
showToast("¡Convertido a Servicio con éxito!");
|
showToast(use_automation ? "✅ ¡Enviado a la bolsa con éxito!" : "✅ ¡Servicio agendado con éxito!");
|
||||||
loadBudgets();
|
loadBudgets();
|
||||||
|
} catch(e) {
|
||||||
|
showToast("❌ Error al convertir el presupuesto.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function openBudgetModal() {
|
function openBudgetModal() {
|
||||||
|
|||||||
Reference in New Issue
Block a user