-- Ejemplos de uso – Cuentas por Pagar Guatemala
-- Ejecuta después de cargar schema y seed. Ajusta ids según tus datos.

-- 1) Alta de proveedor local de servicios (retiene ISR)
INSERT INTO proveedores (cliente_id, nombre, nit, correo_electronico, tipo_proveedor, dias_credito, es_agente_retencion_iva, es_afecto_ret_isr, esta_activo)
VALUES (1, 'PROVEEDOR LOCAL SERVICIOS, S.A.', '323121-6', 'proveedor@dominio.gt', 'servicios', 15, 0, 1, 1);
SET @prov := LAST_INSERT_ID();

-- 2) Crear factura de servicios con IVA 12%
INSERT INTO facturas (
  cliente_id, proveedor_id, numero_documento, serie, tipo_documento,
  fecha_emision, fecha_vencimiento, moneda, subtotal, iva, isr, total, saldo, estado, observaciones, esta_activo
) VALUES (
  1, @prov, '5469254', '5BD56G5', 'factura',
  DATE('2024-09-02'), DATE('2024-10-10'), 'GTQ',
  4464.29, 535.71, 223.21, 5000.00, 5000.00, 'pendiente', 'Servicios por arrendamiento de sistemas', 1
);
SET @fac := LAST_INSERT_ID();

-- Registrar impuestos a nivel factura (ISR retenido estimado)
INSERT INTO facturas_impuestos (factura_id, impuesto_id, base_imponible, porcentaje, monto)
SELECT @fac, ci.id, 4464.29, 0.05, 223.21 FROM cat_impuestos ci WHERE ci.codigo='RET_ISR_5';

-- 3) Pago con cheque y retención aplicada (aplicaciones)
-- Pago (encabezado). proveedor_id y referencia del cheque
INSERT INTO pagos (factura_id, proveedor_id, banco_id, metodo_pago, referencia, monto, fecha_pago, moneda, esta_activo)
VALUES (NULL, @prov, NULL, 'cheque', 'CH-250', 5000.00, NOW(), 'GTQ', 1);
SET @pago := LAST_INSERT_ID();

-- Aplicar retención ISR como abono
INSERT INTO retenciones (cliente_id, proveedor_id, factura_id, impuesto_id, porcentaje, base_imponible, monto_retenido, numero_doc, fecha_emision)
SELECT 1, @prov, @fac, ci.id, 0.05, 4464.29, 223.21, 'RET-195252', DATE('2024-10-03')
FROM cat_impuestos ci WHERE ci.codigo='RET_ISR_5';
SET @ret := LAST_INSERT_ID();

INSERT INTO aplicaciones (cliente_id, proveedor_id, factura_id, origen_tipo, origen_id, monto_aplicado, fecha_aplicacion, comentario)
VALUES
 (1, @prov, @fac, 'retencion', @ret, 223.21, NOW(), 'Retención ISR 5%'),
 (1, @prov, @fac, 'pago',      @pago, 4776.79, NOW(), 'Pago cheque 250');

-- 4) Consultar saldo calculado de la factura
SELECT * FROM v_facturas_saldos WHERE id = @fac;

-- 5) Estado de cuenta del proveedor
SELECT * FROM v_aging_proveedores WHERE proveedor_id = @prov;

-- 6) Ejemplo de combustible (IDP)
-- Item: 3 galones Súper, IDP 4.70/gal = 14.10, IVA 12% sobre base
-- (El IDP se modela como impuesto por unidad en cat_impuestos; puedes calcularlo en aplicación y guardar el total en detalles_factura)

