Vamos a supponer que la tabla ahora es mas o menos así:
Código MySQL:
Ver original KEY `xcodCli_idx` (`cod_cli`), KEY `xcod_user_idx` (`cod_user`),
Suponiendo que todo se hace en la misma tabla, y partiendo de la base que ID_COMPROBANTE se ingresa manualmente (programáticamente), el SP que ingrese un registro debería ser algo como:
Código SQL:
Ver originalCREATE PROCEDURE insertarnuevo(
IN Vid_comprobante INT,
IN Vcod_cli INT,
IN Vtipo VARCHAR(45),
IN Vserie INT,
IN Vruc_cli VARCHAR(11),
IN Vsub_total DECIMAL(14, 3),
IN Vigv DECIMAL(14, 3),
IN Vtotal DECIMAL(14, 3),
IN Vfec_comp DATE,
IN Vest_compro VARCHAR(1),
IN Vcod_user INT)
BEGIN
DECLARE Vcorrelativo INT UNSIGNED;
SET Vcorrelativo = 0;
IF (SELECT serie FROM comprobante WHERE serie = Vserie) > 0 THEN
SELECT MAX(correlativo)
FROM comprobante
WHERE serie = Vserie
INTO Vcorrelativo;
SET Vcorrelativo = Vcorrelativo + 1;
ELSE
IF Vserie = 0 THEN
SELECT MAX(serie)
FROM comprobante
INTO Vserie;
SET Vserie = Vserie + 1;
END IF;
INSERT INTO comprobante
VALUES(IN Vid_comprobante, Vcod_cli, Vtipo, Vserie, Vcorrelativo, Vruc_cli, Vsub_total, Vigv, Vtotal, Vfec_comp,
Vest_compro, Vcod_user);
SELECT CONCAT(LPAD(Vserie, 6, '0'), '-', LPAD(Vcorrelativo, 6, '0')) serial;
END
La idea es, además, que te devuelva el serial ya formateado como '000000-000000'.